简单的问题,我想知道质心方法是否在 MySQL 空间扩展中实现。我查看了文档,但无法找到明确的答案。
问问题
2800 次
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;
于 2020-07-08T14:33:03.023 回答