背景
在对轨迹、边界、围栏等数据在地图上展示时,往往需要绘制大量的坐标点,很多时候由于地图缩放等级比较小,我们并不需要绘制全部的点,全量绘制地图也会存在性能问题,面对这样的情况我们需要对数据抽稀、舍弃不重要点,提高性能,同时不影响视觉效果。
抽稀算法介绍
折线抽稀极可以大量减少折线顶点数据,同时保持折线原有形状,减少顶点,能够提高数据处理、数据可视化的性能效率,同时减少了视觉噪音。 算法步骤 **1: **将轨迹的首尾点连成一条线,计算曲线上每一个点到直线的距离,找出最大距离dmax,看距离是否小于给定的阈值 max(轨迹精确度). **2-1: **若dmax < max,则舍弃这条曲线上的所有中间点,将曲线首尾点连成的直线作为这段曲线的近似,这条线段便处理完毕。 **2-2 : **若dmax >= max,则以dmax所在点作为分割点,将原来的曲线分为两段,分出来的两条曲线继续直线步骤1、2,直到所有的dmax < max。
抽稀算法库
Simplify.js 是基于 JavaScript 高性能的 折线抽稀库。抽稀算法使用了 Ramer-Douglas-Peucker algorithm 道格拉斯-普克法。
github.com/mourner/sim…
抽稀效果实例
在线demo:ohbslx.csb.app/
其他语言实现
QGIS 抽稀
方法1:
打开 QGIS 工具条 Vector->GeometryTool->Simplify
方法2:
打开 QGIS - ToolBox-> GRass ->v.generalize
在线抽稀工具
www.mapshaper.org/
打开网站、上传数据,即可进行数据抽稀了,简单、快捷、好用。
更多地理可视化技术:github.com/antvis/l7