J'essaie de trouver où plusieurs lignes coupent un polygone pour deux géodonnées différentes:
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])
Voici à quoi ressemblent les géodonnées ci-dessus (l'une a un polygone et l'autre a deux lignes). Il me semble que les deux lignes coupent le polygone:
Cependant, la sortie d'intersection est très déroutante:
print(line_gdf.intersects(poly_gdf))
0 Vrai
1 Faux
print(line1.intersects(polygon))
print(line2.intersects(polygon))
Vrai
Vrai
Pourquoi la geopandas
intersect
méthode donne-t-elle une sortie différente de celle standard shapely
?
J'utilise Python 3.5.3 et Geopandas 0.2.1 tous sur Anaconda.
print(line.intersects(polygon))
était une faute de frappe. J'ai mis à jour la question pour me référer à line1
ce que je voulais dire à l'origine.
line_gdf.info
confirme que vous n'avez qu'une seule colonne de géométrie. Je suis perplexe. Je ferai un suivi si je trouve quelque chose.
print(line.intersects(polygon))
que vous accédez à une variable qui n'est pas définie pour autant que je puisse voir. Vous avez définiline1
etline2
plus tôt dans le code. Je ne sais pas pourquoi cela reviendrait Vrai.