Передача данных в ogr2ogr

10

Можно ли напрямую передать данные ogr2ogr? Я пытаюсь curlсоздать файл GeoJSON и ogr2ogrпередать его в другой формат.

Без использования канала я смог добиться этого, сначала написав файл, а затем преобразовав его с помощью следующей команды, но мне любопытно, можно ли пропустить этот шаг.

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

Я также попытался создать переменную с выводом curl вместо конвейера, но ogr2ogrне смог прочитать ее:

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
источник

Ответы:

18

У OGR есть своя идиома для стандартного ввода /vsistdin/. Используйте это в качестве первого аргумента ogr2ogr (dst_datasource_name), и вы можете направить вывод 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
источник
2
По крайней мере, в Windows это работает также так: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpДругие примеры на trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184
8

Вы можете использовать URL-адреса в качестве путей к источникам данных OGR, поэтому вам не нужны скручивание или каналы.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson
Майк Т
источник
1
Это потрясающе! Я понятия не имел, что это возможно. Это более чистое решение, чем принятый ответ, но вопрос был явно о том, чтобы обойтись ogr2ogr.
jczaplew
2
Молодец, Майк! Я бы не назвал ни одного из них супер чистым (ogr2ogr указывает место назначения до того, как исходный код доставит меня). Обработка URL как локального файла работает ... до тех пор, пока это не так. И у curl есть много опций (подробный режим, безопасность), которых нет в ogr2or.
sgillies
Исходные файлы, перечисленные последними, являются разумным выбором, поскольку их может быть несколько.
Стив Беннетт