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

pgr_fromAtoBからの単純なSelectを使用すると、次のようになります。
SELECT * FROM pgr_fromAtoB('roads2_noded',73.1789,33.5183,73.1768,33.5191) ORDER BY seq

roads2_nodedは、私が取り組んでいる道路のシェープファイルです。


回答
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
結果はジオメトリを表示します:
