Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用查询在PostGIS中查找圆的半径?_Php_Database_Postgis_Geometry - Fatal编程技术网

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

在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

我已经在PostGIS中为多边形和圆定义了几何类型,现在我需要在这个几何类型中找到圆的半径?? 我已经通过使用找到了中心 ST_X(ST_ASTEXT(ST_质心(形状))作为板条, ST_Y(ST_ASTEXT(ST_质心(形状))作为lgt, 有人能帮我获取半径吗???

你可以使用该函数获取任意多边形(而不仅仅是圆)的边界框。然后可以使用、和函数提取宽度和高度。由于它是一个圆,您可以使用其中一个,因此类似于:

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: