我已经在数据库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 sectionsWHERE 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;
例如,使用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)
因此,从此看来,排序或方向都不重要。
关于kml - Postgis合并和线串顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17944480/