跳转到主要内容

Geobuf是一种紧凑的二进制地理空间格式,用于无损压缩GeoJSON和TopoJSON数据。

项目描述

Geobuf是一种紧凑的二进制地理空间格式,用于无损压缩GeoJSON和TopoJSON数据。

Build Status Coverage Status

注意:该项目不再积极开发。如果有可能,将会处理问题和拉取请求,但请预期会有延迟。

相对于直接使用GeoJSON和TopoJSON的优势(在此修订版中)

  • 非常紧凑:通常使GeoJSON缩小6-8倍,TopoJSON缩小2-3倍。

  • 即使与gzip压缩大小相比也较小:GeoJSON压缩2-2.5倍,TopoJSON压缩20-30%。

  • 易于进行增量解析——您可以在读取数据的同时获取功能,无需在内存中构建整个数据表示。

  • 部分读取——您可以只读取实际需要的部分,跳过其余部分。

  • 简单连接:可以将多个Geobuf文件连接在一起,它们将形成一个有效的组合Geobuf文件。

  • 与原生JSON实现(例如在Web浏览器中)相比,可能具有更快的编码/解码速度。

  • 仍然可以容纳任何GeoJSON和TopoJSON数据,包括具有任意属性的扩展。

将其视为尝试设计一个简单、现代的Shapefile后继产品,它可以无缝地与GeoJSON和TopoJSON一起工作。

Mapbox矢量瓦片不同,它旨在实现数据集的无损压缩——没有瓦片化、投影坐标、展平几何形状或删除属性。

pygeobuf

此存储库是Geobuf新主要版本的第一个编码/解码实现(在Python中)。它作为一个原型设计游乐场,JS和C++的实现将在未来到来。

样本压缩大小

| normal    | gzipped

us-zips.json

101.85 MB

26.67 MB

us-zips.pbf

12.24 MB

10.48 MB

us-zips.topo.json

15.02 MB

3.19 MB

us-zips.topo.pbf

4.85 MB

2.72 MB

idaho.json

10.92 MB

2.57 MB

idaho.pbf

1.37 MB

1.17 MB

idaho.topo.json

1.9 MB

612 KB

idaho.topo.pbf

567 KB

479 KB

使用方法

命令行

geobuf encode < example.json > example.pbf
geobuf decode < example.pbf > example.pbf.json

作为模块

import geobuf

pbf = geobuf.encode(my_json) # GeoJSON or TopoJSON -> Geobuf string
my_json = geobuf.decode(pbf) # Geobuf string -> GeoJSON or TopoJSON

encode函数接受一个类似于字典的对象,例如json.loads(json_str)的结果。

encode.pygeobuf.encode都接受两个可选参数

  • precision——坐标中小数点后最大数字位数,默认为6

  • dimensions——坐标的维度数量,默认为2

测试

py.test -v

测试运行通过 fixtures 目录中的所有.json文件,将每个原始GeoJSON与编码/解码的一个进行比较。

项目细节


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

geobuf-1.1.1.tar.gz (56.5 kB 查看哈希)

上传时间

构建分布

geobuf-1.1.1-py3-none-any.whl (13.9 kB 查看哈希)

上传时间 Python 3

geobuf-1.1.1-py2-none-any.whl (13.9 kB 查看哈希)

上传时间 Python 2

支持