OSGeo4W-Shell-Lösung
IMHO besteht der einfachste Weg, die Eigenschaften der Attributtabelle ( Schema ) zu extrahieren, darin, die OSGeo4W-Shell zu öffnen (weil Sie auf Win OS sind), das Verzeichnis in Ihren Datenordner zu ändern und einfach Folgendes einzugeben:
ogrinfo -so inputLayerName.shp inputLayerName
Es zeigt Ihnen die zusammenfassenden Informationen wie Projektion, Schema , Anzahl der Features und Ausmaße. Da Sie dann eine Reihe von Shapefiles haben, können Sie einen FOR
Zyklus wie den folgenden ausführen :
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf >> properties.txt
Dies gibt eine txt-Datei mit den Eigenschaften aller Shapefiles in einem Verzeichnis zurück (da bei der Ausgabeumleitung mit >>
jede einzelne Ausgabe an die properties.txt
Datei angehängt wird ).
Alternativ, wenn Sie an einer Eigenschaftendatei für jedes Shapefile interessiert sind:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf > %~nf_properties.txt
Über die Standardisierung gibt es verschiedene Techniken. Ich empfehle Ihnen, die RESIZE
Option zum Erstellen von Ebenen nach dem Zusammenführen zu verwenden, um die Größe der Felder auf ihre optimale Größe zu ändern (z. B. werden Textfelder mit übermäßiger Länge gekürzt). Zum Beispiel:
ogr2ogr -lco RESIZE=yes merge_resized.shp merge.shp
Skriptlösung verarbeiten
Öffnen Sie die Toolbox "Verarbeitung" in QGIS, erstellen Sie ein neues Skript (klicken Sie auf Scripts
-> Tools
-> Create new script
) und geben Sie Folgendes ein:
##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)
Speichern Sie es wie Sie möchten, z ogrinfo_so.py
. Anschließend ogrinfo (summary only)
wird in der Gruppe Processing Toolbox -> Scripts
-> ein neues Skript angezeigt User script
. Es kann unverändert oder im Batch-Modus ausgeführt werden.
Der gleiche Vorgang ist möglich, um die Feldlänge wie zuvor beschrieben zu ändern:
##Resize fields=name
##input=vector
##output=output vector
import subprocess
cmd = 'ogr2ogr -lco RESIZE=YES ' + output + ' ' + input
subprocess.check_call(cmd, shell=True)
Ein neues Skript mit dem Namen Resize fields
wird in der Gruppe Processing Toolbox -> Scripts
-> verfügbar sein User scripts
. Geniesse es!