0

我有一个查询,它返回一组与我感兴趣的实体相关联的几何图形。此查询用于构建要在 Google 地图中显示的 KML。

我检索的列是 type GEOMETRY,并且在我的数据集中,主要包含 a GeometryCollection,其中只有一个 type 元素Polygon。其他记录属于MultiPolygon类型。

我想计算结果集中所有几何的质心,就像AVG操作员的行为一样。我的意思是,给定一个查询,比如SELECT GEOMETRY FROM GEOENTITIES WHERE [..]我希望 MySQL 计算结果集中所有行的几何并集,然后计算它们的质心。

例如,让我们选择意大利城市。如果我的结果集仅包含罗马的一个多边形和米兰的一个多边形,我预计两者的质心都在佛罗伦萨附近。

实际上,该UNION()函数在基于列的级别而不是在行级别上工作。您可以将同一行内两列中的两个几何图形合并(根据文档

我需要一个聚合运算符将所有行中的多边形合并到一个集合中,我可能希望从中计算质心。

这可能吗?

4

1 回答 1

1

我不认为当前的 mysql(5.7 版本)包括这样的空间函数(可能在将来)(http://dev.mysql.com/doc/refman/5.7/en/functions-that-c​​reate -new-geometries-来自-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 :)

于 2013-11-22T16:36:35.073 回答