Temukan sub-baris, diberi offset awal dan akhir, melalui baris perintah

Aug 19 2020

Saya memiliki file CSV yang pada dasarnya terlihat seperti ini:

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)"

Ini terdiri dari rekaman dengan cincin lapisan WKT. Beberapa WKT muncul beberapa kali dan geometri sebenarnya harus diperoleh dari linestring menggunakan offset awal dan akhir (panjang dalam meter sepanjang garis) di kolomnya masing-masing.

Saya ingin mengekstrak sublinestrings berdasarkan offset panjang ini. Apakah ini mungkin melalui alat baris perintah seperti OGR?

Jawaban

Socci Aug 18 2020 at 22:08

Setelah beberapa penelitian, saya memang menemukan solusi, dengan menggunakan 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"

Memberikan

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"