微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有两个地理数据框:一个是包含城市几何图形的多边形,另一个包含城市中的所有建筑物。我想从城市的总面积中减去所有的建筑足迹以获得剩余的面积。为此,我对每个建筑几何体使用 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 举报,一经查实,本站将立刻删除。