我在我的数据库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的所有行。
是否有其他解决方案来合并线串可能没有排序?
当我连接线串时,结果为false:它将第1行的端点与第4行的起点相关联。我认为这是因为它们没有被排序。
答案 0 :(得分: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;
例如,使用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)
因此,它不会出现排序甚至方向问题。