在两个不同的数据帧上执行匀称“差异”功能的最快方法?

问题描述

我有两个地理数据框:一个是包含城市几何图形的多边形,另一个包含城市中的所有建筑物。我想从城市的总面积中减去所有的建筑足迹以获得剩余的面积。为此,我对每个建筑几何体使用 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 (将#修改为@)