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

回答:


18

OGRには、stdinの独自のイディオムがあり/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/

2
少なくともWindowsでは次のように動作します:trac.osgeo.org/gdal/wiki/UserDocs/ReadInZipのogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpその他の例
user30184

8

URLをOGRデータソースへのパスとして使用できるため、curlやパイプは必要ありません。

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson

1
すごい!それが可能性があるとは思いもしませんでした。これは受け入れられた回答よりも明確な解決策ですが、問題は明示的ににパイプすることogr2ogrでした。
jczaplew 2014年

2
いいね、マイク!私はそれらのどちらも超クリーンとは呼びません(ソースの前に来るogr2ogrは、ソースが私を悩ませます)。URLをローカルファイルとして扱うことは機能します...機能しなくなります。また、curlにはogr2orにはない多くのオプション(詳細モード、セキュリティ)があります。
sgillies、2014年

最後にリストされているソースファイルは、複数存在する可能性があるため、妥当な選択です。
スティーブベネット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.