GeoJSON格式通常比较大,网页需要较长时间加载,可以使用GeoBuf进行压缩。

使用GeoBuf有很多好处:结构紧凑、文件小、方便编码和解码、能适用各种GeoJSON等等。

使用:

1.安装 geobuf 和 pbf

 npm install geobuf
npm install pbf

2.对GeoJSON编码

 let buffer = geobuf.encode(featureCollection, new Pbf())

说明:需要引入geobuf 和 pbf,

featureCollection为GeoJSON

3.把GeoBuf写入文件

 let buffer = geobuf.encode(featureCollection, new Pbf()) // 对GeoJSON编码
// 使用node写入文件 需要先引入'fs'库
fs.writeFile('./data/lamp.geobuf.bpf', buffer, function(error){
if(error){
console.info('geobuf error')
}else {
console.info('geobuf ok')
}
})

4.对GeoBuf解码

 axios.get('./data/lamp.geobuf.bpf', {
responseType: 'arraybuffer' // note: responseType must be 'arraybuffer'
}).then((function (res) {
let data = res.data
let geojson = geobuf.decode(new Pbf(data)) // 对GeoBuf解码
console.info(JSON.stringify(geojson))
}))

注意:读取GeoBuf是responseType必须是“arraybuffer”

看一下文件大小:只有大约1/5了,效果很明显呐!

完整应用案例请参考:

https://github.com/shiyuan598/common-tools.git


参考文档:

https://github.com/mapbox/geobuf

GeoJSON与GeoBuf互相转换的更多相关文章

  1. 使用tippecanoe把GeoJSON制作成供mapbox展示的矢量切片vectortile

    本文记录一下把geojson格式的数据制作成本地的矢量切片,并在mapbox中展示的过程. 1.切片 1.1 矢量数据需要先转换为geojson,如果是shp格式可以使用QGIS或者下载shp2gwo ...

  2. GIS数据格式topojson

    Topojson源自于GeoJson,是D3中描述地理数据的格式,D3的作者觉得GeoJson太繁琐.同样的数据,TopoJson是GeoJson的1/5. 这里有一个转换TopoJson,GeoJs ...

  3. 新鲜出炉的JSON,拿走不谢!

    一.JSON简介 1.JSON全称是JavaScript Object Notation即JavaScript对象标记法. JSON是一种轻量级(Light-Weight).基于文本的(Text-Ba ...

  4. D3.js 制作中国地图

    from:  http://d3.decembercafe.org/pages/map/index.html GeoJSON is a format for encoding a variety of ...

  5. 对于Json的认识

    Json简介 1. JSON 是什么 JSON,全称是 JavaScript Object Notation,即 JavaScript 对象标记法.   JSON 是一种轻量级(Light-Weigh ...

  6. D3.js 制作中国地图 .net 公共基础类

    D3.js 制作中国地图 from:  http://d3.decembercafe.org/pages/map/index.html GeoJSON is a format for encoding ...

  7. 根据经纬度坐标获得省市区县行政区划城市名称,自建数据库 java python php c# .net 均适用

    目录 步骤一.下载省市区边界数据 步骤二.解析CSV文件导入数据库 步骤三.在程序中根据坐标解析获得城市 在LBS应用中,根据坐标来解析获得对应是哪个城市是一个很常见的功能,比如App里面通过手机定位 ...

  8. (数据科学学习手札65)利用Python实现Shp格式向GeoJSON的转换

    一.简介 Shp格式是GIS中非常重要的数据格式,主要在Arcgis中使用,但在进行很多基于网页的空间数据可视化时,通常只接受GeoJSON格式的数据,众所周知JSON(JavaScript Obje ...

  9. GeoJson格式与转换(shapefile)Geotools

    转自:https://blog.csdn.net/cobramonkey/article/details/71124888 作为大数据分析的重要工具,Hadoop在这一领域发挥着不可或缺的作用.有些人 ...

随机推荐

  1. .NET Core IOC AOP

    IOC简介 IOC思想 把类当做组件或服务来看待,组件内一定要高内聚,组件之间一定要低耦合,既然要保持低耦合,那就一定不要轻易的去new什么对象. 那组件之间的交互怎么处理呢?那最好的方式就是把new ...

  2. QT加载自带字体

    #include <QCoreApplication> #include <QStringList> #include <QFontDatabase> #inclu ...

  3. 2019年6月12日——开始记录并分享学习心得——Python3.7中对列表进行排序

    Python中对列表的排序按照是排序是否可以恢复分为:永久性排序和临时排序. Python中对列表的排序可以按照使用函数的不同可以分为:sort( ), sorted( ), reverse( ). ...

  4. 从零开始学Flask框架-004

    Flask-Moment pip install flask-moment 除了moment.js,Flask-Moment 还依赖jquery.js.但是Bootstrap 已经引入了jquery. ...

  5. C++利用权重方法将二进制正数转换为十进制数

    #include <iostream> #include <Windows.h> #include <string> using namespace std; in ...

  6. flannel overlay网络浅析

    Flannel基于UDP的网络实现 container-1的route表信息如下(b1): default via 100.96.1.1 dev eth0 100.96.1.0/24 dev eth0 ...

  7. 软件包 javax.naming了解

    Context  此接口表示一个命名上下文,它由一组名称到对象的绑定组成. Name  Name 接口表示一个一般名称,即一个有序的组件序列. NameParser  此接口用于解析取自分层的名称空间 ...

  8. create-react-app中的一些功能配置

    1. 根路径别名@ 1. npm run eject调出配置文件.找到webpack.config.js,搜索到,alias,在下面添加一行键值对'@':paths.appSrc, alias: { ...

  9. # RESTful登录(基于token鉴权)的设计实例

    使用场景 现在很多基于restful的api接口都有个登录的设计,也就是在发起正式的请求之前先通过一个登录的请求接口,申请一个叫做token的东西.申请成功后,后面其他的支付请求都要带上这个token ...

  10. linux测试umask

    客户需求,由于ftp服务器权限管理需要,测试能否通过修改oracle umask值,达到expdp导出文件权限,导出即是想要的权限. Session [oracle@adg1 ~]$ umask [o ...