gis原型模块
protobuf-gis的Python项目详细描述
安装
pip install protobuf-gis
附加功能
所有消息都有函数toGeoJSON,该函数返回消息的geojson表示。
消息
点
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; }
点2d
具有两个类型为float:x和y的字段的结构。
此消息的geojson表示为
{'type':'Point','coordinates':[x,y]}
点3d
具有类型为float:x、y和z的三个字段的结构。
此消息的geojson表示为
{'type':'Point','coordinates':[x,y,z]}
多点2d
一个重复字段类型为gis.protobuf.Point2D:point的结构。
此消息的geojson表示为
{'type':'MultiPoint','coordinates':[[x1,y1],[x2,y2]]}
多点3d
一个重复字段类型为gis.protobuf.Point3D:point的结构。
此消息的geojson表示为
{'type':'MultiPoint','coordinates':[[x1,y1,z1],[x2,y2,z2]]}
字符串
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; }
行字符串2d
一个重复字段类型为gis.protobuf.Point2D:point的结构。
此消息的geojson表示为
{'type':'LineString','coordinates':[[x1,y1],[x2,y2]]}
linestring3d
一个重复字段类型为gis.protobuf.Point3D:point的结构。
此消息的geojson表示为
{'type':'LineString','coordinates':[[x1,y1,z1],[x2,y2,z2]]}
多行2d
一个重复字段类型为gis.protobuf.LineString2D:line_string的结构。
此消息的geojson表示为
{'type':'MultiLineString','coordinates':[[[x1,y1],[x2,y2]],[[x3,y3],[x4,y4]]]}
多行3d
一个重复字段类型为gis.protobuf.LineString3D:line_string的结构。
此消息的geojson表示为
{'type':'MultiLineString','coordinates':[[[x1,y1,z1],[x2,y2,z2]],[[x3,y3,z3],[x4,y4,z4]]]}
多边形
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; }
多边形2d
一个重复字段类型为gis.protobuf.Point2D:point的结构。
此消息的geojson表示为
{'type':'Polygon','coordinates':[[[x1,y1],[x2,y2]]]}
Polygon3D
一个重复字段类型为gis.protobuf.Point3D:point的结构。
此消息的geojson表示为
{'type':'Polygon','coordinates':[[[x1,y1,z1],[x2,y2,z2]]]}
多多边形2d
一个重复字段类型为gis.protobuf.Polygon2D:polygon的结构。
此消息的geojson表示为
{'type':'MultiPolygon','coordinates':[[[[x1,y1],[x2,y2]]],[[[x3,y3],[x4,y4]]]]}
多多边形3d
一个重复字段类型为gis.protobuf.Polygon3D:polygon的结构。
此消息的geojson表示为
{'type':'MultiPolygon','coordinates':[[[[x1,y1,z1],[x2,y2,z2]]],[[[x3,y3,z3],[x4,y4,z4]]]]}
用法
在proto/test.proto文件中:
syntax = "proto3"; import "gis/protobuf/point.proto"; package test; message Test { gis.protobuf.Point2D point = 1; }
生成:
protoc --python_out=. -I /usr/include/ -I . proto/test.proto
代码:
from.proto.test_pbimportTestfromgis.protobufimportPoint2Dtest=Test(point=Point2D(x=10,y=20))print(test.point.toGeoJSON())