我正在尝试查找多条线与两个不同地理数据框的多边形相交的位置:
from shapely.geometry import Polygon, LineString
import geopandas as gpd
polygon = Polygon([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)])
line1 = LineString([(0.5, 0.5), (0.7, 0.7)])
line2 = LineString([(0.9, 0.9), (0.2, 0.6)])
poly_gdf = gpd.GeoDataFrame(geometry=[polygon])
line_gdf = gpd.GeoDataFrame(geometry=[line1, line2])
这就是上面的地理数据框的样子(一个具有多边形,另一个具有两条线)。在我看来,两条线都与多边形相交:
但是,相交的输出非常令人困惑:
print(line_gdf.intersects(poly_gdf))
0真实
1错误
print(line1.intersects(polygon))
print(line2.intersects(polygon))
真正
真正
为什么该geopandas
intersect
方法与标准方法输出不同shapely
?
我在Anaconda上都使用Python 3.5.3和Geopandas 0.2.1。
我也想知道答案。似乎只能将单个几何列分配给地理数据框。我认为您的line_gdf数据框尝试添加两个几何列。请查看 geopandas.org/data_structures.html#geodataframe
—
Paul
@保罗,我很抱歉,
—
bgordon '17
print(line.intersects(polygon))
是一个错字。我已经更新了问题,以指代line1
我最初的意思。
@Paul我可以从文档中看到有两个几何列将如何引起问题,但是我不太确定为什么要首先添加两个几何列。
—
bgordon '17
line_gdf.info
确认您只有一个几何列。我很困惑 如果发现任何问题,我会跟进。
print(line.intersects(polygon))
要访问的变量时,据我所知,该变量尚未定义。你定义line1
和line2
前面的代码。我不知道为什么会返回True。