명령 줄을 통해 초기 및 최종 오프셋이 지정된 하위 줄 찾기

Aug 19 2020

본질적으로 다음과 같은 CSV 파일이 있습니다.

id,id_wkt,start,end,wkt
11,11,0,43,"LINESTRING(3.3623676 51.3132714,3.3626663 51.3130068,3.363068 51.3126811,3.3636323 51.3122504,3.3640754 51.3119614,3.3643705 51.3117777)"
12,11,43,217,"LINESTRING(3.3623676 51.3132714,3.3626663 51.3130068,3.363068 51.3126811,3.3636323 51.3122504,3.3640754 51.3119614,3.3643705 51.3117777)"

WKT 라인 스트링이있는 레코드로 구성됩니다. WKT 중 일부는 여러 번 나타나며 실제 지오메트리는 각 열의 시작 및 끝 오프셋 (선을 따라 미터 단위의 길이)을 사용하여 선 스트링에서 가져와야합니다.

이러한 길이 오프셋을 기반으로 하위 라인 스트링을 추출하고 싶습니다. OGR과 같은 명령 줄 도구를 통해 가능합니까?

답변

Socci Aug 18 2020 at 22:08

몇 가지 연구 끝에 실제로 ogr2ogr다음을 사용하여 해결책을 찾았습니다 .

ogr2ogr output.csv -lco GEOMETRY=AS_WKT input.csv -dialect SQLITE -sql "SELECT id, id_wkt, ST_Line_Substring(GEOMETRY, start / GeodesicLength(GEOMETRY), end / GeodesicLength(GEOMETRY)) FROM input"

그것은 준다

WKT,id,id_wkt
"LINESTRING (3.3623676 51.3132714,3.3626663 51.3130068,3.36274075608485 51.3129464307024)","11","11"
"LINESTRING (3.36274075608485 51.3129464307024,3.363068 51.3126811,3.3636323 51.3122504,3.3640754 51.3119614,3.36436609040842 51.3117804449745)","12","11"