【问题标题】:Find the radius of circle in PostGIS using query in php?使用 php 中的查询在 PostGIS 中查找圆的半径?
【发布时间】:2014-09-15 04:06:28
【问题描述】:

我在 PostGIS 中为多边形和圆定义了几何类型,现在我需要在这种几何类型中找到圆的半径?? 我通过使用找到了中心 ST_X(ST_ASTEXT(ST_CENTROID(shape))) 作为纬度, ST_Y(ST_ASTEXT(ST_CENTROID(shape))) 作为 lgt, 谁能帮我获取半径??

【问题讨论】:

  • 这里不需要调用 ST_AsText,因为 ST_X/ST_Y 无论如何都会返回一个数字(浮点数)。 D:

标签: php database postgis geometry


【解决方案1】:

您可以使用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

这似乎更短,但是,我觉得不那么优雅,如果你想要高度的话会更长。无论哪种方式,查询优化器都会将它们视为相同的查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多