Я пишу шейп-файл после некоторой обработки; однако, на последнем шаге мне нужно сделать выборку по атрибутам из шейп-файла.
Я использую команду в оболочке с целью использования ее в скрипте Python, когда она работает.
ogr2ogr -f "ESRI Shapefile" -select * where ID="1" outfile.shp infile.shp
Я получаю сообщение об ошибке:
FAILURE:
Unable to open datasource `Downloads' with the following drivers.
Что я могу делать не так?
Ответы:
Вы пропускаете знак минус
where
и раньше, иselect
это не обязательно, поэтому должно быть:или если вам нужно сделать более сложный запрос к вашим входным данным:
Если
ID
это поле типа Integer, заменитьID='1'
наID=1
.Примечания:
-f "ESRI Shapefile"
не требуется, потому что"ESRI Shapefile"
этоogr2ogr
выходной формат по умолчанию;-select
и использовать предложение непосредственно-where
, когда вы хотите выбрать все поля.источник
os.system('''ogr2ogr ... ''')
. обязательноimport os
в верхней части вашего сценария Pythonogr2ogr -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
?