J'ai un fichier de formes avec 16 400 polygones. Chaque polygone montre l'expansion d'une espèce d'oiseau pour le monde entier.
Maintenant, je dois compter les polygones qui se chevauchent. Je l'ai essayé avec union et dissous (comptez l'union), mais l'union ne fonctionne pas pour autant de polygones.
Ensuite, j'ai essayé de découper des continents, mais cela ne fonctionne pas non plus en raison du grand nombre de polygones. D'ailleurs j'ai essayé cette méthode , également sans succès.
Par conséquent, je vous demande s'il existe un moyen de compter les polygones qui se chevauchent si 16 400 polygones sont dans un fichier de formes?
Je travaille avec 10.0 et je peux travailler avec 10.2. Une solution ArcPy est également merveilleuse.
En ce moment, je pense à créer un résille et itérer sur les lignes du shp avec les 16400 polygones et écrire 1 dans un champ de valeur d'une cellule résille si le polygone est dans cette cellule et prendre la ligne suivante (polygone) et si c'est également dans le nombre de cellules résille +1.
Mais je ne sais pas si c'est une bonne solution et comment la réaliser. Ou je dois apprendre R pour utiliser cette approche.
Le résultat: ce devrait être une forme où vous avez de nouveaux polygones parmi ceux qui se chevauchent et un champ où les chevauchements sont comptés.
Donc, à la fin, il devrait y avoir un fichier de formes où vous pouvez voir combien d'espèces d'oiseaux se trouvent au même endroit.
Réponses:
Je recommanderais d'utiliser l' outil Count Overlapping Features (Analysis) .
la source
En utilisant des jetons de géométrie arcpy, vous pouvez essayer quelque chose comme ceci:
Pour les exemples de données ci-dessus, le code renverra les comptes de chevauchement suivants:
Le code tel quel ne renverra que les comptages des polygones ayant au moins un chevauchement.
la source
Une méthode très simple est:
join_count
champ.la source
Je suppose que vous avez essayé cette méthode: compter et pixelliser les chevauchements de polygones dans ArcGIS Desktop?
16 400 polygones, ce n'est pas beaucoup. Cependant, une solution potentielle consiste simplement à effectuer une jointure spatiale régulière. Dans le
ArcMap toolbox, > Analysis Tools -> Overlap -> Spatial Join
.Définissez les entités
target
etjoin
sur le même ensemble de données et spécifiez une sortie. Laissez le reste des paramètres.Après quelques instants, vous devriez récupérer un fichier de formes contenant une colonne "nombre de jointures". Soustrayez 1 de ceci (car évidemment chaque entité devrait se recouper), et cela devrait être le nombre de "chevauchements" (se croisant en fait) pour chaque polygone.
Je viens de le jouer sur
la source
J'ai téléchargé et essayé l'outil "Count Overlapping Polygons". Cela peut fonctionner, mais cela prend énormément de temps (probablement à cause de la taille du fichier, mais mon FC d'entrée ne comptait que <5 000 enregistrements).
Pendant que j'attendais que cet outil s'exécute, j'ai ouvert une autre fenêtre ArcMap et il n'a fallu que quelques étapes rapides pour obtenir ce que je voulais. 1) Jointure spatiale - en utilisant la même classe d'entités que les fonctions cible et jointure et en sélectionnant l'option "Joindre un à plusieurs". 2) Dissoudre - en utilisant la sortie de la dernière étape. Utilisez le "TARGET_FID" comme champ de dissolution et pour les statistiques, vous pouvez soit SUM le champ "Join_Count" ou COUNT le champ "JOIN_FID". 3) Dans le fichier de sortie de l'étape 2, utilisez la calculatrice de champ soustrayez 1 du champ de statistiques ("SUM_Join_Count" ou "COUNT_JOIN_FID") - puisque chaque entité se croise.
Je suggère d'utiliser cette méthode sur l'outil "Count Overlapping Polygon". J'ai commencé à exécuter l'outil COP ~ 5 min avant de démarrer cette méthode Join-> Dissolve et cela m'a donné le résultat avec suffisamment de temps pour l'écrire avant même que l'outil "Count Overlapping Polygon" ne soit terminé.
J'espère que cela t'aides!
la source