我在PostGIS中为多边形和圆定义了几何类型,现在我需要在这个几何类型中找到圆的半径? 我通过使用找到了中心 ST_X(ST_ASTEXT(ST_CENTROID(shape)))AS lat, ST_Y(ST_ASTEXT(ST_CENTROID(shape)))作为lgt, 任何人都可以帮助我获得半径吗?
答案 0 :(得分:4)
您可以使用ST_Envelope函数获取任何多边形(不仅仅是圆形)的边界框。然后,您可以使用ST_XMin,ST_YMin,ST_XMax和ST_YMax函数来提取宽度和高度。因为它是一个圆圈,你可以使用任何一个,所以像:
SELECT (ST_XMax(bbox)-ST_XMin(bbox))/2 as radius
FROM
(SELECT ST_Envelope(shape) as bbox from sometable) env
其中子查询只是简写,以避免必须两次调用ST_Envelope,但你也可以写,
SELECT (ST_XMax(ST_Envelope(shape)) - ST_XMin(ST_Envelope(shape)))/2 as radius
FROM sometable
看起来更短,但是,我感觉不那么优雅,如果你想要高度会更长。无论哪种方式,查询优化器都会将它们视为同一个查询。