¿Seleccionar características por atributos utilizando ogr2ogr?

17

Estoy escribiendo un archivo de forma después de algún procesamiento; sin embargo, en el paso final necesito hacer una selección por atributos del archivo de forma.

Estoy usando el comando en un shell con el objetivo de usarlo en un script de Python cuando funciona.

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

Recibo el mensaje de error:

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

¿Qué podría estar haciendo mal?

usuario2757128
fuente
¿Es ese realmente el mensaje exacto para ese comando?
BradHards

Respuestas:

30

Omite un signo menos antes wherey selectno es necesario, por lo que debería ser:

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

o si tiene que hacer una consulta más compleja en sus datos de entrada:

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

Si IDes un campo de tipo entero, sustitúyalo ID='1'por ID=1.

Notas:

  1. -f "ESRI Shapefile"no es necesario porque "ESRI Shapefile"es el ogr2ogrformato de salida predeterminado;
  2. Es conveniente omitir -selecty utilizar directamente la -wherecláusula cuando desee seleccionar todos los campos.
Antonio Falciano
fuente
1
Muchas gracias funciona. Estoy usando: ogr2ogr -where "ID = '1'" output.shp input.shp
user2757128
¿Cómo puedo utilizar este código: ogr2ogr -SQL "SELECT * FROM archivoentrada donde id = '1'" infile.shp outfile.shp" en Python?
shiuli Pervin
1
@ShiuliPervin puede usar la declaración en python usando os.system('''ogr2ogr ... ''') . asegúrese de estar import osen la parte superior de su script de python
geoeye
@afalciano, para la declaración en ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shplugar de solo ID = 1, ¿hay alguna manera de proporcionar un vector o un conjunto de números, por ejemplo ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp?
hlm
@afalciano otra cosa ... en lugar de escribir otro archivo shp, ¿hay alguna manera de obtener las coordenadas de los polígonos ID seleccionados?
hlm