python - Geopandas 叠加交叉点给出不正确的结果
问题描述
我想使用 gpd.overlay 相交两个地理数据框(多边形)。当我在 QGIS 中相交时,生成的 shapefile 是正确的(我将红色椭圆和黄色 shapefile 相交,结果在下图中为绿色)。
当我使用 geopandas 相交时,生成的地理数据框是空的。这是代码:
import geopandas as gpd
gdf1 = gpd.read_file('... /gdf1.shp')
gdf2 = gpd.read_file('... /gdf2.shp')
gdf_inter = gpd.overlay(gdf1, gdf2, how='intersection')
> len(gdf_inter)
> 0
链接到 shapefile: https ://www.dropbox.com/s/6e7frbev71phkpy/SHP_TEST.7z?dl=0
图片:
我想这可能与投影有关?想法?提前致谢,
解决方案
谢谢你们俩。两个文件中的 crs 相同。我将 keep_geom_type 参数设置为 False,从而解决了问题(返回了一个由 Linestring 和多边形组成的 Geometrycollection)。
我以前没有尝试过,因为网站的信息令人困惑:“在默认设置中,叠加仅返回与 df1(左侧)具有相同几何类型的几何,其中 Polygon 和 MultiPolygon 被视为同一类型(其他类型同样地)。[...]”。我正在与两个多边形相交,但没有收到一个多边形作为回报。
无论如何,现在已经解决了。太感谢了。
推荐阅读
- android - 如何正确解析 Firestore API JSON?
- c# - c#如何在后台为数组创建Array抽象类的实例?
- python - 如何修复:KeyError: '__file__' in sitecustomize.py (anaconda3) when using run file (F5)
- angular - 在ngrx中有很多动作是正常的吗?
- reactjs - 如何在 React 中检索存储在 Firebase 存储中的 txt 文件中的数据?
- c - scanf 和 getchar 一起读取字符串
- spring-mvc - 如何将 MultipartFile( image ) 转换为 DataSource 对象
- c# - 在来自不同类的图像上绘制矩形
- datetime - 我可以在 iso8601 日期时间中定义确切的工作日来安排工作吗?
- kotlin - 在 IntelliJ IDEA 中导入 kotlinx 是不可能的