npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

protobuf-gis

v1.0.4

Published

GIS ProtoBuf module

Downloads

7

Readme

protobuf-gis

dependencies Status devDependencies Status Downloads

Installation

npm install protobuf-gis --save

or

yarn add protobuf-gis

Additional functions

All messages has function toGeoJSON that returns a GeoJSON representation of a message.

Messages

Point

syntax = "proto3";

import "gis/protobuf/point.proto";

package test;

message Test {
  gis.protobuf.Point2D point2d = 1;
  gis.protobuf.Point3D point3d = 2;
  gis.protobuf.MultiPoint2D multi_point2d = 3;
  gis.protobuf.MultiPoint3D multi_point3d = 4;
}

Point2D

Structure with two fields of type float: x and y.

GeoJSON representation of this message is

{
  'type': 'Point',
  'coordinates': [x, y]
}

Point3D

Structure with three fields of type float: x, y and z.

GeoJSON representation of this message is

{
  'type': 'Point',
  'coordinates': [x, y, z]
}

MultiPoint2D

Structure with one repeated field of type gis.protobuf.Point2D: point.

GeoJSON representation of this message is

{
  'type': 'MultiPoint',
  'coordinates': [[x1, y1], [x2, y2]]
}

MultiPoint3D

Structure with one repeated field of type gis.protobuf.Point3D: point.

GeoJSON representation of this message is

{
  'type': 'MultiPoint',
  'coordinates': [[x1, y1, z1], [x2, y2, z2]]
}

LineString

syntax = "proto3";

import "gis/protobuf/linestring.proto";

package test;

message Test {
  gis.protobuf.LineString2D line_string2d = 1;
  gis.protobuf.LineString3D line_string3d = 2;
  gis.protobuf.MultiLineString2D multi_line_string2d = 3;
  gis.protobuf.MultiLineString3D multi_line_string3d = 4;
}

LineString2D

Structure with one repeated field of type gis.protobuf.Point2D: point.

GeoJSON representation of this message is

{
  'type': 'LineString',
  'coordinates': [[x1, y1], [x2, y2]]
}

LineString3D

Structure with one repeated field of type gis.protobuf.Point3D: point.

GeoJSON representation of this message is

{
  'type': 'LineString',
  'coordinates': [[x1, y1, z1], [x2, y2, z2]]
}

MultiLineString2D

Structure with one repeated field of type gis.protobuf.LineString2D: line_string.

GeoJSON representation of this message is

{
  'type': 'MultiLineString',
  'coordinates': [[[x1, y1], [x2, y2]], [[x3, y3], [x4, y4]]]
}

MultiLineString3D

Structure with one repeated field of type gis.protobuf.LineString3D: line_string.

GeoJSON representation of this message is

{
  'type': 'MultiLineString',
  'coordinates': [[[x1, y1, z1], [x2, y2, z2]], [[x3, y3, z3], [x4, y4, z4]]]
}

Polygon

syntax = "proto3";

import "gis/protobuf/point.proto";

package test;

message Test {
  gis.protobuf.Polygon2D polugon2d = 1;
  gis.protobuf.Polygon3D polugon3d = 2;
  gis.protobuf.MultiPolygon2D multi_polugon2d = 3;
  gis.protobuf.MultiPolygon3D multi_polugon3d = 4;
}

Polygon2D

Structure with one repeated field of type gis.protobuf.Point2D: point.

GeoJSON representation of this message is

{
  'type': 'Polygon',
  'coordinates': [[[x1, y1], [x2, y2]]]
}

Polygon3D

Structure with one repeated field of type gis.protobuf.Point3D: point.

GeoJSON representation of this message is

{
  'type': 'Polygon',
  'coordinates': [[[x1, y1, z1], [x2, y2, z2]]]
}

MultiPolygon2D

Structure with one repeated field of type gis.protobuf.Polygon2D: polygon.

GeoJSON representation of this message is

{
  'type': 'MultiPolygon',
  'coordinates': [[[[x1, y1], [x2, y2]]], [[[x3, y3], [x4, y4]]]]
}

MultiPolygon3D

Structure with one repeated field of type gis.protobuf.Polygon3D: polygon.

GeoJSON representation of this message is

{
  'type': 'MultiPolygon',
  'coordinates': [[[[x1, y1, z1], [x2, y2, z2]]], [[[x3, y3, z3], [x4, y4, z4]]]]
}

Usage

In proto/test.proto file:

syntax = "proto3";

import "gis/protobuf/point.proto";

package test;

message Test {
  gis.protobuf.Point2D point = 1;
}

Build:

protoc --js_out=import_style=commonjs,binary:. -I node_modules/protobuf-gis -I . proto/test.proto
npm explore protobuf-gis -- npm run fix:pb ../../proto/test_pb.js

fix:pb script fixes paths to protobuf-gis *_pb.js files. Path to test_pb.js is relative to node_modules/protobuf-gis folder.

Code:

const Test = require('./proto/test_pb').Test
const Point2D = require('protobuf-gis').Point2D

let point = new Point2D()
point.setX(10)
point.setY(20)

let test = new Test()
test.setPoint(point)

let b = test.serializeBinary()
console.log(b)

test = Test.deserializeBinary(b)
point = test.getPoint()

console.log(point.toGeoJSON())