Как использовать st_Line_Locate_Point () с MULTILINESTRING преобразованием в PostGIS? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь получить индексную позицию POINT в MULTILINESTRING.

Вот весь запрос, с которым я застрял:

SELECT req.id, (dp).geom, netgeo_point_tech.id, ST_Line_Locate_Point(st_lineMerge(geom_cable), (dp).geom)
FROM (SELECT id, ST_DumpPoints(geom) as dp, geom as geom_cable FROM netgeo_cable_test ) as req
JOIN netgeo_point_tech ON ST_dwithin(netgeo_point_tech.geom, (dp).geom, 1) 
ORDER BY req.id, (dp).path [ 1] ASC

Я получаю ошибку: line_locate_point : 1st arg isnt a line.

Ошибка связана с возвратом функции st_lineMerge(), которая возвращает LINESTRING, но также MULTILINESTRING. Я не понимаю этого. st_lineMerge() должен возвращать только LINESTRING. ST_LineMerge ()

Когда я просто пытаюсь выполнить простой запрос, подобный этому:

select st_astext(st_linemerge(geom)) from netgeo_cable_test 

Вывод:

img)

Я хочу извлечь уроки из этого, поэтому, если возможно, объясните мне, что я здесь делаю неправильно, или, если мой подход не хватает понимания.

...