Piszę plik kształtu po pewnym przetworzeniu; jednak w ostatnim kroku muszę dokonać wyboru według atrybutów z pliku kształtu.
Korzystam z polecenia w powłoce w celu użycia go w skrypcie Python, gdy działa.
ogr2ogr -f "ESRI Shapefile" -select * where ID="1" outfile.shp infile.shp
Otrzymuję komunikat o błędzie:
FAILURE:
Unable to open datasource `Downloads' with the following drivers.
Co mogę zrobić źle?
Odpowiedzi:
Wcześniej brakuje znaku minus
where
iselect
nie jest to konieczne, więc powinno być:lub jeśli musisz wykonać bardziej złożone zapytanie dotyczące danych wejściowych:
Jeśli
ID
jest to pole typu Integer, substytutID='1'
zID=1
.Uwagi:
-f "ESRI Shapefile"
nie jest konieczne, ponieważ"ESRI Shapefile"
jest toogr2ogr
domyślny format wyjściowy;-select
i użyć bezpośrednio-where
klauzuli, gdy chcesz zaznaczyć wszystkie pola.źródło
os.system('''ogr2ogr ... ''')
. pamiętaj, abyimport os
u góry skryptu pythonogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shp
zamiast samego ID = 1 istnieje sposób na podanie wektora lub zestawu liczb, np.ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp
?