质心方法是在MySQL空间中实现的吗?

时间:2010-02-19 17:27:31

标签: mysql spatial

简单的问题,我想知道质心方法是否在MySQL空间扩展中实现。我查看了文档,但未能找到明确的答案。

4 个答案:

答案 0 :(得分:6)

一般来说:是的

MultiPolygon:否

  

OpenGIS规范也定义了   以下函数,其中MySQL   未实施:

     

质心(mpoly)

     

返回数学中心   MultiPolygon值作为一个   点。结果不能保证   在MultiPolygon上。

     

http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#function_centroid

您可以使用geometryn函数获取多面体内每个多边形的质心,尽管MySQL手册中没有记录这一点。例如,

select astext(centroid(geometryn(geomfromtext('MultiPolygon(((0 0,0 3,3 3,3 0,0 0)),((10 10,10 20,20 20,20 10,10 10)))'),2)));

返回

POINT(15 15)

是MultiPolygon中第二个多边形的质心。无论如何,对于具有质心的MultiPolygon而言,这可能没什么意义。

答案 1 :(得分:1)

,您可以从MySQL - Polygon Property Functions阅读。在第一个用户评论页面下方查看。它说:

  

不仅仅提供这些功能。我想这不是   在文档中足够清楚。例如,MultiPolygon'Centroid'   函数也适用于多边形。

示例:

mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0))';
mysql> select astext( Centroid(PolygonFromText(@poly)));

答案 2 :(得分:0)

从Mysql 8开始,质心不再存在。

获取多边形| m-多边形中心的正确方法是st_centroid()方法。

这里是一个例子:

select st_astext(ST_Centroid(st_geomfromtext('MultiPolygon(((0 0,0 3,3 3,3 0,0 0)),((10 10,10 20,20 20,20 10,10 10)))'))) as center_point;

引用Mysql st_centroid() method

答案 3 :(得分:-6)