Home » Économie » Récupérer les classes et les tables d’entités sources utilisées dans une couche d’entités publiée

Récupérer les classes et les tables d’entités sources utilisées dans une couche d’entités publiée

by Nouvelles

Résumé

Parfois, nous souhaitons faire correspondre les classes d’entités de géodatabase d’entreprise source utilisées et les tables de géodatabase d’entreprise dans la couche d’entités référencée publiée. Cette couche peut avoir plusieurs sous-couches et tables utilisées. Le script ci-dessous récupérera le nom de la sous-couche/table, son ID/index et le nom de sa table source/classe de fonctionnalités dans la connexion .sde.

Procédure

Exécutez le script ci-dessous à l’aide de l’environnement ArcGIS Pro Python :

depuis arcgis.gis importer un SIG depuis arcgis.features importer FeatureLayerCollection importer arcpy importer re #Connexion à ArcGIS Enterprise portalurl = ‘ nom d’utilisateur = ‘admin’ mot de passe = ‘admin123’ gis = GIS (portalurl, nom d’utilisateur, mot de passe) arcpy.SignInToPortal (portalurl ,username,password) #Spécifiez l’ID de l’élément de couche de fonctionnalités référencé featurelayeritem = gis.content.get(‘c800e0fe96b844cfb7e6a684383da43f’) #Spécifiez l’espace de travail comme étant l’URL REST de la couche de fonctionnalités arcpy.env.workspace = f”{featurelayeritem.url }” #Identifier une liste de toutes les classes et tables d’entités sources featureclasses = arcpy.ListFeatureClasses() sourcetables = arcpy.ListTables() “””Ce qui précède créera une liste de chaînes avec les classes d’entités source et une autre pour les tables source utilisées dans le couche. Le résultat sera [‘L’]. Par exemple, si la classe d’entités s’appelle « Adresses » et que l’ID de couche associé est « 3 », il sera [‘L3Addresses’].””” #Ce qui suit permet de récupérer les informations sur les couches et les tables de la couche de fonctionnalités Web featurelayercollection = FeatureLayerCollection.fromitem(featurelayeritem) layer = featurelayercollection.properties[‘layers’]
tables = featurelayercollection.properties[‘tables’]

#Parcourir chaque couche couche par couche : #Récupération du nom de la couche et de son identifiant layername = layer[‘name’]
identifiant de couche = couche[‘id’]

#Parcourir les classes d’entités sources pour featureclass dans featureclasses : #Récupérer uniquement le nom de la classe d’entités qui commence par “L” if featureclass.startswith(f’L{layerid}’): “””Assurer que, par exemple, le la couche avec l’identifiant 33 n’est pas récupérée avec celle avec l’identifiant 3. Nous nous assurons donc que le caractère après L est une lettre et non un nombre car les classes d’entités ne peuvent commencer que par des lettres “”” prefixlength = len(f’L{. layerid}’) si re.match(r'[A-Z,a-z]’, classe de fonctionnalités[prefixlength:]): #Identifier le nom de la source sans ‘l’ nom de la source = featureclass[prefixlength:]

#Impression du résultat print(f’Nom de la couche : {layername}’) print(f’ID de la couche : {layerid}’) print(f’Classe d’entités source : {sourcename}’) print(‘—— —————————–‘) #Faire une boucle dans chaque table pour table dans les tables : #Récupération du nom de la table et de son identifiant tablename = tableau[‘name’]
identifiant de table = table[‘id’]

#Faire une boucle dans les tables sources de sourcetable dans sourcetables : #Récupérer uniquement le nom de la table qui commence par “L” if sourcetable.startswith(f’L{tableid}’): “””Assurer que, par exemple, la table avec L’identifiant 33 n’est pas récupéré avec celui avec l’identifiant 3. Nous nous assurons donc que le caractère après L est une lettre et non un nombre car les classes d’entités ne peuvent commencer que par des lettres “”” prefixlength = len(f’L{tableid}. ‘) si re.match(r'[A-Z,a-z]’,table source[prefixlength:]): #Identifier le nom de la source sans ‘l’ nom de la source = table source[prefixlength:]

#Impression du résultat print(f’Nom de la table : {nom de la table}’) print(f’ID de la table : {tableid}’) print(f’Table source : {nom de la source}’) print(‘——- —————————-‘)
#Récupérer #les #classes #les #tables #dentités #sources #utilisées #dans #une #couche #dentités #publiée

You may also like

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.