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

所以我想在导入时订购线串.
我有这个 :

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行的起点相关联.我认为这是因为它们没有被排序.
尝试使用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)

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