Python 如何在shapefile列表中检查一个点是否位于内部,并且它是否与给定字段相同?
我正在绘制地址点并检查它们是否在一个大的shapefile中。 但是,现在我还要检查它们是否属于市区类型。此信息以功能列表的形式提供,其中一列为TYPE。如果我想要的点是城市还是非城市,我通过(城市=真) 我的共存点代码:Python 如何在shapefile列表中检查一个点是否位于内部,并且它是否与给定字段相同?,python,list,gdal,shapefile,osgeo,Python,List,Gdal,Shapefile,Osgeo,我正在绘制地址点并检查它们是否在一个大的shapefile中。 但是,现在我还要检查它们是否属于市区类型。此信息以功能列表的形式提供,其中一列为TYPE。如果我想要的点是城市还是非城市,我通过(城市=真) 我的共存点代码: def get_random_point_in_polygon(region, urban=None): while True: address = ogr.Geometry(ogr.wkbPoint) address.AddP
def get_random_point_in_polygon(region, urban=None):
while True:
address = ogr.Geometry(ogr.wkbPoint)
address.AddPoint(random.uniform(region.get_region().geometry().GetEnvelope()[0],
region.get_region().geometry().GetEnvelope()[1]),
random.uniform(region.get_region().geometry().GetEnvelope()[2],
region.get_region().geometry().GetEnvelope()[3]))
if region.get_region().geometry().Contains(address) and XXXXXXXXXX:
return address
区域是一个大的形状文件
现在我还列出了其他52项功能,它们都在该区域内。
它们有一个包含城市或农村信息的字段
我想用一个代码来实现我的XXXXXX,代码上写着:“如果地址在列表中的任何功能中,那么字段=URBAN”
有什么想法吗?
比如:
any(x in a for x in b)
但是对于shapefile…我想我找到了一个解决方案,尽管相当麻烦。 shapeInput.urban是一个要素列表 但是,请注意,此代码非常昂贵。鉴于城市地区比农村地区小得多,这确实需要很长时间 好吧,它起作用了
def get_random_point_in_polygon(region, urban=True):
while True:
address = ogr.Geometry(ogr.wkbPoint)
address.AddPoint(random.uniform(region.get_region().geometry().GetEnvelope()[0],
region.get_region().geometry().GetEnvelope()[1]),
random.uniform(region.get_region().geometry().GetEnvelope()[2],
region.get_region().geometry().GetEnvelope()[3]))
if region.get_region().geometry().Contains(address):
if urban is True:
for item in ShapesInput.urban:
if item.geometry().Contains(address):
return address
else:
return address
啊!请找个人!