Przesyłanie danych do ogr2ogr

10

Czy można bezpośrednio przesyłać dane do potoku ogr2ogr? Próbuję curlutworzyć plik GeoJSON i potokować go w ogr2ogrcelu ukrycia go w innym formacie.

Bez użycia potoku byłem w stanie to osiągnąć, najpierw pisząc plik, a następnie konwertując go za pomocą następującego polecenia, ale jestem ciekawy, czy można pominąć ten krok.

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

Próbowałem również utworzyć zmienną z wyjściem curl zamiast potokować, ale ogr2ogrnie byłem w stanie odczytać:

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
źródło

Odpowiedzi:

18

OGR ma swój własny idiom dla stdin /vsistdin/. Użyj tego jako pierwszego argumentu ogr2ogr (dst_datasource_name) i możesz do niego przesyłać dane wyjściowe curl:

curl "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson" | ogr2ogr -f "KML" countries.kml /vsistdin/
sgillies
źródło
2
Przynajmniej w systemie Windows działa również tak: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpInne przykłady na trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184
8

Możesz używać adresów URL jako ścieżek do źródeł danych OGR, więc nie potrzebujesz zawijania ani potoków.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson
Mike T.
źródło
1
To cudownie! Nie miałem pojęcia, że ​​to jest możliwe. Jest to czystsze rozwiązanie niż zaakceptowana odpowiedź, ale pytanie dotyczyło bezpośrednio instalacji ogr2ogr.
jczaplew
2
Dobra, Mike! Nie nazwałbym żadnego z nich super czystym (ogr2ogr umieszczenie miejsca docelowego poprzedzającego źródło błędów mnie). Traktowanie adresu URL jako pliku lokalnego działa ... dopóki tak się nie stanie. A curl ma wiele opcji (tryb gadatliwy, bezpieczeństwo), których nie ma ogr2or.
sgillies
Lista plików źródłowych wymienionych na końcu jest rozsądnym wyborem, ponieważ może być ich więcej niż jeden.
Steve Bennett