protobuf-geojson

0.1.1 • Public • Published

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.

Package Sidebar

Install

npm i protobuf-geojson

Weekly Downloads

2

Version

0.1.1

License

MIT

Unpacked Size

147 kB

Total Files

7

Last publish

Collaborators

  • jvy