Package: protobuf-gis
Installationpipinstallprotobuf-gisAdditional functionsAll messages has functiontoGeoJSONthat returns a GeoJSON representation of a message.MessagesPointsyntax = "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;
}Point2DStructure with two fields of typefloat:xandy.GeoJSON representation of this message is{'type':'Point','coordinates':[x,y]}Point3DStructure with three fields of typefloat:x,yandz.GeoJSON representation of this message is{'type':'Point','coordinates':[x,y,z]}MultiPoint2DStructure with one repeated field of typegis.protobuf.Point2D:point.GeoJSON representation of this message is{'type':'MultiPoint','coordinates':[[x1,y1],[x2,y2]]}MultiPoint3DStructure with one repeated field of typegis.protobuf.Point3D:point.GeoJSON representation of this message is{'type':'MultiPoint','coordinates':[[x1,y1,z1],[x2,y2,z2]]}LineStringsyntax = "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;
}LineString2DStructure with one repeated field of typegis.protobuf.Point2D:point.GeoJSON representation of this message is{'type':'LineString','coordinates':[[x1,y1],[x2,y2]]}LineString3DStructure with one repeated field of typegis.protobuf.Point3D:point.GeoJSON representation of this message is{'type':'LineString','coordinates':[[x1,y1,z1],[x2,y2,z2]]}MultiLineString2DStructure with one repeated field of typegis.protobuf.LineString2D:line_string.GeoJSON representation of this message is{'type':'MultiLineString','coordinates':[[[x1,y1],[x2,y2]],[[x3,y3],[x4,y4]]]}MultiLineString3DStructure with one repeated field of typegis.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]]]}Polygonsyntax = "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;
}Polygon2DStructure with one repeated field of typegis.protobuf.Point2D:point.GeoJSON representation of this message is{'type':'Polygon','coordinates':[[[x1,y1],[x2,y2]]]}Polygon3DStructure with one repeated field of typegis.protobuf.Point3D:point.GeoJSON representation of this message is{'type':'Polygon','coordinates':[[[x1,y1,z1],[x2,y2,z2]]]}MultiPolygon2DStructure with one repeated field of typegis.protobuf.Polygon2D:polygon.GeoJSON representation of this message is{'type':'MultiPolygon','coordinates':[[[[x1,y1],[x2,y2]]],[[[x3,y3],[x4,y4]]]]}MultiPolygon3DStructure with one repeated field of typegis.protobuf.Polygon3D:polygon.GeoJSON representation of this message is{'type':'MultiPolygon','coordinates':[[[[x1,y1,z1],[x2,y2,z2]]],[[[x3,y3,z3],[x4,y4,z4]]]]}UsageInproto/test.protofile:syntax = "proto3";

import "gis/protobuf/point.proto";

package test;

message Test {
  gis.protobuf.Point2D point = 1;
}Build:protoc--python_out=.-I/usr/include/-I.proto/test.protoCode:from.proto.test_pbimportTestfromgis.protobufimportPoint2Dtest=Test(point=Point2D(x=10,y=20))print(test.point.toGeoJSON())