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 FORcycle 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.txtfichier).
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' RESIZEoption 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 scriptgroupe. 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 fieldssera disponible dans la boîte à outils Traitement -> Scripts-> User scriptsgroupe. Profitez-en!