Xóa các cột không cần thiết khỏi tệp dữ liệu địa lý?


10

Tôi có một số dữ liệu GML có một số cột không cần thiết trong đó. Tôi muốn xóa các cột này để giảm kích thước tệp. (Để làm rõ: Tôi có nghĩa là tệp có nhiều điểm trong đó và mỗi điểm này có một số siêu dữ liệu được đính kèm và tôi không cần tất cả siêu dữ liệu.)

Tôi cũng muốn làm điều này từ dòng lệnh, vì tôi có nhiều tệp.

Tôi có thể chuyển đổi các tệp GML thành các định dạng khác nhau bằng cách sử dụng ogr2ogr, vì vậy câu hỏi của tôi là: cách dễ nhất để xóa một cột khỏi tệp dữ liệu địa lý, từ dòng lệnh?

Tôi là một lập trình viên Python nên bản năng của tôi là chuyển đổi tệp thành GeoJSON, sau đó sử dụng các phương pháp phân tích cú pháp JSON của Python để đọc và viết lại tệp JSON.

Nhưng có lẽ có một cách trực tiếp hơn, sử dụng công cụ GDAL hoặc tương tự.

Câu trả lời:


10

Shapefile dưới dạng định dạng tệp tạm thời là không cần thiết và nó cũng có thể thay đổi dữ liệu GML (rút ngắn tên thuộc tính, cắt chuỗi thành tối đa 255 ký tự, thay đổi DATETIME thành DATE, v.v.)

Tôi sẽ sử dụng ogr2ogr không phải bằng cách loại bỏ các thuộc tính không mong muốn mà bằng cách chọn những thuộc tính mong muốn. Phương ngữ SQLite SQL là tiêu chuẩn hơn phương ngữ OGR mặc định, đó là lý do tại sao tôi sử dụng nó thậm chí không cần thiết cho truy vấn này.

ogr2ogr -f GML -dialect SQLite -sql "SELECT attr1, attr2, attr3,... FROM layer" output.gml input.gml

9

Bạn có thể xóa một trường bằng OGR SQL và chọn định dạng OGR hỗ trợ xóa trường. Thật không may, GML không hỗ trợ nó, vì vậy bạn phải chuyển qua một định dạng khác, ví dụ SHP:

ogr2ogr temp.shp input.gml
ogrinfo temp.shp -sql "ALTER TABLE temp DROP COLUMN field_to_drop"
ogr2ogr -f GML output.gml temp.shp

Tôi đã có thể làm một điều đơn giản hơn, tương tự với trình điều khiển GeoJSON; ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" Lưu ý việc sử dụng tên tệp dưới dạng bảng để THAY ĐỔI.
vpipkt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.