使用php中的查询在PostGIS中查找圆的半径?

时间:2014-09-15 04:06:28

标签: php database postgis geometry

我在PostGIS中为多边形和圆定义了几何类型,现在我需要在这个几何类型中找到圆的半径? 我通过使用找到了中心     ST_X(ST_ASTEXT(ST_CENTROID(shape)))AS lat,     ST_Y(ST_ASTEXT(ST_CENTROID(shape)))作为lgt, 任何人都可以帮助我获得半径吗?

1 个答案:

答案 0 :(得分:4)

您可以使用ST_Envelope函数获取任何多边形(不仅仅是圆形)的边界框。然后,您可以使用ST_XMinST_YMinST_XMaxST_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

看起来更短,但是,我感觉不那么优雅,如果你想要高度会更长。无论哪种方式,查询优化器都会将它们视为同一个查询。