Postgis合并和线串的顺序

Mir*_*vic 2 postgis kml multilinestring

KML在我的数据库中导入了一个文件postgis.当我选择一条道路时,我得到了正确的结果:这是一条道路.没有很多行,所以我可以手动订购,但有些道路有100多个.

kml导入

所以我想在导入时订购线串.

我有这个 :

线串

1 - 我想合并线串.有可能ST_Union做到这一点,但如果我现在这样做,结果是非常奇怪的,这就是为什么我必须订购线.

2 - 所以我必须订购线串,这就是我在表格中有一个列位置的原因.我知道如何获得线串的结束和第一点.

当我这样做:

SELECT ST_AsText(ST_ClosestPoint(ST_GeomFromText('POINT(7.38770714271048 47.5497446465569)',4326),geometrie)), ST_AsText(ST_ClosestPoint(geometrie,ST_GeomFromText('POINT(7.38770714271048 47.5497446465569)',4326))) FROM sections WHERE nom_voie = 'LA THERMALE';

7.38770714271048 47.5497446465569 是端点

它返回道路LA THERMALE的所有行.

是否有其他解决方案来合并线串可能没有订购?

当我连接线串时结果为假:它将第1行的端点与第4行的起点相关联.我认为这是因为它们没有被排序.

Mik*_*e T 9

尝试使用ST_Collect将线条聚合成MULTILINESTRING(希望如此),然后使用ST_LineMerge将它们缝合在一起.

SELECT nom_voie, ST_LineMerge(ST_Collect(geometrie))
FROM sections
WHERE nom_voie = 'LA THERMALE'
GROUP BY nom_voie;
Run Code Online (Sandbox Code Playgroud)

例如,使用MULTILINESTRING,与您的图相同: 一个

SELECT ST_AsText(ST_LineMerge('
MULTILINESTRING ((27 215, 140 170),
  (230 210, 330 170),
  (230 210, 140 170),
  (330 170, 380 230))'));

                     st_astext
----------------------------------------------------
 LINESTRING(27 215,140 170,230 210,330 170,380 230)
(1 row)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,它不会出现排序甚至方向问题.