我有一个查询,该查询返回一组与我感兴趣的实体关联的几何图形。此查询用于构建要在 Google map 中显示的 KML。
我检索的列的类型为 GEOMETRY
并且,在我的数据集中,主要包含 GeometryCollection
仅包含 Polygon
类型的单个元素。其他记录为MultiPolygon
类型。
我想计算结果集中所有几何图形的质心,就像AVG
一样运算符(operator)的行为。我的意思是,给出像 SELECT GEOMETRY FROM GEOENTITIES WHERE [..]
这样的查询我希望 MySQL 计算结果集中所有行的几何图形的并集,然后计算它们的质心。
作为示例,我们选择意大利城市。如果我的结果集仅包含罗马的一个多边形和米兰的一个多边形,我预计两者的质心都在佛罗伦萨周围。
实际上,UNION()
函数在基于列的级别上工作,而不是在行级别上工作。您可以将同一行中两列的两个几何图形合并起来(按照 documentation )
我需要一个聚合运算符将所有行中的多边形合并到一个集合中,我可能希望从中计算质心。
这可能吗?
最佳答案
我认为当前的mysql(5.7版本)不包括这样的空间函数(也许将来) (http://dev.mysql.com/doc/refman/5.7/en/functions-that-create-new-geometries-from-existing-ones.html#functions-that-produce-new-geometries)
有一条线:OpenGIS 提出了许多其他可以生成几何图形的函数。它们旨在实现空间运算符。这些函数在 MySQL 中未实现。
因此,由于您无法在 MySQL 中执行此操作,因此实现此操作的唯一方法是在应用程序端,无论您使用什么。 例如,OpenLayer javascript 可以执行以下操作:( https://gis.stackexchange.com/questions/19964/how-to-merge-two-polygons-in-openlayers )
或者,您可以使用面向空间的数据库,例如http://postgis.net/ ,或 Oracle Spatial :)
关于mysql - MySQL Spatial 中的质心投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18976500/