gpt4 book ai didi

postgresql - 多边形点距其质心的最远距离

转载 作者:行者123 更新时间:2023-11-29 11:45:11 25 4
gpt4 key购买 nike

我现在已经从两个角度解决了这个问题,但我肯定缺少 PostGIS 库的知识来实际执行我的需求。

基本上,我在名为“geom”的列中包含一个多边形(没有多边形)。它们都是非常简单的城市边界形状。我已经确定了如何计算质心,但我想查询多边形中最长的点是从质心开始的。

更直接:我无法找出如何从我的几何列中分解点,在顶点和质心之间运行 ST_Distance() 并输出最长距离。

我怀疑我必须使用 ST_DumpPoints() 但我不明白如何编写表达式来完成剩下的工作。

我的解决方案看起来与此类似:

SELECT max(ST_Distance(ST_DumpPoints(geom), ST_Centroid(geom))) AS distance

最佳答案

ST_DumpPoints()函数返回一组 (geom, path) 行,其中 geom 是来自多边形的点,path 是一个整数数组(在本例中)位置 1 处的多边形和位置 2 处环内 POINT 的索引。由于 ST_DumpPoints() 是一个返回集合的函数,因此应该在 FROM 中使用它条款。 (虽然这些示例都是函数式的,但 PostGIS 文档在 SELECT 子句中使用了该函数,但这是不好的做法,不推荐这样做。)

为了使其全部正常工作,您需要制作一个 LATERAL JOIN :在加入的“表”dump 中,您使用了先前指定表 my_table t 中的列。当完成一个函数时,如本例所示,LATERAL JOIN 是隐式允许的。

SELECT t.id AS city_id,
ST_Centroid(t.geom) AS center,
max(ST_Distance(dump.geom, ST_Centroid(t.geom))) AS distance,
dump.path AS path_to_the_burbs
FROM my_table t
JOIN ST_DumpPoints(t.geom) dump ON true
GROUP BY 1, 2, 4
ORDER BY 1;

关于postgresql - 多边形点距其质心的最远距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497071/

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