打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
更小的GIS数据格式-Geobuf

背景

我们经常遇到直接传输gis数据到前端展示的时候,有时候数据量一稍微多点,传输速度就减慢,因为我们用于传输的json格式比较大。

Geobuf介绍

Geobuf是一种用于地理数据的紧凑二进制编码。
Geobuf 几乎无损地将GeoJSON数据压缩到协议缓冲区中。单独使用GeoJSON的优点:
非常紧凑:通常使GeoJSON小6-8倍。
即使比较gzip大小,也要小2-2.5倍。
非常快速的编码和解码 - 甚至比原生JSON解析/字符串化更快。
可以容纳任何GeoJSON数据,包括具有任意属性的扩展。
轻松增量解析 - 在阅读时获取功能,而无需构建整个数据的内存表示。
部分读取 - 只读取实际需要的部分,跳过其余部分。
与Mapbox Vector Tiles不同,它的目标是几乎无损压缩数据集-无需平铺,投影坐标,展平几何或剥离属性。
“几乎”无损意味着坐标以小数点后的6位数精度(约10cm)编码(目前还不是无损压缩)
请注意,编码架构尚不稳定-它可能会随着得社区反馈并发现改进它的新方法而改变

Geobuf压缩

本文中使用PostGIS进行压缩(geobuf有多种压缩方式)

select ST_AsGeobuf(sample,'geom') FROM (SELECT id,geom from public."California" ) as sample

Geobuf解压

后端读取二进制传给前端,前端使用pbf和geobuf这两个库进行解压得Geojson

fetch("http://localhost:8081/geobuf/")        .then(response => response.arrayBuffer())        .then(buffer => {          var vt = new Pbf(buffer);          var geojson = geobuf.decode(vt);          console.log(JSON.stringify(geojson))});

对比

数据geojsongeosjon(gz)geobuf(gz)
20w面57.3MB7.6MB4.4MB
1w2.83MB380kb218kb

参考资料:

https://deck.gl/#/documentation/deckgl-api-reference/layers/tile-layer
https://github.com/mapbox/geobuf

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何将其它GIS数据格式(如:SHP\DWG\TAB\KML\GEOJSON等)转换为(opeenstreetmap格式OSM)
地图聚合的数据格式前三名:KML、GeoRSS 和GeoRSS
空间属性一体化全文检索方案:5.ES对空间数据的支持以及优化方案
数据可视化:地图使用案例
GISer必备数据格式清单
<a href="https://links.jianshu.com/go?to=http%3A%2F%2Fgeojson.org%2F" target="_bla
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服