ogr2ogr에 파이핑 데이터


10

데이터를 직접 파이프 할 수 ogr2ogr있습니까? curlGeoJSON 파일을 만들고 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 데이터 소스의 경로로 사용할 수 있으므로 컬이나 파이프가 필요하지 않습니다.

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에는 ogr2or 가하지 않는 많은 옵션 (verbose 모드, 보안)이 있습니다.
sgillies

마지막에 나열된 소스 파일은 둘 이상이있을 수 있으므로 합리적인 선택입니다.
Steve Bennett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.