Estou tentando descobrir onde várias linhas cruzam um polígono para dois 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])
É assim que os quadros de geodata acima se parecem (um com um polígono e o outro com duas linhas). Parece-me que as duas linhas cruzam o polígono:
No entanto, a saída de interseção é muito confusa:
print(line_gdf.intersects(poly_gdf))
0 Verdadeiro
1 Falso
print(line1.intersects(polygon))
print(line2.intersects(polygon))
Verdade
Verdade
Por que o geopandas
intersect
método fornece uma saída diferente da padrão shapely
?
Estou usando o Python 3.5.3 e o Geopandas 0.2.1 no Anaconda.
print(line.intersects(polygon))
foi um erro de digitação. Atualizei a pergunta para me referir a line1
qual foi o que eu originalmente quis dizer.
line_gdf.info
confirma que você possui apenas uma coluna geométrica única. Estou perplexo. Vou acompanhar se encontrar alguma coisa.
print(line.intersects(polygon))
que está acessando uma variável que não está definida, tanto quanto eu posso ver. Você definiuline1
eline2
anteriormente no código. Não sei por que isso retornaria True.