在php中使用查询在PostGIS中查找圆的半径?
我已经在PostGIS中为多边形和圆定义了几何类型,现在我需要在这个几何类型中找到圆的半径?? 我已经通过使用找到了中心 ST_X(ST_ASTEXT(ST_质心(形状))作为板条, ST_Y(ST_ASTEXT(ST_质心(形状))作为lgt, 有人能帮我获取半径吗???你可以使用该函数获取任意多边形(而不仅仅是圆)的边界框。然后可以使用、和函数提取宽度和高度。由于它是一个圆,您可以使用其中一个,因此类似于:在php中使用查询在PostGIS中查找圆的半径?,php,database,postgis,geometry,Php,Database,Postgis,Geometry,我已经在PostGIS中为多边形和圆定义了几何类型,现在我需要在这个几何类型中找到圆的半径?? 我已经通过使用找到了中心 ST_X(ST_ASTEXT(ST_质心(形状))作为板条, ST_Y(ST_ASTEXT(ST_质心(形状))作为lgt, 有人能帮我获取半径吗???你可以使用该函数获取任意多边形(而不仅仅是圆)的边界框。然后可以使用、和函数提取宽度和高度。由于它是一个圆,您可以使用其中一个,因此类似于: SELECT (ST_XMax(bbox)-ST_XMin(bbox))/2 as
SELECT (ST_XMax(bbox)-ST_XMin(bbox))/2 as radius
FROM
(SELECT ST_Envelope(shape) as bbox from sometable) env
其中子查询只是简写,以避免调用ST_信封两次,但您也可以编写
SELECT (ST_XMax(ST_Envelope(shape)) - ST_XMin(ST_Envelope(shape)))/2 as radius
FROM sometable
这看起来比较短,但是,我觉得不那么优雅,如果你想要这个高度,我会更长。无论哪种方式,查询优化器都会将它们视为相同的查询。您可以使用该函数获取任何多边形(而不仅仅是圆)的边界框。然后可以使用、和函数提取宽度和高度。由于它是一个圆,您可以使用其中一个,因此类似于:
SELECT (ST_XMax(bbox)-ST_XMin(bbox))/2 as radius
FROM
(SELECT ST_Envelope(shape) as bbox from sometable) env
其中子查询只是简写,以避免调用ST_信封两次,但您也可以编写
SELECT (ST_XMax(ST_Envelope(shape)) - ST_XMin(ST_Envelope(shape)))/2 as radius
FROM sometable
这看起来比较短,但是,我觉得不那么优雅,如果你想要这个高度,我会更长。无论哪种方式,查询优化器都会将它们视为相同的查询。您不需要在此处调用ST_AsText,因为ST_X/ST_Y无论如何都会返回一个数字(float)。D:您不需要在这里调用ST_AsText,因为ST_X/ST_Y将返回一个数字(float)。D: