Chọn tính năng theo thuộc tính bằng ogr2ogr?


17

Tôi đang viết một shapefile sau khi xử lý; tuy nhiên, trong bước cuối cùng tôi cần thực hiện một số lựa chọn theo các thuộc tính từ shapefile.

Tôi đang sử dụng lệnh trong shell với mục đích sử dụng nó trong tập lệnh Python khi nó hoạt động.

ogr2ogr -f "ESRI Shapefile" -select * where ID="1" outfile.shp infile.shp

Tôi nhận được thông báo lỗi:

FAILURE: 
Unable to open datasource `Downloads' with the following drivers.

Tôi có thể làm gì sai?


Đó thực sự là thông điệp chính xác cho lệnh đó?
BradHards

Câu trả lời:


30

Bạn bỏ lỡ một dấu trừ trước đó whereselectkhông cần thiết, vì vậy nó phải là:

ogr2ogr -where ID="1" outfile.shp infile.shp

hoặc nếu bạn phải thực hiện truy vấn phức tạp hơn trên dữ liệu đầu vào của mình:

ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shp

Nếu IDlà một trường kiểu Integer, thay thế ID='1'bằng ID=1.

Ghi chú:

  1. -f "ESRI Shapefile"không cần thiết vì "ESRI Shapefile"ogr2ogrđịnh dạng đầu ra mặc định;
  2. Thật tiện lợi khi bỏ qua -selectvà sử dụng trực tiếp -wheremệnh đề khi bạn muốn chọn tất cả các trường.

1
Rất cám ơn nó hoạt động. Tôi đang sử dụng: ogr2ogr -where "ID = '1'" output.shp input.shp
user2757128

Làm cách nào tôi có thể sử dụng mã này: ogr2ogr -sql "CHỌN * TỪ infile ID WHERE = '1'" outfile.shp infile.shp "trong python?
Shiuli Pervin

1
@ShiuliPervin bạn có thể sử dụng câu lệnh trong python bằng cách sử dụng os.system('''ogr2ogr ... ''') . hãy chắc chắn import osở đầu tập lệnh python của bạn
Geoeye

@afalciano, đối với câu lệnh ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpthay vì chỉ ID = 1, có cách nào để cung cấp một vectơ hoặc một tập hợp số thay vào đó không, ví dụ ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp?
hlm

@afalciano một điều khác ... thay vì viết ra một tệp shp khác, có cách nào để lấy tọa độ của các đa giác ID đã chọn không?
hlm
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.