Solusi shell OSGeo4W
IMHO cara termudah untuk mengekstrak properti tabel atribut ( skema ) terdiri dari membuka shell OSGeo4W (karena Anda sedang menang os), ubah direktori ke folder data Anda dan cukup ketik sesuatu seperti:
ogrinfo -so inputLayerName.shp inputLayerName
Ini akan menunjukkan kepada Anda informasi ringkasan seperti proyeksi, skema , jumlah fitur dan luasan. Kemudian, karena Anda memiliki banyak shapefile, Anda dapat melakukan FOR
siklus seperti berikut ini:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf >> properties.txt
Ini mengembalikan satu file txt dengan properti semua shapefile dalam direktori (karena pengalihan output dengan >>
menambahkan setiap output tunggal ke properties.txt
file).
Atau, jika Anda tertarik pada satu file properti untuk setiap shapefile:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf > %~nf_properties.txt
Tentang standardisasi, ada beberapa teknik. Saya menyarankan Anda untuk menggunakan RESIZE
opsi pembuatan lapisan setelah penggabungan untuk mengubah ukuran bidang ke ukuran optimal (misalnya bidang teks dengan panjang yang berlebihan akan dipersingkat). Contohnya:
ogr2ogr -lco RESIZE=yes merge_resized.shp merge.shp
Memproses solusi skrip
Buka kotak alat Pemrosesan di QGIS, buat skrip baru (mengklik Scripts
-> Tools
-> Create new script
) dan ketik:
##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)
Simpan sesuai keinginan Anda, mis ogrinfo_so.py
. Kemudian, skrip baru ogrinfo (summary only)
akan muncul di kotak alat Pemrosesan -> Scripts
-> User script
grup. Itu dapat dieksekusi seperti itu atau dalam mode batch.
Operasi yang sama dimungkinkan untuk mengubah ukuran panjang bidang, seperti dijelaskan sebelumnya:
##Resize fields=name
##input=vector
##output=output vector
import subprocess
cmd = 'ogr2ogr -lco RESIZE=YES ' + output + ' ' + input
subprocess.check_call(cmd, shell=True)
Sebuah skrip baru yang disebut Resize fields
akan tersedia di kotak toolbox Pemrosesan -> Scripts
-> User scripts
. Bersenang senang lah!