Daten an ogr2ogr weiterleiten

10

Ist es möglich, Daten direkt an weiterzuleiten ogr2ogr? Ich versuche, curleine GeoJSON-Datei zu erstellen und ogr2ogrsie an ein anderes Format weiterzuleiten.

Ohne Verwendung einer Pipe konnte ich dies erreichen, indem ich zuerst eine Datei schrieb und sie dann mit dem folgenden Befehl konvertierte. Ich bin jedoch gespannt, ob es möglich ist, diesen Schritt zu überspringen.

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

Ich habe auch versucht, eine Variable mit der Curl-Ausgabe zu erstellen, anstatt sie weiterzuleiten, konnte sie jedoch ogr2ogrnicht lesen:

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
jczaplew
quelle

Antworten:

18

OGR hat eine eigene Sprache für stdin , /vsistdin/. Verwenden Sie dies als erstes Argument von ogr2ogr (dst_datasource_name), und Sie können die Ausgabe von curl an dieses weiterleiten:

curl "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson" | ogr2ogr -f "KML" countries.kml /vsistdin/
sgillies
quelle
2
Zumindest unter Windows funktioniert es auch so: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpAndere Beispiele unter trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184
8

Sie können URLs als Pfade zu OGR-Datenquellen verwenden, sodass Sie keine Locken oder Pipes benötigen.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson
Mike T.
quelle
1
Das ist großartig! Ich hatte keine Ahnung, dass das eine Möglichkeit war. Dies ist eine sauberere Lösung als die akzeptierte Antwort, aber die Frage betraf ausdrücklich das Einleiten in ogr2ogr.
JCZAPLEW
2
Gut, Mike! Ich würde keinen von ihnen als super sauber bezeichnen (ogr2ogr setzt das Ziel, bevor die Quelle mich nervt). Das Behandeln einer URL als lokale Datei funktioniert ... bis dies nicht mehr der Fall ist. Und Curl hat viele Optionen (ausführlicher Modus, Sicherheit), die ogr2or nicht bietet.
Sgillies
Die zuletzt aufgelisteten Quelldateien sind eine vernünftige Wahl, da es mehrere geben kann.
Steve Bennett