MySQL 空间简化几何

标签 mysql geospatial

我正在尝试创建一个包含大型多边形数据集的网络 map 。为了提高性能,我希望在缩小时减少多边形细节。

MySQL 是否能够将多边形和其他几何图形简化为查询的一部分?

最佳答案

编辑:作为James已经指出,从5.7开始,MySQL确实支持ST_Simplify。

恐怕MySQL空间中没有简化功能。我将其归档为 feature request五年前,你可以看到它从那时起就没有受到关注。

您有多种选择,具体取决于您是想一次性执行此操作,还是您有动态数据。

1).使用 PointN function 编写一个快速而肮脏的函数访问您的点,例如,仅取每 5 个点,创建表示简化几何的 WKT 字符串,然后使用 GeomFromText 函数重新创建几何。

2).使用 AsText(geom) 将多边形转储为 WKT 输出到 csv。使用 COPY 命令(相当于 LOAD DATA INFILE)导入 Postgres/Postgis,并使用 ST_Simplify在那里运行,然后反转过程以将其带回 MySQL。

3).使用 ogr2ogr转储为 shp 格式,然后使用类似 mapshaper 的工具为了简化它,输出到 shp,然后使用 ogr2ogr 再次导入。 Mapshaper 很好,因为您可以了解算法的工作原理,并可能使用它来实现您自己的算法,而不是选项 1。

还有其他选项,比如使用Java Topology Suite如果您使用的是 Java 服务器端,但我希望这能让您了解如何继续。

很抱歉,最初的回答是,不。我在几年前经历过这个问题,并最终永久切换到 Postgres/Postgis,因为它在空间工作方面功能更齐全。

关于MySQL 空间简化几何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27375962/

相关文章:

c++ - 如何使用 C++ 在 MongoDB 中创建地理空间索引

solr - 无法对 Solr 地理空间搜索结果进行排序

java - MySQL更新触发错误;在更新的记录中设置值

MySQL 在日期时间列中选择间隔为 30 分钟的日期时间记录

search - 高效搜索最近的地理位置

mongodb - 创建地理空间查询以查找彼此半径内的两个用户

MySQL - 从数据库中查找半径内的点

PHP/MySQL : Strange output issue when echoing variable from MySQL database

mysql - 将 Angular 与数据库中的动态数据绑定(bind)

php - laravel 加入 : How can I join tables and pull various kinds of data according to my conditions form the same join?