Suite

Table d'ouverture à partir de la géodatabase fichier dans ArcPy ?


J'ai des tables dans une géodatabase fichier. Je veux ouvrir et travailler avec eux dans mon script. La première étape que je semble devoir faire est scriptée en dessous. Mon résultat de ce script est tous les noms de toutes les tables de ma géodatabase. Je voudrais également extraire toutes les données de ces tableaux. Pour que j'aie une matrice ou une liste de listes en python.

Est-ce possible?

import arcpy from arcpy import env env.workspace = r"D:datasre20821DocumentsVoorspelmodelGeodatabases2_Component.gdb" datasetList = arcpy.ListTables("*") pour l'ensemble de données dans l'ensemble de donnéesList : imprimer l'ensemble de données

http://resources.arcgis.com/en/help/main/10.2/index.html#//002z00000011000000


Vous pouvez utiliser un curseur pour parcourir chaque ensemble de données et imprimer chaque ligne.

import arcpy from arcpy import env env.workspace = r"D:datasre20821DocumentsVoorspelmodelGeodatabases2_Component.gdb" datasetList = arcpy.ListTables("*") pour l'ensemble de données dans datasetList : avec arcpy.da.SearchCursor (ensemble de données, "*") as cur : pour la ligne dans cur : imprimer la ligne

voir : http://resources.arcgis.com/en/help/main/10.2/index.html#//018w00000011000000


Si vous souhaitez lire des données tabulaires dans un dictionnaire pour une analyse plus approfondie, vous pouvez essayer quelque chose comme ceci…

import csv pour le fichier dans datasetList : n=open(file,'r') # ouvre le fichier reader=csv.DictReader(n,delimiter = ',') #ou quel que soit votre délimiteur data={} #initialise le dictionnaire pour row in reader : # lit les données de votre table dans le dictionnaire pour col,val dans row.iteritems() : data.setdefault(col,[]).append(val)

Cela suppose que "fichier" contient le chemin complet du fichier vers la table dans votre gdb. Sinon, vous aurez besoin de 'path+file' dans l'appel n=open. Le résultat vous donnera un dictionnaire (données) avec des en-têtes de table comme clés. Si cela fonctionne, vous devriez pouvoir…

print list(data.keys()) # pour afficher une liste de vos en-têtes

Ensuite, vous pouvez indexer les données par…

data['key1'][0] # première valeur dans la colonne 'key1'

Les dictionnaires sont bons pour les débutants. Si vous êtes plus à l'aise avec Python, je recommande fortement le module pandas pour travailler avec des données tabulaires. C'est très puissant et facile à utiliser. J'espère que cela t'aides!


Appliquer les privilèges sde à un autre FC

Je souhaite lire toutes les classes d'entités de la base de données SDE A et appliquer tous les privilèges à la même classe d'entités dans la base de données SDE B.

par DanPatterson_Re fatigué

avant d'aller trop loin en fournissant des exemples de code, le vôtre n'est pas lisible dans sa forme actuelle

Code Formating the Basics ++ vous permettra de démarrer et vous n'avez pas indiqué à quel point vous êtes familier avec arcpy et pourquoi vous devez le faire via le code en premier lieu, et pouvez-vous accomplir ce que vous voulez faire manuellement? Si vous avez un flux de travail actuel qui utilise des outils dans arctoolbox, le codage est simple. Les processus, méthodes et propriétés qui n'existent pas dans arctoolbox sont accessibles via arcpy . certains, mais pas tous. Donc si vous pouviez combler les lacunes, ce serait super

Jetez un œil à ce fil dans GIS Stack Exchange :

Il existe une fonction intéressante qui renverra un dictionnaire python indiquant les rôles ayant des autorisations d'affichage et de modification pour une certaine connexion SDE, un propriétaire de base de données et un nom de table. En supposant que les noms de classes d'entités dans sde1 sont les mêmes que dans sde2, vous pouvez :


Voir la vidéo: How to Open ArcGIS File gdb in QGIS 2021. (Octobre 2021).