如何解决在两个不同的数据帧上执行匀称“差异”功能的最快方法?
我有两个地理数据框:一个是包含城市几何图形的多边形,另一个包含城市中的所有建筑物。我想从城市的总面积中减去所有的建筑足迹以获得剩余的面积。为此,我对每个建筑几何体使用 for 循环,并从多面体中减去建筑面积。我得到了正确的结果,但模拟时间太长(因为存在大约 17000 座建筑物)。我的问题是有没有更快的方法来执行这个操作?
buildings = gi_osm_geo.overpass_result_to_geodataframe(
gi_osm_geo.query_overpass_types_in_area(
region_or_tags=area_tags,search_tags=[("building","")],link_by_or=True,relations=True,ways=True,nodes=False,)
)
in_crs = buildings.crs
if in_crs is None:
in_crs = "epsg:4326" # If no crs is set,assume epsg:4326
buildings = buildings.set_crs(in_crs)
utm = buildings.estimate_utm_crs()
buildings = buildings.to_crs(utm)
buildings["area"] = buildings["geometry"].area
buffered_geo = buildings.geometry.buffer(buffer_in_m)
buildings = buildings[buildings["geometry"].is_valid]
build = buildings.head(100)
merged = buffered_geo.cascaded_union
for building in buildings["geometry"]:
merged = merged.difference(building)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。