Mon bureau verra un grand changement dans sa section SIG. Cette section est opérationnelle depuis les années 1980 et possède une énorme collection de données SIG (c.-à-d. Des fichiers de formes, des fichiers raster, des données, etc.) mais n'a jamais fait l'objet d'un inventaire. Maintenant ça va arriver.
Existe-t-il un moyen automatisé d'extraire toutes les informations sur les données SIG (c.-à-d. Fichier de formes, couverture des informations sur l'arc, fichier de couches, * .mxd, gdb, fichier raster, etc.) d'un PC vers un fichier Excel? Les informations peuvent inclure la date de création, la date de dernière modification, le nom du dossier ou du conteneur, etc.
arcpy
file-geodatabase
excel
metadata
blu_sr
la source
la source
arcpy.da.walk
.Réponses:
Cela fonctionne pour moi, en utilisant la
arcpy.da.Walk
fonction d'ArcGIS 10.1 SP1:Le
csv
module est également utilisé pour simplifier l'écriture du fichier de sortie. Excel peut ouvrir des fichiers CSV afin que vous puissiez les afficher sous forme de feuilles de calcul.Voir la
arcpy.Describe
fonction pour les propriétés supplémentaires que vous pouvez inclure dans la sortie.Si vous cherchez spécifiquement à analyser des informations à partir des métadonnées réelles , consultez le script dans cette réponse: Création d'une table contenant tous les noms de fichiers (et éventuellement des métadonnées) dans une géodatabase fichier
la source
Lorsque vous utilisez Python, vous devez utiliser les modules appropriés pour faire ce que vous voulez. Pour trouver tous les fichiers dans un répertoire avec l'extension shp, par exemple, il existe des solutions beaucoup plus simples qui ont été présentées sans interruption, ce qui est affreux ... (comme la solution présentée par Nathan W, mais il y en a beaucoup, beaucoup d'autres, juste recherche sur Internet)
Quelques exemples avec des modules pertinents:
1) avec le module glob:
fichiers de formes uniquement:
fichiers de formes et géodatabases:
si vous souhaitez rechercher également dans les sous-répertoires:
2) avec os.listdir et compréhension des listes (en deux lignes) -> liste des résultats
3) avec le module fnmatch:
et bien d'autres solutions, récursives etc.
la source
Merci artwork21 et Nathan W pour votre réponse. Et oui, le code de Nathen a fait la magie.
Uniquement le nom et l'emplacement du fichier. Le PC avec lequel je vais travailler a beaucoup de couverture (le fichier arc-info), cela fonctionnera-t-il aussi?
la source
arcpy.da.walk
liste des couvertures sera répertoriée, mais je suppose que non, car elle n'est pas répertoriée dans les types de données ou les filtres de type.if
instruction.txt.close()
si vous l'utilisez,with
car il le fera pour vous à la fin du bloc.Si vous avez ArcGIS Desktop 10.0 (ou l'un de ses service packs), je pense que votre meilleur pari est d'écrire un script python qui utilise os.walk pour parcourir un répertoire SIG défini et recherche les extensions de fichier SIG courantes telles que .shp,. gdb, .mdb, etc ... et écrit le résultat dans un fichier texte délimité par des virgules. Vous pouvez ensuite importer le fichier texte dans Excel, voir l'exemple de code ci-dessous:
Si vous utilisez ArcGIS 10.1 (ou version ultérieure) pour le bureau, il existe une autre réponse ici qui utilise arcpy.da.Walk qui n'était pas disponible à la version 10.0 ou antérieure.
la source
csv
module pour résumer un peu l'écriture du fichier et l'utilisationarcpy.da.walk
de la version 10.1 SP1 pour permettre à ArcGIS de gérer la liste des types de données SIG.Si vous voulez éviter la programmation, cela pourrait être la méthode la plus simple et la plus rapide.
Il existe un module complémentaire pour Excel appelé ASAP Utilities . Il y a un essai gratuit de 90 jours, mais après cela, c'est 49 $ US pour une utilisation professionnelle. C'est gratuit pour un usage étudiant ou personnel. Le module complémentaire ajoute de nombreuses fonctions utiles. L'une d'elles consiste à créer une liste de fichiers dans une structure de dossiers. Il fournit également des propriétés de fichier. Vous pouvez limiter les résultats par type de fichier si vous le souhaitez.
Voici une vidéo expliquant comment procéder.
J'ai déjà utilisé ce module complémentaire et les résultats sont très rapides.
Remarque, je ne suis pas affilié à cette société de logiciels.
la source
Je n'ai pas pu obtenir que les autres réponses fonctionnent pleinement.
Dans le premier exemple, dans un répertoire contenant à la fois des géodatabases et des fichiers de formes, je n'ai obtenu qu'une liste des classes d'entités de la géodatabase, mais lorsque j'ai commenté la partie géodatabases du script, j'ai obtenu une liste de fichiers de formes.
Dans le deuxième exemple, la partie géodatabases ne fonctionnait pas du tout, j'ai donc copié la partie géodatabases du premier exemple. Encore une fois, j'ai obtenu une liste de géodatabases uniquement.
Ensuite, cela m'a frappé: les géodatabases sont lues avant les fichiers de formes et le script s'arrête
break
dans la partie des géodatabases.Étant un débutant en python, je ne sais pas pourquoi
break
est nécessaire, mais sans lui, le script semble aller dans une boucle sans fin, mais comme celabreak
est nécessaire, il m'est venu à l'esprit que mettre la partie géodatabases dans sa propre boucle, après l'autre fichier types sont répertoriés, résoudrait le problème:#create blank text file with open("C:\\Temp\\GISlayers.txt", "w") as txt: for root, dirs, files in os.walk("C:\\Temp\\temp"): for f in files: #look for shapefiles, etc. [code...] for f in files: #look for geodatabases [code...]
Quand je l'ai fait, j'ai obtenu ma liste complète.
la source