问题描述
假设我们有以下方形作为 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 多边形的数据框。
Point1 = Point(0,1)
Point2 = Point(2,0)
line = Linestring([Point1,Point2])
我需要找到 polygon
和 line
之间的交点。预期结果为 (1,0)
和 (1,0.5)
解决方法
在您的特定情况下,您可以获得多边形的几何形状:-
poly = polygon.geometry.values[0]
这会检查 line
和 poly
是否相交:-
line.intersects(poly)
它返回 True
。
所以我们继续:-
line.intersection(poly).xy
并得到
(array('d',[0.0,1.0]),array('d',[1.0,0.5]))
结果。