Selecionando recursos por atributos usando ogr2ogr?


17

Estou escrevendo um shapefile após algum processamento; no entanto, na etapa final, preciso fazer uma seleção por atributos do shapefile.

Estou usando o comando em um shell com o objetivo de usá-lo em um script Python quando ele funciona.

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

Estou recebendo a mensagem de erro:

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

O que eu poderia estar fazendo de errado?


Essa é realmente a mensagem exata para esse comando?
BradHards

Respostas:


30

Você perdeu um sinal de menos antes wheree o selectnão é necessário; portanto, deve ser:

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

ou se você precisar fazer uma consulta mais complexa nos dados de entrada:

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

Se IDfor um campo do tipo Inteiro, substitua ID='1'por ID=1.

Notas:

  1. -f "ESRI Shapefile"não é necessário porque "ESRI Shapefile"é o ogr2ogrformato de saída padrão;
  2. é conveniente pular -selecte usar diretamente a -wherecláusula quando você quiser selecionar todos os campos.

1
Muito obrigado, funciona. Estou usando: ogr2ogr -where "ID = '1'" output.shp input.shp
user2757128

Como posso usar este código: ogr2ogr -sql "SELECT * FROM infile WHERE ID = '1'" outfile.shp infile.shp "em python?
Shiuli Pervin

1
@ShiuliPervin, você pode usar a instrução em python usando os.system('''ogr2ogr ... ''') . certifique-se import osno topo do seu script python
GeoEye

@afalciano, para a declaração em ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpvez de apenas ID = 1, existe uma maneira de fornecer um vetor ou um conjunto de números, por exemplo ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp?
Hlm

@afalciano mais uma coisa ... em vez de escrever outro arquivo shp, existe uma maneira de obter apenas as coordenadas dos polígonos de identificação selecionados?
Hlm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.