我有一个 zid 的 geoDataFrame 相交,但是,当我逐一测试时,它们不相交。为什么?
我尝试了答案1和2的解决方案,但结果相同。
区域 514、519 有共同边界
admzones = admzones[['zid', 'geometry']]
together = geopandas.sjoin(admzones, admzones.set_index('zid'))
together.loc[together.zid != together.index_right]
# zid|geometry|index_right
# 519|POLIGON()|514
#...
...
geo1 = admzones[admzones['zid']==519]
geo2 = admzones[admzones['zid']==514]
geo1['interssects'] = geo1.intersects(geo2)
geo1['interssects']
#False
geo1['intersection'] = geo1.intersection(geo2)
geo1['intersection']
#None
您没有分享示例,但IIUC,您需要关闭index-alignment(
align=False
):
geo_519 = admzones.loc[admzones["zid"]==519]
geo_514 = admzones.loc[admzones["zid"]==514]
geo_519.intersects(geo_514, align=False).any() # True
您的代码很可能显示
UserWarning
这样的:
:两个GeoSeries的索引不同。UserWarning
intersects
和 intersection
文档:
使用的输入:
import geopandas as gpd
from shapely.geometry import Polygon, Point
admzones = gpd.GeoDataFrame(
{"zid": [514, 519], "geometry":
[Polygon([(0.25, 0.1), (0.75, 1), (1, 0.3)]),
Point(0.5, 0.5).buffer(0.2)]})