Solución de shell OSGeo4W
En mi humilde opinión, la forma más simple de extraer las propiedades de la tabla de atributos ( esquema ) consiste en abrir el shell OSGeo4W (porque estás en Windows), cambiar el directorio a tu carpeta de datos y simplemente escribir algo como:
ogrinfo -so inputLayerName.shp inputLayerName
Le mostrará la información de resumen como proyección, esquema , recuento de características y extensiones. Luego, debido a que tiene un montón de shapefiles, puede hacer un FOR
ciclo como el siguiente:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf >> properties.txt
Esto devuelve un archivo txt con las propiedades de todos los archivos de forma en un directorio (porque la redirección de salida >>
agrega cada salida individual al properties.txt
archivo).
Alternativamente, si está interesado en un archivo de propiedades para cada archivo de forma:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf > %~nf_properties.txt
Sobre la estandarización, hay varias técnicas. Le sugiero que use la RESIZE
opción de creación de capa después de la fusión para cambiar el tamaño de los campos a su tamaño óptimo (por ejemplo, los campos de texto con una longitud excesiva se acortarán). Por ejemplo:
ogr2ogr -lco RESIZE=yes merge_resized.shp merge.shp
Solución de procesamiento de script
Abra la caja de herramientas Procesamiento en QGIS, cree un nuevo script (haciendo clic en Scripts
-> Tools
-> Create new script
) y escriba:
##ogrinfo (summary only)=name
##input=vector
##output=output file
import os, subprocess
head, tail = os.path.split(input)
inputname = os.path.splitext(tail)[0]
cmd = 'ogrinfo -so ' + input + ' ' + inputname + ' > ' + output
subprocess.check_call(cmd, shell=True)
Guárdelo como desee, por ejemplo ogrinfo_so.py
. Luego, ogrinfo (summary only)
aparecerá un nuevo script en la caja de herramientas Procesamiento -> Scripts
-> User script
grupo. Se puede ejecutar tal cual o en modo por lotes.
La misma operación es posible para cambiar el tamaño de la longitud del campo, como se describió anteriormente:
##Resize fields=name
##input=vector
##output=output vector
import subprocess
cmd = 'ogr2ogr -lco RESIZE=YES ' + output + ' ' + input
subprocess.check_call(cmd, shell=True)
Un nuevo script llamado Resize fields
estará disponible en la caja de herramientas Procesamiento -> Scripts
-> User scripts
grupo. ¡Disfrútala!