gpt4 book ai didi

kml - Postgis 合并和线串顺序

转载 作者:行者123 更新时间:2023-12-04 17:01:19 26 4
gpt4 key购买 nike

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

kml import

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

我有这个:

Linestrings

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 部分
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;

例如,使用 MULTILINESTRING,与您的数字相同: A

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)

enter image description here

因此,看起来顺序甚至方向都不重要。

关于kml - Postgis 合并和线串顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17944480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com