Canalizando dados para ogr2ogr

10

É possível canalizar dados diretamente para ogr2ogr? Estou tentando curlum arquivo GeoJSON e canalizá-lo para encobri- ogr2ogrlo em outro formato.

Sem usar um canal, consegui isso primeiro escrevendo um arquivo e depois convertendo-o usando o seguinte comando, mas estou curioso para saber se é possível pular essa etapa.

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

Também tentei criar uma variável com a saída curl em vez de canalizá-la, mas ogr2ogrnão consegui lê-la:

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
fonte

Respostas:

18

OGR tem seu próprio idioma para stdin /vsistdin/,. Use isso como o primeiro argumento do ogr2ogr (o dst_datasource_name) e você pode canalizar a saída do curl para ele:

curl "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson" | ogr2ogr -f "KML" countries.kml /vsistdin/
sgillies
fonte
2
Pelo menos no Windows também funciona assim: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpOutros exemplos na trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184
8

Você pode usar URLs como caminhos para fontes de dados OGR, para não precisar de curl ou pipes.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson
Mike T
fonte
1
Fantástico! Eu não tinha ideia de que era uma possibilidade. Esta é uma solução mais limpa que a resposta aceita, mas a pergunta era explicitamente sobre a canalização ogr2ogr.
jczaplew
2
Bom, Mike! Eu não chamaria nenhum deles de super limpo (ogr2ogr colocando o destino antes que a fonte me incomodasse). Tratar uma URL como um arquivo local funciona ... até que não funcione. E o curl tem muitas opções (modo detalhado, segurança) que o ogr2or não possui.
sgillies
Os arquivos de origem listados por último são uma escolha razoável, porque pode haver mais de um.
Steve Bennett