Transfert des données vers ogr2ogr

10

Est-il possible de diriger directement les données vers ogr2ogr? J'essaie de curlcréer un fichier GeoJSON et ogr2ogrde le rediriger vers un autre format.

Sans utiliser de pipe, j'ai pu y parvenir en écrivant d'abord un fichier puis en le convertissant à l'aide de la commande suivante, mais je suis curieux de savoir s'il est possible de sauter cette étape.

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

J'ai également essayé de créer une variable avec la sortie curl au lieu de la canaliser, mais je n'ai ogr2ogrpas pu la lire:

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
la source

Réponses:

18

OGR a son propre idiome pour stdin, /vsistdin/. Utilisez-le comme premier argument d'ogr2ogr (le nom de source_dat_datasource) et vous pouvez lui rediriger la sortie de 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
la source
2
Au moins sur Windows, cela fonctionne aussi comme ceci: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpAutres exemples sur trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184
8

Vous pouvez utiliser des URL comme chemins vers des sources de données OGR, vous n'avez donc pas besoin de boucles ou de canaux.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson
Mike T
la source
1
C'est génial! Je ne savais pas que c'était une possibilité. Il s'agit d'une solution plus propre que la réponse acceptée, mais la question portait explicitement sur la canalisation ogr2ogr.
jczaplew
2
Bien, Mike! Je n'appellerais pas l'un d'eux super propre (ogr2ogr mettant la destination avant la source me bugs). Le traitement d'une URL comme un fichier local fonctionne ... jusqu'à ce que ce ne soit pas le cas. Et curl a beaucoup d'options (mode verbeux, sécurité) que ogr2or n'a pas.
sgillies
Les fichiers source répertoriés en dernier est un choix raisonnable, car il peut y en avoir plusieurs.
Steve Bennett