Estoy tratando de encontrar dónde varias líneas se cruzan con un polígono para dos geodataframes diferentes:
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])
Así es como se ven los geodataframes anteriores (uno tiene un polígono y el otro tiene dos líneas). Me parece que ambas líneas se cruzan con el polígono:
Sin embargo, la salida de intersección es muy confusa:
print(line_gdf.intersects(poly_gdf))
0 verdadero
1 falso
print(line1.intersects(polygon))
print(line2.intersects(polygon))
Cierto
Cierto
¿Por qué el geopandas
intersect
método da un resultado diferente al estándar shapely
?
Estoy usando Python 3.5.3 y Geopandas 0.2.1, todo en Anaconda.
print(line.intersects(polygon))
fue un error tipográfico. He actualizado la pregunta para referirme a line1
qué es lo que quise decir originalmente.
line_gdf.info
confirma que solo tiene una columna de geometría única. Estoy perplejo. Seguiré si encuentro algo.
print(line.intersects(polygon))
que tienes acceso a una variable que no está definida hasta donde puedo ver. Has definidoline1
yline2
anteriormente en el código. No sé por qué eso volvería Verdadero.