Geopandas Polygon 和 Shapely LineString 之间的交点

问题描述

假设我们有以下方形作为 Geopandas DataFrame

import geopandas as gpd
from shapely.geometry import Linestring,LinearRing,Point,polygon

polygon_geom = polygon(zip([0,1,0],[0,1]))
crs = {'init': 'epsg:4326'}
polygon = gpd.GeoDataFrame(index=[0],crs=crs,geometry=[polygon_geom])

注意:我使用的多边形是导入到的形状文件 Geopandas,为了举例,我创建了一个 geopanda 多边形的数据框。

我有一个使用 Shapely 的 Linestring

Point1 = Point(0,1)
Point2 = Point(2,0)
line = Linestring([Point1,Point2])

我需要找到 polygonline间的交点。预期结果为 (1,0)(1,0.5)

两点

我尝试过交叉方法,但没有成功。我非常感谢您的支持提示

解决方法

在您的特定情况下,您可以获得多边形的几何形状:-

poly = polygon.geometry.values[0]

这会检查 linepoly 是否相交:-

line.intersects(poly)

它返回 True。 所以我们继续:-

line.intersection(poly).xy

并得到

(array('d',[0.0,1.0]),array('d',[1.0,0.5]))

结果。