J'ai ArcGIS Desktop 10.2 et mon défi est de savoir comment extraire le nombre de sommets dans chaque polygone pour toutes les fonctionnalités comme ceci:
J'ai plusieurs parcelles dans ma classe d'entités et je souhaite extraire le nombre de sommets pour toutes les entités séparément, puis je veux afficher les coordonnées XY pour tous les sommets.
pour plus d'informations, je veux juste convertir les sommets pour chaque polygone et afficher le nombre de chaque sommet à partir de 1 nombre, donc si j'ai un polygone et qu'il a 4 sommets, je veux convertir le polygone en sommets i afficher le nombre de sommets comme celui-ci (1,2,3,4,5), puis affichant xy pour chaque sommet, je pense que le véritable défi est de savoir comment convertir tous les polygones en sommets et créer chaque nombre de sommets à partir d'un nombre.
Réponses:
Le code ci-dessous combine les autres réponses et ajoute un peu pour numéroter les sommets.
Les points sont étiquetés dans l'ordre de dessin. Le dernier point (sous le premier) n'aura pas d'étiquette et peut être supprimé en sélectionnant tous les points qui ont des valeurs NULL ou uniques, "DRAW_ORDER" s'ils ne sont pas nécessaires pour la reconstruction. Une requête de définition peut être utilisée pour supprimer les points qui se chevauchent de l'affichage.
Les données XY sont présentes, mais je laisserai cela à vos désirs d'étiquetage / d'affichage. Voir la réponse d'Aaron sur l'ajout d'un champ XY pour l'étiquetage.
Je jouais également avec FeatureClass sur un tableau numpy, mais j'ai terminé cela en premier.
la source
La façon la plus simple de procéder consiste à ajouter un nouveau champ entier à la table attributaire de la couche parcelles. Ensuite, exécutez la calculatrice de champ avec l'expression suivante:
Le
!Shape!.pointCount
renvoie le nombre total de sommets dans l'entité. Cependant, le premier sommet de chaque pièce est répété à la fin, afin de fermer l'entité. Pour gérer cela, soustrayez un sommet pour chaque pièce à l'aide-!Shape!.partCount
.Notez que vous devrez utiliser l'analyseur Python pour que cette expression fonctionne.
la source
SearchCursor
méthode dans la réponse d'Aaron ou un outil de géotraitement comme Feature Vertices To Points (bien que cet outil nécessite une licence ArcGIS for Desktop Advanced).dmahr a fourni une bonne solution pour compter les sommets. Pour une manière non programmatique d'étiqueter chaque point avec les coordonnées XY, essayez le workflow suivant:
Calculez le champ "XY" dans la calculatrice de champ, où XY =
str (! x!) + "," + str (! y!)
Caractéristiques des étiquettes. Calque de clic droit> Etiquettes> Champ d'étiquette: XY
Cela produit les résultats suivants:
Vous pouvez également effectuer ces actions par programmation à l'aide
explode_to_points
d'un curseur de recherche (comme début).la source
Si l'on ne veut pas calculer un nouveau champ et que l'on veut juste récupérer un certain nombre de sommets par couche très rapidement (à des fins de généralisation, par exemple lors de l'exposition des ensembles de données sur le Web), il est possible de créer un outil de script personnalisé à l'intérieur d'un boîte à outils ou exposer le code en tant que complément Python.
Code d'outil de script personnalisé:
Code complémentaire Python (sélectionnez une couche dans la table des matières pour compter les sommets):
la source