geojson-protobuf
v0.1.1
Published
GeoPB provides nearly lossless compression of GeoJSON data into protocol buffers
Downloads
5
Readme
GeoPB
Turn your geo data into GeoPB.
Installation
use npm: $ npm install geopb
Getting Started
In commonjs, const GeoPB = require('geopb');
In ESM import GeoPB from 'geopb'
.
Example Usage
The library has one method, parse
, which takes an array of objects (or a single object) with geometry data as the first parameter, an object consisting of settings for the second parameter, and an optional callback function as the third parameter. If a callback is not specified, the parse
function returns the GeoPB output.
Take the example data below:
ESM
import GeoPB from 'geopb'
let json={
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [100.3999999, 36.222333333]
},
"properties": {
"area": "100",
"name":123
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0],
[103.0, 1.0],
[104.0, 0.0],
[105.0, 1.0]
]
},
"properties": {
"name": "示例线段"
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[102.0, 2.0], // 第一个坐标点(经度, 纬度)
[103.0, 2.0], // 第二个坐标点
[103.0, 3.0], // 第三个坐标点
[102.0, 3.0], // 第四个坐标点
[102.0, 2.0] // 回到第一个坐标点,闭合多边形
]
]
},
"properties": {
"name": "Example Polygon"
}
},
{
"type": "Feature",
"geometry": {
"type": "MultiLineString",
"coordinates": [
[
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0] // 第一条线
],
[
[105.0, 0.5], [106.0, 1.5], [107.0, 0.5] // 第二条线
]
]
},
"properties": {
"name": "Example MultiLineString"
}
},
{
"type": "Feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]] // 第一个多边形
],
[
[[104.0, 0.0], [105.0, 0.0], [105.0, 1.0], [104.0, 1.0], [104.0, 0.0]], // 第二个多边形的外环
[[104.2, 0.2], [104.8, 0.2], [104.8, 0.8], [104.2, 0.8], [104.2, 0.2]] // 第二个多边形的内环
]
]
},
"properties": {
"name": "Example MultiPolygon"
}
}
]
}
// for(let i=0;i<1000;i++){
// json.features.push(json.features[0])
// }
let pb=GeoPB.parse(json);
// fs.writeFileSync("test.pb",pb)
let json2=GeoPB.toJSON(pb);
CommonJS
const GeoPB=require('geopb')
let json={
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [100.3999999, 36.222333333]
},
"properties": {
"area": "100",
"name":123
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0],
[103.0, 1.0],
[104.0, 0.0],
[105.0, 1.0]
]
},
"properties": {
"name": "示例线段"
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[102.0, 2.0], // 第一个坐标点(经度, 纬度)
[103.0, 2.0], // 第二个坐标点
[103.0, 3.0], // 第三个坐标点
[102.0, 3.0], // 第四个坐标点
[102.0, 2.0] // 回到第一个坐标点,闭合多边形
]
]
},
"properties": {
"name": "Example Polygon"
}
},
{
"type": "Feature",
"geometry": {
"type": "MultiLineString",
"coordinates": [
[
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0] // 第一条线
],
[
[105.0, 0.5], [106.0, 1.5], [107.0, 0.5] // 第二条线
]
]
},
"properties": {
"name": "Example MultiLineString"
}
},
{
"type": "Feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]] // 第一个多边形
],
[
[[104.0, 0.0], [105.0, 0.0], [105.0, 1.0], [104.0, 1.0], [104.0, 0.0]], // 第二个多边形的外环
[[104.2, 0.2], [104.8, 0.2], [104.8, 0.8], [104.2, 0.8], [104.2, 0.2]] // 第二个多边形的内环
]
]
},
"properties": {
"name": "Example MultiPolygon"
}
}
]
}
// for(let i=0;i<1000;i++){
// json.features.push(json.features[0])
// }
let pb=GeoPB.parse(json);
// fs.writeFileSync("test.pb",pb)
let json2=GeoPB.toJSON(pb);
License
Licensed under the MIT License. See LICENSE
for details.