Features mit ogr2ogr nach Attributen auswählen?

17

Nach einiger Bearbeitung schreibe ich ein Shapefile. Im letzten Schritt muss ich jedoch einige Attribute aus dem Shapefile auswählen.

Ich benutze den Befehl in einer Shell mit dem Ziel, ihn in einem Python-Skript zu verwenden, wenn es funktioniert.

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

Ich erhalte die Fehlermeldung:

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

Was könnte ich falsch machen?

user2757128
quelle
Ist das wirklich die genaue Nachricht für diesen Befehl?
BradHards

Antworten:

30

Sie haben vorher ein Minuszeichen verpasst whereund das selectist nicht notwendig, also sollte es sein:

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

oder wenn Sie Ihre Eingabedaten komplexer abfragen müssen:

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

Wenn IDes sich um ein Feld vom Typ Integer handelt, ersetzen Sie es ID='1'durch ID=1.

Anmerkungen:

  1. -f "ESRI Shapefile"ist nicht erforderlich, da dies "ESRI Shapefile"das ogr2ogrStandardausgabeformat ist.
  2. Es ist praktisch, -selectdie -whereKlausel zu überspringen und direkt zu verwenden , wenn Sie alle Felder auswählen möchten.
Antonio Falciano
quelle
1
Vielen Dank, es funktioniert. Ich verwende: ogr2ogr -where "ID = '1'" output.shp input.shp
user2757128
Wie kann ich diesen Code verwenden: ogr2ogr -sql "SELECT * FROM infile WHERE ID = '1'" outfile.shp infile.shp "in Python?
Shiuli Pervin
1
@ ShiuliPervin können Sie die Anweisung in Python mit verwenden os.system('''ogr2ogr ... ''') . import os
Stellen Sie
@afalciano, gibt es für die Anweisung ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpanstelle von nur ID = 1 eine Möglichkeit, stattdessen einen Vektor oder eine Reihe von Zahlen anzugeben, z ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp.
hlm
@afalciano eine andere Sache ... Gibt es eine Möglichkeit, anstatt eine andere shp-Datei zu schreiben, nur die Koordinaten der ausgewählten ID-Polygone abzurufen?
hlm