如果我的MBC看起来像以下查询:
SELECT ST_AsText(ST_MinimumBoundingCircle(geom)::geometry) AS Circle
FROM "Regions"
我想知道如何轻松确定它的半径。我已经求助于找到圆的质心,此时我可以尝试计算MBC返回多边形中的一个点与质心之间的距离但是我似乎无法抓住一个顶点来自多边形。
感谢。
答案 0 :(得分:1)
ST_MinimumBoundingCircle
是一个用户贡献的函数,其源代码用PL / pgSQL编写。您可以modify the source作为已重命名的函数ST_MinimumBoundingRadius(inputgeom geometry)
进行以下修改:
inputgeom geometry
geometry
更改为double precision
RETURN hull;
更改为RETURN 0;
ST_Buffer
语句,然后返回radius
。应该很容易。请注意,该算法存在一些问题,例如ticket #2996。
答案 1 :(得分:0)
我设计了一个简单的解决方案,但效率可能不高。为了我的目的,它运作良好。
SELECT
ROUND(
ST_Distance_Sphere(
ST_Centroid(ST_MinimumBoundingCircle(geom)),
ST_PointN(ST_Boundary(ST_MinimumBoundingCircle(geom)), 1)
) / 1000
) AS radius,
ST_AsGeoJSON(ST_Centroid(geom)) AS center
FROM
"Regions"
结果最终是以km为单位的半径和质心。