使用GDAL提取TIFF像素值时遇Polygon无value属性错误
解决Polygon对象无法添加value属性的问题
你遇到的AttributeError是因为所用的Polygon类(比如shapely库中的实现)没有预定义value属性,且这类类通常限制了动态添加属性的能力,所以直接给polygon.value赋值会报错。
下面是几种可行的解决方式:
用字典关联多边形与值
这是最简单直接的方式,不需要修改类结构:# 初始化字典存储多边形和对应值的映射 polygon_value_map = {} # 创建多边形 polygon = Polygon([(x_min, y_min), (x_min, y_max), (x_max, y_max), (x_max, y_min)]) # 将多边形和值关联存入字典 polygon_value_map[polygon] = value # 后续访问值时 target_value = polygon_value_map[polygon]自定义继承Polygon的类
如果需要频繁给多边形绑定属性,可以自定义一个带value属性的子类:from shapely.geometry import Polygon class ValuePolygon(Polygon): def __init__(self, coords, value=None): super().__init__(coords) self.value = value # 使用自定义类创建带值的多边形 polygon = ValuePolygon([(x_min, y_min), (x_min, y_max), (x_max, y_max), (x_max, y_min)], value=value) # 直接访问value属性 print(polygon.value)强制添加属性(不推荐)
可以通过setattr强制给对象添加属性,但这种方式可能破坏类的原有结构,引发未知问题,仅作临时应急用:polygon = Polygon([(x_min, y_min), (x_min, y_max), (x_max, y_max), (x_max, y_min)]) setattr(polygon, 'value', value) # 访问属性 print(polygon.value)
内容的提问来源于stack exchange,提问作者ro_55
相关产品推荐
相关产品推荐

