Mi oficina verá un gran cambio en su sección de SIG. Esta sección ha estado operativa desde la década de 1980 y tiene una gran colección de datos SIG (es decir, archivos de forma, archivos ráster, datos, etc.) pero nunca ha pasado por ningún inventario. Ahora sucederá.
¿Existe alguna forma automatizada de extraer toda la información sobre los datos SIG (es decir, shapefile, cobertura de información de arco, archivo de capa, * .mxd, gdb, archivo ráster y más) de una PC a un archivo Excel? La información puede incluir fecha de creación, fecha de última edición, nombre de carpeta o contenedor, etc.
arcpy
file-geodatabase
excel
metadata
blu_sr
fuente
fuente
arcpy.da.walk
.Respuestas:
Esto funciona para mí, usando la
arcpy.da.Walk
función en ArcGIS 10.1 SP1:El
csv
módulo también se usa para simplificar la escritura del archivo de salida. Excel puede abrir archivos CSV para que pueda verlos como hojas de cálculo.Vea la
arcpy.Describe
función para propiedades adicionales que puede incluir en la salida.Si está buscando analizar específicamente la información de los metadatos reales , consulte el script en esta respuesta: Crear una tabla que contenga todos los nombres de archivo (y posiblemente los metadatos) en una Geodatabase de archivos
fuente
Cuando usa Python, debe usar los módulos correctos para hacer lo que desea. Para encontrar todos los archivos en un directorio con extensión shp, por ejemplo, hay soluciones mucho más simples que se presentaron sin interrupción, lo cual es horrible ... (como la solución presentada por Nathan W, pero hay muchas, muchas otras, solo buscar en internet)
Algunos ejemplos con módulos relevantes:
1) con el módulo glob:
solo archivos de forma:
archivos de forma y geodatabases:
si quieres buscar también en los subdirectorios:
2) con os.listdir y comprensión de la lista (en dos líneas) -> lista de resultados
3) con el módulo fnmatch:
y muchas otras soluciones, recursivas, etc.
fuente
Gracias artwork21 y Nathan W por tu respuesta. Y sí, el código de Nathen hizo la magia.
Solo nombre de archivo y ubicación. La PC con la que trabajaré tiene mucha cobertura (el archivo de información de arco), ¿funcionará en ellos también?
fuente
arcpy.da.walk
enumerará las coberturas, pero supongo que no, ya que no aparece en los filtros de tipo o tipo de datos.if
declaración.txt.close()
si está usandowith
porque lo hará por usted cuando salga el bloque.Si tiene ArcGIS Desktop 10.0 (o cualquiera de sus paquetes de servicio), creo que su mejor opción es escribir un script de Python que use os.walk para mirar a través de un directorio GIS definido y busque extensiones de archivo GIS comunes como .shp,. gdb, .mdb, etc ... y escribe el resultado en un archivo de texto delimitado por comas. Luego puede traer el archivo de texto a Excel, vea el ejemplo de código a continuación:
Si está utilizando ArcGIS 10.1 (o posterior) para Desktop, hay otra respuesta aquí que utiliza arcpy.da.Walk que no estaba disponible en 10.0 o anterior.
fuente
csv
módulo para abstraer un poco la escritura del archivo y el usoarcpy.da.walk
en 10.1 SP1 para permitir que ArcGIS maneje la lista de los tipos de datos SIG.Si desea evitar la programación, este podría ser el método más fácil y rápido.
Hay un complemento para Excel llamado ASAP Utilities . Hay una prueba gratuita de 90 días, pero después de eso, son $ 49 USD para uso comercial. Es gratis para estudiantes o para uso personal. El complemento agrega muchas funciones útiles. Una de ellas es crear una lista de archivos en una estructura de carpetas. También proporciona propiedades de archivo. Puede limitar los resultados por tipo de archivo si lo desea.
Aquí hay un video de cómo hacer esto.
He usado este complemento antes y los resultados son muy rápidos.
Tenga en cuenta que no estoy afiliado a esta compañía de software.
fuente
No pude conseguir que las otras respuestas funcionaran completamente.
En el primer ejemplo, en un directorio con geodatabases y shapefiles, solo obtuve una lista de las clases de entidad en la geodatabase, pero cuando comenté la porción de geodatabases del script, obtuve una lista de shapefiles.
En el segundo ejemplo, la porción de geodatabases no funcionó en absoluto, así que copié la porción de geodatabases del primer ejemplo. Nuevamente, obtuve una lista de solo geodatabases.
Luego me golpeó: las geodatabases se leen antes de los shapefiles, y el script se detiene en la
break
parte de geodatabases.Siendo un novato de Python, no sé por qué
break
se necesita, pero sin él, el script parece ir en un bucle sin fin, pero dado quebreak
es necesario, se me ocurrió que poner las geodatabases parte en su propio bucle, después del otro archivo los tipos se enumeran, resolverían el problema:#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...]
Cuando hice eso, obtuve mi listado completo.
fuente