Selezione delle caratteristiche per attributi usando ogr2ogr?


17

Sto scrivendo uno shapefile dopo qualche elaborazione; tuttavia, nel passaggio finale devo fare una selezione per attributi dal file di forma.

Sto usando il comando in una shell con l'obiettivo di usarlo in uno script Python quando funziona.

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

Ricevo il messaggio di errore:

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

Cosa potrei fare di sbagliato?


È davvero il messaggio esatto per quel comando?
BradHards,

Risposte:


30

Ti manca un segno meno prima wheree selectnon è necessario, quindi dovrebbe essere:

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

o se devi fare query più complesse sui tuoi dati di input:

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

Se IDè un campo di tipo intero, sostituirlo ID='1'con ID=1.

Appunti:

  1. -f "ESRI Shapefile"non è necessario perché "ESRI Shapefile"è il ogr2ogrformato di output predefinito;
  2. è conveniente saltare -selecte utilizzare direttamente la -whereclausola quando si desidera selezionare tutti i campi.

1
Molte grazie funziona. Sto usando: ogr2ogr -where "ID = '1'" output.shp input.shp
user2757128

Come posso usare questo codice: ogr2ogr -sql "SELECT * FROM infile WHERE ID = '1'" outfile.shp infile.shp "in python?
Shiuli Pervin

1
@ShiuliPervin puoi usare l'istruzione in python usando os.system('''ogr2ogr ... ''') . assicurati di essere import osin cima alla tua sceneggiatura di Python
geoeye,

@afalciano, per l'affermazione ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpanziché solo ID = 1 esiste un modo per fornire un vettore o un insieme di numeri, ad esempio ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp?
hlm

@afalciano un'altra cosa ... invece di scrivere un altro file shp, c'è un modo per ottenere le coordinate dei poligoni ID selezionati?
hlm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.