[PYTHON] Comment obtenir les coordonnées de sommet d'une entité dans ArcPy

Obtenez les sommets de chaque polygone dans la couche d'entités surfaciques

Structure de données de la couche d'entités surfaciques

Code Python

GetPolygonVertex.py


import arcpy

#Vérifier les paramètres d'entrée
arcpy.AddMessage("GetArgumentCount() = {0}".format(arcpy.GetArgumentCount()))
for i in range(arcpy.GetArgumentCount()):
    param = arcpy.GetParameter(i)
    paramText = arcpy.GetParameterAsText(i)
    
    arcpy.AddMessage("GetParameter({0}) = {1}".format(i, param))
    arcpy.AddMessage("GetParameter({0}).__class__ = {1}".format(i, param.__class__))
    arcpy.AddMessage("GetParameter({0}).__class__.__name__ = {1}".format(i, param.__class__.__name__))
    arcpy.AddMessage("GetParameterAsText({0}) = {1}".format(i, paramText))

inFeatureLayer = arcpy.GetParameterAsText(0)

#Vérifier le contenu de la couche d'entités
with arcpy.da.SearchCursor(inFeatureLayer, ["OID@", "SHAPE@"]) as cursor:
    for row in cursor:
        oid = row[0]
        shape = row[1]

        # oid
        arcpy.AddMessage("*****************************************************************************************************")
        arcpy.AddMessage("-- oid = OID@ --")
        arcpy.AddMessage("OID@ = {0}".format(oid))
        arcpy.AddMessage("OID@.__class__ = {0}".format(oid.__class__))
        arcpy.AddMessage("OID@.__class__.__name__ = {0}".format(oid.__class__.__name__))

        # shape
        arcpy.AddMessage("-- shape = SHAPE@ --")
        arcpy.AddMessage("shape = {0}".format(shape))
        arcpy.AddMessage("shape.__class__ = {0}".format(shape.__class__))
        arcpy.AddMessage("shape.__class__.__name__ = {0}".format(shape.__class__.__name__))
        arcpy.AddMessage("shape.partCount = {0}".format(shape.partCount))
        arcpy.AddMessage("shape.pointCount = {0}".format(shape.pointCount))

        # shape.getPart()
        arcpy.AddMessage("-- shape.getPart() --")
        arcpy.AddMessage("shape.getPart() = {0}".format(shape.getPart()))
        arcpy.AddMessage("shape.getPart().__class__ = {0}".format(shape.getPart().__class__))
        arcpy.AddMessage("shape.getPart().__class__.__name__ = {0}".format(shape.getPart().__class__.__name__))
        arcpy.AddMessage("shape.getPart().count = {0}".format(shape.getPart().count))

        # shape.getPart().getObject(0)
        arcpy.AddMessage("-- shape.getPart().getObject(0) --")
        arcpy.AddMessage("shape.getPart().getObject(0) = {0}".format(shape.getPart().getObject(0)))
        arcpy.AddMessage("shape.getPart().getObject(0).__class__ = {0}".format(shape.getPart().getObject(0).__class__))
        arcpy.AddMessage("shape.getPart().getObject(0).__class__.__name__ = {0}".format(shape.getPart().getObject(0).__class__.__name__))
        arcpy.AddMessage("shape.getPart().getObject(0).count = {0}".format(shape.getPart().getObject(0).count))

        # shape.getPart().getObject(0).getObject(i)
        for i in range(shape.getPart().getObject(0).count):
            point = shape.getPart().getObject(0).getObject(i)
            
            arcpy.AddMessage("-- point = shape.getPart().getObject(0).getObject({0}) --".format(i))
            arcpy.AddMessage("point = {0}".format(point))
            arcpy.AddMessage("point.__class__ = {0}".format(point.__class__))
            arcpy.AddMessage("point.__class__.__name__ = {0}".format(point.__class__.__name__))
            
        arcpy.AddMessage("*****************************************************************************************************")
del cursor

Résultat d'exécution

Lorsqu'il est exécuté en tant qu'entrée avec une couche d'entités contenant deux polygones.

2020-01-12-22-27-37.png

GetArgumentCount() = 1
GetParameter(0) =Polygone de test
GetParameter(0).__class__ = <class 'arcpy._mp.Layer'>
GetParameter(0).__class__.__name__ = Layer
GetParameterAsText(0) =Polygone de test
*****************************************************************************************************
-- oid = OID@ --
OID@ = 1
OID@.__class__ = <class 'int'>
OID@.__class__.__name__ = int
-- shape = SHAPE@ --
shape = <geoprocessing describe geometry object object at 0x0000017A10D30EE0>
shape.__class__ = <class 'arcpy.arcobjects.geometries.Polygon'>
shape.__class__.__name__ = Polygon
shape.partCount = 1
shape.pointCount = 5
-- shape.getPart() --
shape.getPart() = <geoprocessing array object object at 0x0000017A1020A450>
shape.getPart().__class__ = <class 'arcpy.arcobjects.arcobjects.Array'>
shape.getPart().__class__.__name__ = Array
shape.getPart().count = 1
-- shape.getPart().getObject(0) --
shape.getPart().getObject(0) = <geoprocessing array object object at 0x0000017A1020A970>
shape.getPart().getObject(0).__class__ = <class 'arcpy.arcobjects.arcobjects.Array'>
shape.getPart().getObject(0).__class__.__name__ = Array
shape.getPart().getObject(0).count = 5
-- point = shape.getPart().getObject(0).getObject(0) --
point = 132.084696427 31.297648687 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(1) --
point = 135.36789933 32.2200581310001 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(2) --
point = 136.569792838 29.41042809 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(3) --
point = 133.286589935 28.4353141970001 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(4) --
point = 132.084696427 31.297648687 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
*****************************************************************************************************
*****************************************************************************************************
-- oid = OID@ --
OID@ = 2
OID@.__class__ = <class 'int'>
OID@.__class__.__name__ = int
-- shape = SHAPE@ --
shape = <geoprocessing describe geometry object object at 0x0000017A10D308C8>
shape.__class__ = <class 'arcpy.arcobjects.geometries.Polygon'>
shape.__class__.__name__ = Polygon
shape.partCount = 1
shape.pointCount = 5
-- shape.getPart() --
shape.getPart() = <geoprocessing array object object at 0x0000017A1020AA50>
shape.getPart().__class__ = <class 'arcpy.arcobjects.arcobjects.Array'>
shape.getPart().__class__.__name__ = Array
shape.getPart().count = 1
-- shape.getPart().getObject(0) --
shape.getPart().getObject(0) = <geoprocessing array object object at 0x0000017A10F19CB0>
shape.getPart().getObject(0).__class__ = <class 'arcpy.arcobjects.arcobjects.Array'>
shape.getPart().getObject(0).__class__.__name__ = Array
shape.getPart().getObject(0).count = 5
-- point = shape.getPart().getObject(0).getObject(0) --
point = 146.643152231 39.990418811 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(1) --
point = 145.658068329 37.1688505340001 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(2) --
point = 142.19148511 38.2163059420001 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(3) --
point = 143.176569012 40.99087202 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
-- point = shape.getPart().getObject(0).getObject(4) --
point = 146.643152231 39.990418811 0 NaN
point.__class__ = <class 'arcpy.arcobjects.arcobjects.Point'>
point.__class__.__name__ = Point
*****************************************************************************************************

référence

référence

Recommended Posts

Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Comment obtenir le nombre de chiffres en Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Comment obtenir stacktrace en python
Comment déterminer l'existence d'un élément sélénium en Python
Comment obtenir toutes les valeurs possibles dans une expression régulière
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Créez une fonction pour obtenir le contenu de la base de données dans Go
Récupérer l'appelant d'une fonction en Python
Comment obtenir les fichiers dans le dossier [Python]
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment obtenir le nom de la variable lui-même en python
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
[NNabla] Comment obtenir la sortie (variable) de la couche intermédiaire du réseau construit
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment obtenir le "nom" d'un champ dont la valeur est limitée par l'attribut choice dans le modèle Django
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment augmenter la vitesse de traitement de l'acquisition de la position des sommets
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comment utiliser la méthode __call__ dans la classe Python
Obtenez le nombre d'éléments spécifiques dans la liste python
Comment développer dans un environnement virtuel Python [Memo]
Comment générer une requête à l'aide de l'opérateur IN dans Django
Comment obtenir toutes les clés et valeurs du dictionnaire
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Comment obtenir un aperçu de vos données dans Pandas
[Shell] Comment obtenir la branche distante par défaut avec Git
Comment obtenir une liste de liens à partir d'une page de wikipedia
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment obtenir la version Python
[Linux] [C / C ++] Comment obtenir la valeur d'adresse de retour d'une fonction et le nom de fonction de l'appelant
Comment afficher le maillage régional du Government Statistics Office (eStat) dans un navigateur Web
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
[OCI] Script Python pour obtenir l'adresse IP d'une instance de calcul dans Cloud Shell
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)
Comment afficher une colonne de fichiers spécifiée sous Linux (awk)
[sh] Comment stocker les résultats de l'exécution de la commande dans des variables
Comment implémenter du code Java en arrière-plan de Red Hat (Linux ONE)
Essayez d'obtenir la liste des fils du bulletin d'information (je n'aime pas) avec Python.
Comment changer la couleur du seul bouton pressé avec Tkinter
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
[Python] Comment obtenir le premier et le dernier jour du mois
Comment obtenir une chaîne à partir d'un argument de ligne de commande en python
J'ai essayé de résumer brièvement la procédure de démarrage du développement de Django
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
[TensorFlow 2] Comment vérifier le contenu de Tensor en mode graphique
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment créer une grande quantité de données de test dans MySQL? ??
[NNabla] Comment supprimer le niveau intermédiaire d'un réseau prédéfini