Komut satırı aracılığıyla ilk ve son ofsetleri verilen alt çizgileri bulun

Aug 19 2020

Esasen şuna benzeyen bir CSV dosyam var:

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 astarlı kayıtlardan oluşur. WKT'lerin bazıları birden çok kez görünür ve gerçek geometri, ilgili sütunlarındaki başlangıç ​​ve bitiş ofsetleri (çizgi boyunca metre cinsinden uzunluk) kullanılarak astardan elde edilmelidir.

Bu uzunluk ofsetlerine dayalı olarak alt yaylar çıkarmak istiyorum. Bu, OGR gibi bir komut satırı aracı ile mümkün müdür?

Yanıtlar

Socci Aug 18 2020 at 22:08

Biraz araştırdıktan sonra, gerçekten de şunu kullanarak bir çözüm buldum 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"

O verir

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"