Solution shell OSGeo4W
À mon humble avis, le moyen le plus simple d'extraire les propriétés de la table d'attributs ( schéma ) consiste à ouvrir le shell OSGeo4W (parce que vous êtes sur win os), à changer de répertoire dans votre dossier de données et à taper simplement quelque chose comme:
ogrinfo -so inputLayerName.shp inputLayerName
Il vous montrera les informations récapitulatives telles que la projection, le schéma , le nombre de fonctionnalités et les étendues. Ensuite, parce que vous avez un tas de fichiers de formes, vous pouvez faire un FOR
cycle comme celui-ci:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf >> properties.txt
Cela retourne un fichier txt avec les propriétés de tous les fichiers de formes dans un répertoire (car la redirection de sortie avec >>
ajoute chaque sortie unique au properties.txt
fichier).
Alternativement, si vous êtes intéressé par un fichier de propriétés pour chaque fichier de formes:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf > %~nf_properties.txt
Concernant la standardisation, il existe plusieurs techniques. Je vous suggère d'utiliser l' RESIZE
option de création de calque après la fusion afin de redimensionner les champs à leur taille optimale (par exemple, les champs de texte avec une longueur excessive seront raccourcis). Par exemple:
ogr2ogr -lco RESIZE=yes merge_resized.shp merge.shp
Solution de script de traitement
Ouvrez la boîte à outils Traitement dans QGIS, créez un nouveau script (en cliquant sur Scripts
-> Tools
-> Create new script
) et tapez:
##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)
Enregistrez-le comme vous le souhaitez, par exemple ogrinfo_so.py
. Ensuite, un nouveau script ogrinfo (summary only)
apparaîtra dans la boîte à outils Traitement -> Scripts
-> User script
groupe. Il peut être exécuté tel quel ou en mode batch.
La même opération est possible afin de redimensionner la longueur du champ, comme décrit précédemment:
##Resize fields=name
##input=vector
##output=output vector
import subprocess
cmd = 'ogr2ogr -lco RESIZE=YES ' + output + ' ' + input
subprocess.check_call(cmd, shell=True)
Un nouveau script appelé Resize fields
sera disponible dans la boîte à outils Traitement -> Scripts
-> User scripts
groupe. Profitez-en!