0

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

4

3 回答 3

7

一般来说:是的

多多边形:否

OpenGIS 规范还定义了 MySQL 未实现的以下功能:

质心(mpoly)

以点的形式返回 MultiPolygon 值 mpoly 的数学质心。结果不能保证在 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 有一个质心可能没有多大意义。

于 2011-02-12T22:15:34.767 回答
1

的,您可以从MySQL-Polygon 属性函数中读取它。在页面下方查看第一个用户评论。它在那里说:

不仅有这些功能可用。我认为这在文档中不够清楚。例如,MultiPolygon 'Centroid' 函数也适用于多边形。

例子:

mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0))';
mysql> select astext( Centroid(PolygonFromText(@poly)));
于 2013-09-26T11:33:39.820 回答
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() 方法

于 2020-07-08T14:33:03.023 回答