跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 编写了一套 GeoJSON 压缩解压代码,矢量边界坐标 6 位小数精度下可压缩到 1/3 – 1/5 大小, ECharts Map 四级中表现良好
未分類
24 2 月 2021

编写了一套 GeoJSON 压缩解压代码,矢量边界坐标 6 位小数精度下可压缩到 1/3 – 1/5 大小, ECharts Map 四级中表现良好

编写了一套 GeoJSON 压缩解压代码,矢量边界坐标 6 位小数精度下可压缩到 1/3 – 1/5 大小, ECharts Map 四级中表现良好

資深大佬 : xiangyuecn 0

上礼拜开源了一个在线省、市、区县、乡镇街道 四级下钻 ECharts Map 的 demo 代码。

不过始终纠结于服务器传输的 geojson 数据太大,于是前天就参考 ZigZag 压缩自己搞了一套压缩解压代码:GeoZip,已开源 js 、c# 两个语言的实现,代码行数不超过 200 行(含注释)。可用于服务器端输出的 GeoJSON 数据压缩,减少服务器流量。

源码+在线测试: https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-echarts.html 里面有 ECharts Map 四级下钻的前端 js 源码,后端源码也开源了是 C#的。

编写了一套 GeoJSON 压缩解压代码,矢量边界坐标 6 位小数精度下可压缩到 1/3 - 1/5 大小, ECharts Map 四级中表现良好

GeoZip 和 ECharts 自带的 ZigZag 压缩的对比:

  1. ECharts.ZigZag 只支持 3 位小数(源码里面写的乘数是 1024,学习时感觉用 1000 才符合正常脑回路),坐标压缩后误差可达几十米(当然用于 ECharts 显示毫无问题);
  2. GeoZip 支持 6 位小数(乘数是 1000000 ),坐标压缩后误差 0.2 米内。
  3. ECharts.ZigZag 可压缩到 1/5 甚至更低,压缩结果可安全的用 ASCII 纯文本直接输出;
  4. GeoZip 大部分情况下仅能压缩到 1/3 大小,压缩结果用了 Base64 编码(输出二进制结果压缩比可接近 ZigZag 的 1/5 大小)。

FQA:为什么我没用 ECharts.ZigZag 来压缩非要自己搞一套?因为我打算把 GeoJSON 显示到高德地图里面,用来对照边界是否偏差太大,压缩算法引入几十米误差比较难接受。

大佬有話說 (9)

  • 資深大佬 : Jie0zero

    建议申请专利

  • 資深大佬 : cg919

    LZ 也做 GIS 开发?

  • 資深大佬 : gooin

    前两天也在看这块,最后选了 geobuf

  • 主 資深大佬 : xiangyuecn

    @cg919 #2 不是专业做 GIS 开发的,平时有接触

  • 主 資深大佬 : xiangyuecn

    @gooin #3 翻了一下 geobuf,巨屌

  • 資深大佬 : iikebug

    好东西,先收藏。

  • 資深大佬 : liuzhedash

    建议弄到 github,这种应该给 star

  • 主 資深大佬 : xiangyuecn

    @liuzhedash #7 github 上有,gitee 是镜像,github.io 经常被污染成 127.0.0.1,后面改成了 gitee.io 可访问性更高

    GitHub: https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov

  • 資深大佬 : liuzhedash

    @xiangyuecn #8 看了一下,几年前就 star 了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具