我正在尝试创建一个包含大型多边形数据集的网络 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/