Pemipaan data ke ogr2ogr

10

Apakah mungkin untuk langsung mengirim data ke pipa ogr2ogr? Saya mencoba untuk curlfile GeoJSON dan pipa ogr2ogruntuk menyamarkannya ke format lain.

Tanpa menggunakan pipa, saya bisa mencapai ini dengan terlebih dahulu menulis file dan kemudian mengonversinya menggunakan perintah berikut, tapi saya ingin tahu apakah mungkin untuk melewati langkah itu.

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

Saya juga mencoba membuat variabel dengan output curl alih-alih memipangnya, tetapi ogr2ogrtidak dapat membacanya:

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
sumber

Jawaban:

18

OGR memiliki idiom tersendiri untuk stdin /vsistdin/,. Gunakan itu sebagai argumen pertama ogr2ogr (the dst_datasource_name) dan Anda dapat mem-pipe output curl ke sana:

curl "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson" | ogr2ogr -f "KML" countries.kml /vsistdin/
sgillies
sumber
2
Setidaknya pada Windows berfungsi juga seperti ini: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpContoh lain di trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
user30184
8

Anda dapat menggunakan URL sebagai jalur ke sumber data OGR, sehingga Anda tidak perlu menggulung atau memotong.

ogr2ogr -f KML countries.kml https://raw.githubusercontent.com/nvkelso/natural-earth-vector/master/geojson/ne_50m_admin_0_countries.geojson
Mike T
sumber
1
Itu luar biasa! Saya tidak tahu itu kemungkinan. Ini adalah solusi yang lebih bersih daripada jawaban yang diterima, tetapi pertanyaannya secara eksplisit tentang penyaringan ogr2ogr.
jczaplew
2
Bagus, Mike! Saya tidak akan menyebut salah satu dari mereka super bersih (ogr2ogr menempatkan tujuan sebelum sumber mengganggu saya). Memperlakukan URL sebagai file lokal berfungsi ... sampai tidak. Dan curl memiliki banyak opsi (mode verbose, keamanan) yang tidak dimiliki ogr2 atau tidak.
sgillies
File sumber yang terdaftar terakhir adalah pilihan yang masuk akal, karena mungkin ada lebih dari satu.
Steve Bennett