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을 표시하지 않는 것이 분명합니다. 그러나 Geometry Viewer에서 볼 때 다음 메시지가 표시됩니다.

누군가이 메시지의 의미와이 문제에 대한 해결 방법을 어떻게 찾을 수 있는지 말해 줄 수 있습니까? 내 도로 shapefile의 지오메트리 유형은 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

pgr_fromAtoB에서 단순 선택을 사용하면 다음이 제공됩니다.
SELECT * FROM pgr_fromAtoB('roads2_noded',73.1789,33.5183,73.1768,33.5191) ORDER BY seq

roads2_noded는 아래에서 작업중인 도로 shapefile입니다.


답변
pg_Routing 함수는 MultiLineStrings에 사용할 수 없습니다. 따라서 먼저 roads2 테이블의 모든 데이터 항목으로 새 테이블을 만듭니다. 그런 다음 roads2의 열을 새 테이블에 추가하십시오. 예를 들어 id, sub_id, name, distance, geom 등입니다. 그런 다음 다음 쿼리를 사용하여 roads2의 MultiLineString 도형을 LineString으로 변환합니다.
ALTER TABLE my_table
ALTER COLUMN geom TYPE geometry(linestring,4326) USING ST_GeometryN(geom, 1);
그 후 roads2의 geom 열을 새 테이블에 추가하십시오. 그런 다음 도로 네트워크 및 토폴로지 쿼리 (예 : 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
결과는 형상을 표시합니다.
