Geopandas:有没有办法根据其他多边形划分多边形按市政边界划分土地利用多边形

问题描述

我正在尝试确定一个国家/地区(大约 8300)的所有城市的土地使用百分比(城市建成环境、交通和城市绿化)。我已经准备好了所有的多边形图层,但是当土地使用多边形延伸到两个或多个城市时,我发现了问题。我的第一种方法是通过空间连接将市政代码分配给每个土地利用多边形,获取每个多边形的面积并将具有相同市政代码的所有多边形的面积相加。其伪代码如下。

import geopandas as gpd

municipalities = gpd.read_file("municipalities.gpkg")
landuse = gpd.read_file("landuse.gpkg")

landusewcode = gpd.sjoin(landuse,municipalities[["municode","geometry"]],how = "left").drop("right_index",axis = 1).reset.index()

landusewcode["area"] = landusewcode.area

landusedis = landusewcode[["municode","area"]].groupby("municode").sum()

municipalities = municipalities.merge(landusedis,on = "municode",how = "left").reset_index()

这样做的问题是它假设所有土地利用多边形都包含在一个自治市中,这可能不正确(例如,在同一个大都市区,两个自治市可能共享一个公园或一个机场。因此,我需要一种根据市政边界划分每个多边形的方法。我想到了以下解决方案,但恐怕对我的计算机来说太长且困难。

clippedpols = gpd.GeoDataFrame()
for i in range(len(municipalities)):
    muni = municipalities.loc[i,:]
    poly = gpd.clip(landuses,muni)
    clippedpols = pd.concat(clippedpols,poly)

然后按上述进行。 有没有更有效的方法呢? 非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)