Вибір функцій за атрибутами за допомогою ogr2ogr?


17

Я пишу формуфайл після деякої обробки; однак на завершальному кроці мені потрібно зробити деякий вибір за атрибутами з filefile.

Я використовую команду в оболонці з метою використання її в сценарії Python, коли вона працює.

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

Я отримую повідомлення про помилку:

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

Що я можу зробити неправильно?


Це дійсно точне повідомлення для цієї команди?
BradHards

Відповіді:


30

Ви пропускаєте знак мінус раніше, whereа значення selectне обов’язково, тому воно повинно бути:

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

або якщо вам потрібно зробити більш складний запит на вхідні дані:

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

Якщо IDце поле типу Integer, замініть ID='1'на ID=1.

Примітки:

  1. -f "ESRI Shapefile"не є необхідним, оскільки "ESRI Shapefile"це ogr2ogrвихідний формат за замовчуванням;
  2. зручно пропустити -selectта використовувати безпосередньо -whereпункт, коли потрібно вибрати всі поля.

1
Велике спасибі це працює. Я використовую: ogr2ogr -where "ID = '1" "output.shp input.shp
user2757128

Як я можу скористатись цим кодом: ogr2ogr -sql "ВИБРАТИ * З інфайла WHERE ID = '1'" outfile.shp infile.shp "у python?
Шиулі Первін

1
@ShiuliPervin ви можете використовувати оператор у python, використовуючи os.system('''ogr2ogr ... ''') . будьте впевнені import osу верхній частині сценарію python
geoeye

@afalciano, для висловлювання ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpзамість просто ID = 1 є спосіб надати натомість вектор або набір чисел, наприклад ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp?
хлм

@afalciano ще одна річ ... замість того, щоб виписати ще один файл shp, чи існує спосіб отримати координати вибраних полігонів ідентифікатора?
хлм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.