Piping dei dati su ogr2ogr


10

È possibile reindirizzare direttamente i dati ogr2ogr? Sto provando curlun file GeoJSON e lo ogr2ogrinstallo per convertirlo in un altro formato.

Senza usare una pipe, sono stato in grado di raggiungere questo obiettivo scrivendo prima un file e poi convertendolo utilizzando il seguente comando, ma sono curioso di sapere se è possibile saltare quel passaggio.

curl "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson" -o "countries.geojson" && ogr2ogr -f "KML" countries.kml countries.geojson

Ho anche provato a creare una variabile con l'output di arricciatura invece di eseguirne il piping, ma ogr2ogrnon sono riuscito a leggerlo:

DATA=$(curl -s "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson") && ogr2ogr -f "KML" countries.kml $DATA

Risposte:


18

OGR ha un proprio linguaggio per stdin, /vsistdin/. Usalo come primo argomento di ogr2ogr (dst_datasource_name) e puoi reindirizzare l'output del ricciolo:

curl "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson" | ogr2ogr -f "KML" countries.kml /vsistdin/

2
Almeno su Windows funziona anche così: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpAltri esempi su trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184

8

Puoi utilizzare gli URL come percorsi per le origini dati OGR, quindi non hai bisogno di arricciature o tubi.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson

1
È fantastico! Non avevo idea che fosse una possibilità. Questa è una soluzione più pulita della risposta accettata, ma la domanda riguardava esplicitamente il piping ogr2ogr.
jczaplew,

2
Bene, Mike! Non definirei nessuno dei due super pulito (ogr2ogr sta mettendo la destinazione prima che la fonte mi dia fastidio). Trattare un URL come un file locale funziona ... fino a quando non lo fa. E curl ha molte opzioni (modalità dettagliata, sicurezza) che ogr2or non ha.
sgillies,

I file di origine elencati per ultimi sono una scelta ragionevole, perché possono essercene più di uno.
Steve Bennett,
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.