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

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

如何解决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 举报,一经查实,本站将立刻删除。