Datos de canalización a ogr2ogr

10

¿Es posible canalizar datos directamente ogr2ogr? Estoy tratando de curlcrear un archivo GeoJSON y canalizarlo ogr2ogrpara convertirlo a otro formato.

Sin usar una tubería, pude lograr esto escribiendo primero un archivo y luego convirtiéndolo con el siguiente comando, pero tengo curiosidad por saber si es posible omitir ese paso.

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

También intenté crear una variable con la salida de rizo en lugar de canalizarla, pero ogr2ogrno pude leerla:

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
fuente

Respuestas:

18

OGR tiene su propio lenguaje de la entrada estándar, /vsistdin/. Use eso como el primer argumento de ogr2ogr (dst_datasource_name) y puede canalizar la salida de curl a él:

curl "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson" | ogr2ogr -f "KML" countries.kml /vsistdin/
sgillies
fuente
2
Al menos en Windows también funciona así: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpOtros ejemplos en trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184
8

Puede usar las URL como rutas a las fuentes de datos de OGR, por lo que no necesita rizos ni tuberías.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson
Mike T
fuente
1
¡Eso es genial! No tenía idea de que era una posibilidad. Esta es una solución más limpia que la respuesta aceptada, pero la pregunta era explícitamente acerca de la conexión ogr2ogr.
jczaplew
2
¡Buena Mike! No llamaría a ninguno de ellos súper limpio (ogr2ogr pone el destino antes de que la fuente me moleste). Tratar una URL como un archivo local funciona ... hasta que no lo haga. Y curl tiene muchas opciones (modo detallado, seguridad) que ogr2or no tiene.
sgillies
Los archivos de origen que se enumeran en último lugar son una opción razonable, porque puede haber más de uno.
Steve Bennett