我正在绘制地址点并检查它们是否在大型shapefile中。 但是,现在我还要检查它们是否属于URBAN类型。此信息来自其中一列为TYPE的功能列表。如果我想要的是城市与否(城市=真),我会通过
我的代码点:
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
Region是一个大型shapefile 现在我还列出了其他52个功能,这些功能都在区域内。 它们有一个包含URBAN或RURAL信息的FIELD。
我希望使用以下代码来实现我的XXXXXX:'如果地址位于列表中的任何功能内,则为FIELD = URBAN'
有什么想法吗? 类似的东西:
any(x in a for x in b)
但是对于shapefile ...
答案 0 :(得分:0)
我认为我找到了一个解决方案,虽然相当繁琐。 ShapesInput.urban是一个功能列表
但请注意,此代码的成本非常高。鉴于城市地区比农村地区小得多,确实需要很长时间。
嗯,它有效......
SELECT link, description, resources, keyword
FROM _db
INNER JOIN keywords
ON _db.id=keywords.db_id
WHERE keyword.value IN (" . atomize($q) . ")