Comment trouver les points d'intersection avec un polygone dans geopandas?
J'ai essayé d'utiliser la "coupe" sur une geodataframe, pour voir les points qui se trouvent à l'intérieur d'un polygone. Toutefois, seule la première fonction dans le cadre de sera de retour en tant que vrai. Ce que je fais mal?
from geopandas.geoseries import *
p1 = Point(.5,.5)
p2 = Point(.5,1)
p3 = Point(1,1)
g1 = GeoSeries([p1,p2,p3])
g2 = GeoSeries([p2,p3])
g = GeoSeries([Polygon([(0,0), (0,2), (2,2), (2,0)])])
g1.intersects(g) # Flags the first point as inside, even though all are.
g2.intersects(g) # The second point gets picked up as inside (but not 3rd)
OriginalL'auteur Thomas Pingel | 2015-05-22
Vous devez vous connecter pour publier un commentaire.
Selon la la documentation:
Vos exemples ne sont pas censés travailler. Donc, si vous voulez tester pour chaque point d'être en un seul polygone, vous aurez à faire:
Sorties:
Ou si vous voulez tester pour toutes les géométries dans un GeoSeries:
Geopandas s'appuie sur Galbées géométriques de travail. Il est parfois utile (et plus facile à lire) pour l'utiliser directement. Le code suivant fonctionne également comme annoncé:
Vous pouvez également jeter un oeil à
Comment gérer les erreurs d'arrondi dans Galbées pour les problèmes qui peuvent survenir avec des points sur les limites.
Bon! J'ai ajouté votre exemple de ma réponse, que je trouve plus complet (avec la ref de la doc). Vous pourriez envisager de marquer la question comme résolue et/ou upvoting.
OriginalL'auteur Fabzi
Un moyen de contourner cela semble être d'obtenir soit une entrée particulière (qui ne fonctionne pas pour mon application, mais peuvent travailler pour quelqu'un d'autre:
D'une autre façon (plus utile à ma demande) est à l'intersection avec unaire de l'union des fonctionnalités pour la deuxième couche:
OriginalL'auteur Thomas Pingel
Vous pouvez facilement vérifier les points qui se trouve à l'intérieur d'un polygone avec cette simple fonction ci-dessous:
OriginalL'auteur Ioannis Nasios