• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiangyuecn
V2EX  ›  程序员

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

  •  
  •   xiangyuecn ·
    xiangyuecn · Feb 22, 2021 · 3555 views
    This topic created in 2088 days ago, the information mentioned may be changed or developed.

    上礼拜开源了一个在线省、市、区县、乡镇街道 四级下钻 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#的。


    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 replies  •  2021-02-22 18:49:17 +08:00
    Jie0zero
    Jie0zero
    Feb 22, 2021
    1
    建议申请专利
    cg919
    cg919
    Feb 22, 2021
    2
    LZ 也做 GIS 开发?
    gooin
    gooin
    Feb 22, 2021
    3
    前两天也在看这块,最后选了 geobuf
    xiangyuecn
    xiangyuecn
    OP
    Feb 22, 2021
    4
    @cg919 #2 不是专业做 GIS 开发的,平时有接触
    xiangyuecn
    xiangyuecn
    OP
    Feb 22, 2021
    5
    @gooin #3 翻了一下 geobuf,巨屌👍
    iikebug
    iikebug
    Feb 22, 2021
    6
    好东西,先收藏。
    liuzhedash
    liuzhedash
    Feb 22, 2021
    7
    建议弄到 github,这种应该给 star
    xiangyuecn
    xiangyuecn
    OP
    Feb 22, 2021
    8
    @liuzhedash #7 github 上有,gitee 是镜像,github.io 经常被污染成 127.0.0.1,后面改成了 gitee.io 可访问性更高

    GitHub: https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov
    liuzhedash
    liuzhedash
    Feb 22, 2021
    9
    @xiangyuecn #8 看了一下,几年前就 star 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4922 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 02:41 · PVG 10:41 · LAX 18:41 · JFK 21:41
    ♥ Do have faith in what you're doing.