Giải pháp vỏ OSGeo4W
IMHO cách đơn giản nhất để trích xuất các thuộc tính của bảng thuộc tính ( lược đồ ) bao gồm mở shell OSGeo4W (vì bạn đang dùng win os), thay đổi thư mục vào thư mục dữ liệu của bạn và chỉ cần nhập một cái gì đó như:
ogrinfo -so inputLayerName.shp inputLayerName
Nó sẽ hiển thị cho bạn các thông tin tóm tắt như phép chiếu, lược đồ , số lượng tính năng và phạm vi. Sau đó, vì bạn có một loạt các shapefile, bạn có thể thực hiện một FOR
chu trình như sau:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf >> properties.txt
Điều này trả về một tệp txt với các thuộc tính của tất cả các shapefiles trong một thư mục (vì chuyển hướng đầu ra với việc >>
nối thêm từng đầu ra vào properties.txt
tệp).
Ngoài ra, nếu bạn quan tâm đến một tệp thuộc tính cho mỗi shapefile:
FOR %f IN (*.shp) DO ogrinfo -so %f %~nf > %~nf_properties.txt
Về tiêu chuẩn hóa, có một số kỹ thuật. Tôi khuyên bạn nên sử dụng RESIZE
tùy chọn tạo lớp sau khi hợp nhất để thay đổi kích thước các trường thành kích thước tối ưu của chúng (ví dụ: các trường văn bản có độ dài quá mức sẽ được rút ngắn). Ví dụ:
ogr2ogr -lco RESIZE=yes merge_resized.shp merge.shp
Xử lý giải pháp tập lệnh
Mở hộp công cụ Xử lý trong QGIS, tạo tập lệnh mới (nhấp vào Scripts
-> Tools
-> Create new script
) và nhập:
##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)
Lưu nó như bạn muốn, ví dụ ogrinfo_so.py
. Sau đó, một tập lệnh mới ogrinfo (summary only)
sẽ xuất hiện trong hộp công cụ Xử lý -> Scripts
-> User script
nhóm. Nó có thể được thực thi như nó là hoặc trong chế độ hàng loạt.
Hoạt động tương tự là có thể để thay đổi kích thước chiều dài trường, như được mô tả trước đây:
##Resize fields=name
##input=vector
##output=output vector
import subprocess
cmd = 'ogr2ogr -lco RESIZE=YES ' + output + ' ' + input
subprocess.check_call(cmd, shell=True)
Một tập lệnh mới được gọi Resize fields
sẽ có sẵn trong hộp công cụ Xử lý -> Scripts
-> User scripts
nhóm. Hãy tận hưởng nó!