การไพพ์ข้อมูลไปที่ 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 แทนที่จะเป็น piping แต่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 มีสำนวนของตัวเองสำหรับ /vsistdin/stdin, ใช้สิ่งนั้นเป็นอาร์กิวเมนต์แรกของ 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 ก็ใช้งานได้เช่นนี้: ogrinfo -ro -al -so /vsicurl/http://svn.osgeo.org/gdal/trunk/autotest/ogr/data/poly.shpตัวอย่างอื่น ๆ ที่trac.osgeo.org/gdal/wiki/UserDocs/ReadInZip
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

2
เก่งมากไมค์! ฉันจะไม่เรียกพวกเขาทั้งคู่สุดยอดเยี่ยม (ogr2ogr การวางปลายทางมาก่อนแหล่งที่มาจะบั๊กฉัน) การจัดการ URL เป็นไฟล์ภายในเครื่องจะใช้งานได้ ... จนกว่าจะไม่ทำงาน และ curl มีตัวเลือกมากมาย (โหมด verbose, ความปลอดภัย) ที่ ogr2 หรือไม่
sgillies

ไฟล์ต้นฉบับที่อยู่ในรายการสุดท้ายเป็นตัวเลือกที่สมเหตุสมผลเพราะอาจมีได้มากกว่าหนึ่งไฟล์
Steve Bennett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.