ST_MakeLine возвращает неподдерживаемые геометрии, не отображаемые в средстве просмотра геометрии
Я пытаюсь запустить запрос ST_MakeLine, который вернет кратчайшее расстояние между заданными координатами. Код выглядит следующим образом:
SELECT ST_MakeLine(route.geom) as test
FROM (SELECT *
FROM pgr_fromAtoB('roads2_noded',73.1789,33.5183,73.1768,33.5191)
ORDER BY seq
) As route
Результат выглядит так:

ясно, что результат не показывает null. Но когда я просматриваю его в средстве просмотра геометрии, он дает следующее сообщение:

Может ли кто-нибудь сказать мне, что означает это сообщение и как я могу найти способ решения этой проблемы? Тип геометрии моего шейп-файла дорог - MULTILINESTRING.
St_AsText (route.geom) показывает следующий результат:
SELECT ST_AsText( ST_MakeLine(route.geom)) FROM (SELECT *FROM pgr_fromAtoB('roads2_noded',73.1789,33.5183,73.1768,33.5191)
ORDER BY seq
) As route

Использование простого Select from pgr_fromAtoB дает:
SELECT * FROM pgr_fromAtoB('roads2_noded',73.1789,33.5183,73.1768,33.5191) ORDER BY seq

Road2_noded - это шейп-файл дорог, над которым я работаю, показанный ниже:


Ответы
Функции pg_Routing нельзя использовать для MultiLineStrings. Поэтому сначала создайте новую таблицу со всеми записями данных таблицы Road2. Затем добавьте столбцы дорог2 в новую таблицу. Например, id, sub_id, name, distance, geom и т. Д. Затем используйте следующий запрос, чтобы преобразовать геометрию MultiLineString дорог2 в LineString.
ALTER TABLE my_table
ALTER COLUMN geom TYPE geometry(linestring,4326) USING ST_GeometryN(geom, 1);
После этого добавьте в новую таблицу столбец geom дорог2. После этого примените запросы дорожной сети и топологии, то есть pgr_nodeNetwork и pgr_createTopology, и создайте функцию pgr_fromAtoB Затем запустите запрос ST_MakeLine:
SELECT ST_MakeLine(route.geom) as test
FROM (SELECT *
FROM pgr_fromAtoB('my_table_noded',73.1789,33.5183,73.1768,33.5191)
ORDER BY seq
) As route
Результат покажет геометрию:
