@@ -0,0 +1,499 @@
syntax = "proto2" ;
package hadmap ;
import "header.proto" ;
import "geometry.proto" ;
//////////////////////////////////////////////////
enum LaneMarkColor {
COLOR_WHITE = 0 ;
COLOR_YELLOW = 1 ;
}
enum LaneMarkType {
LANE_MARK_NONE = 0 ; //û<> л<EFBFBD> <D0BB> ߵ ij<DFB5> <C4B3> <EFBFBD>
LANE_MARK_SOLID = 0x1 ; //<2F> <> ɫ<EFBFBD> <C9AB> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKEN = 0x2 ; //<2F> <> ɫ<EFBFBD> <C9AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
LANE_MARK_SOLID2 = 0x10 ;
LANE_MARK_BROKEN2 = 0x20 ;
LANE_MARK_SOLIDSOLID = 0x11 ; //LANE_MARK_SOLID | LANE_MARK_SOLID2, <20> <> ɫ˫ʵ<CBAB> <CAB5>
LANE_MARK_SOLIDBROKEN = 0x21 ; //LANE_MARK_SOLID | LANE_MARK_BROKEN2, <20> <> ɫʵ<C9AB> <CAB5> <EFBFBD> <EFBFBD>
LANE_MARK_BROKENSOLID = 0x12 ; //LANE_MARK_BROKEN | LANE_MARK_SOLID2, <20> <> ɫ<EFBFBD> <C9AB> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKENBROKEN = 0x22 ; //LANE_MARK_BROKEN | LANE_MARK_BROKEN2,<2C> <> ɫ˫<C9AB> <CBAB> <EFBFBD> <EFBFBD>
LANE_MARK_CURB = 0x100 ; //·<> <C2B7> ʯ
LANE_MARK_FENCE = 0x200 ; //դ<> <D5A4>
LANE_MARK_SOLID_FENCE = 0x201 ; //LANE_MARK_SOLID | LANE_MARK_FENCE, դ<> <D5A4> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKEN_FENCE = 0x202 ; //LANE_MARK_BROKEN | LANE_MARK_FENCE, դ<> <D5A4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
LANE_MARK_SOLIDSOLID_FENCE = 0x211 ; //LANE_MARK_SOLIDSOLID | LANE_MARK_FENCE, դ<> <D5A4> ˫ʵ<CBAB> <CAB5>
LANE_MARK_SOLIDBROKEN_FENCE = 0x221 ; //LANE_MARK_SOLIDBROKEN | LANE_MARK_FENCE, դ<> <D5A4> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD>
LANE_MARK_BROKENSOLID_FENCE = 0x212 ; //LANE_MARK_BROKENSOLID | LANE_MARK_FENCE, դ<> <D5A4> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKENBROKEN_FENCE = 0x222 ; //LANE_MARK_BROKENBROKEN | LANE_MARK_FENCE, դ<> <D5A4> ˫<EFBFBD> <CBAB> <EFBFBD> <EFBFBD>
LANE_MARK_GRASS = 0x400 ; //·<> <C2B7> Ե
LANE_MARK_BOLD = 0x1000 ; //bold line
LANE_MARK_YELLOW = 0x10000 ; //yellow lines, default white,blue green red
LANE_MARK_SOLID_YELLOW = 0x10001 ; //LANE_MARK_SOLID | LANE_MARK_YELLOW,//<2F> Ƶ<EFBFBD> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKEN_YELLOW = 0x10002 ; //LANE_MARK_BROKEN | LANE_MARK_YELLOW,//<2F> Ƶ<EFBFBD> <C6B5> <EFBFBD> <EFBFBD> <EFBFBD>
LANE_MARK_SOLIDSOLID_YELLOW = 0x10011 ; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOW,//<2F> <> ˫ʵ<CBAB> <CAB5>
LANE_MARK_SOLIDBROKEN_YELLOW = 0x10021 ; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOW,//<2F> <> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD>
LANE_MARK_BROKENSOLID_YELLOW = 0x10012 ; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOW,//<2F> <> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKENBROKEN_YELLOW = 0x10022 ; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOW,//<2F> <> ˫<EFBFBD> <CBAB>
LANE_MARK_SOLID_YELLOW_FENCE = 0x10201 ; //LANE_MARK_SOLID_FENCE | LANE_MARK_YELLOW,դ<> <D5A4> <EFBFBD> Ƶ<EFBFBD> ʵ<EFBFBD> <CAB5>
LANE_MARK_Broken_YELLOW_FENCE = 0x10202 ; //LANE_MARK_BROKEN_FENCE | LANE_MARK_YELLOW,դ<> <D5A4> <EFBFBD> Ƶ<EFBFBD> <C6B5> <EFBFBD> <EFBFBD> <EFBFBD>
LANE_MARK_SOLIDSOLID_YELLOW_FENCE = 0x10211 ; //LANE_MARK_SOLIDSOLID_FENCE | LANE_MARK_YELLOW,դ<> <D5A4> <EFBFBD> <EFBFBD> ˫ʵ<CBAB> <CAB5>
LANE_MARK_SOLIDBROKEN_YELLOW_FENCE = 0x10221 ; //LANE_MARK_SOLIDBROKEN_FENCE | LANE_MARK_YELLOW,դ<> <D5A4> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD>
LANE_MARK_BROKENSOLID_YELLOW_FENCE = 0x10212 ; //LANE_MARK_BROKENSOLID_FENCE | LANE_MARK_YELLOW,դ<> <D5A4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKENBROKEN_YELLOW_FENCE = 0x10222 ; //LANE_MARK_BROKENBROKEN_FENCE | LANE_MARK_YELLOW,դ<> <D5A4> ˫<EFBFBD> <CBAB> ʵ
LANE_MARK_WHITEYELLOW = 0x20000 ; //<2F> <> <EFBFBD> <EFBFBD> һ <EFBFBD>
LANE_MARK_SOLIDSOLID_WHITEYELLOW = 0x20011 ; //LANE_MARK_SOLIDSOLID | LANE_MARK_WHITEYELLOW,<2C> <> <EFBFBD> <EFBFBD> һ <EFBFBD> ˫ʵ<CBAB> <CAB5>
LANE_MARK_SOLIDBROKEN_WHITEYELLOW = 0x20012 ; //LANE_MARK_SOLIDBROKEN | LANE_MARK_WHITEYELLOW,<2C> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
LANE_MARK_BROKENSOLID_WHITEYELLOW = 0x20021 ; //LANE_MARK_BROKENSOLID | LANE_MARK_WHITEYELLOW,<2C> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD>
LANE_MARK_BROKENBROKEN_WHITEYELLOW = 0x20022 ; //LANE_MARK_BROKENBROKEN | LANE_MARK_WHITEYELLOW,<2C> <> <EFBFBD> <EFBFBD> һ <EFBFBD> ˫<EFBFBD> <CBAB>
LANE_MARK_YELLOWWHITE = 0x30000 ; ////<2F> <> <EFBFBD> <EFBFBD> Ұ<EFBFBD>
LANE_MARK_SOLIDSOLID_YELLOWWHITE = 0x30011 ; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOWWHITE,<2C> <> <EFBFBD> <EFBFBD> Ұ<EFBFBD> ˫ʵ<CBAB> <CAB5>
LANE_MARK_SOLIDBROKEN_YELLOWWHITE = 0x30012 ; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOWWHITE,<2C> <> <EFBFBD> <EFBFBD> Ұ<EFBFBD> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD>
LANE_MARK_BROKENSOLID_YELLOWWHITE = 0x30021 ; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOWWHITE,<2C> <> <EFBFBD> <EFBFBD> Ұ<EFBFBD> <D2B0> <EFBFBD> ʵ<EFBFBD> <CAB5>
LANE_MARK_BROKENBROKEN_YELLOWWHITE = 0x30022 ; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOWWHITE,<2C> <> <EFBFBD> <EFBFBD> Ұ<EFBFBD> ˫<EFBFBD> <CBAB> <EFBFBD> <EFBFBD>
LANE_MARK_OTHERCOLORS = 0x40000 ;
LANE_MARK_LDM_P = 0x100000 ;
LANE_MARK_VGL_P = 0x200000 ;
LANE_MARK_SHIELDED = 0x1000000 ;
LANE_MARK_ABSEBNT = 0x2000000 ;
}
enum LaneType {
LANE_TYPE_None = 0 ;
LANE_TYPE_Driving = 1 ;
LANE_TYPE_Stop = 2 ;
LANE_TYPE_Shoulder = 3 ;
LANE_TYPE_Biking = 4 ;
LANE_TYPE_Sidewalk = 5 ;
LANE_TYPE_Border = 6 ;
LANE_TYPE_Restricted = 7 ; //BUS
LANE_TYPE_Parking = 8 ;
LANE_TYPE_MwyEntry = 9 ;
LANE_TYPE_MwyExit = 10 ;
LANE_TYPE_Acceleration = 11 ; //加速车<E9809F> ?
LANE_TYPE_Deceleration = 12 ; //减速车<E9809F> ?
LANE_TYPE_Compound = 13 ; //???, todo
LANE_TYPE_HOV = 14 ; //美国/加拿大为提高效率,拼车或者公交车<E4BAA4> ?行的车道,乘车人数需2人及以上
LANE_TYPE_Slow = 15 ; //???? todo
LANE_TYPE_Reversible = 16 ; //<2F> ?汐车<E6B190> ?
LANE_TYPE_EmergencyParking = 17 ; //紧急停车带
LANE_TYPE_Emergency = 20 ;
LANE_TYPE_TurnLeftWaiting = 21 ;
LANE_TYPE_Ramp = 22 ; //匝道
LANE_TYPE_UTurnWaiting = 23 ; //掉头待转区车<E58CBA> ?
LANE_TYPE_TurnRightWaiting = 24 ; //右转待转区车<E58CBA> ?
LANE_TYPE_JuncTurnLeft = 25 ; //<2F> ?口左<E58FA3> ?车道
LANE_TYPE_JuncStraight = 26 ; //<2F> ?口直行车<E8A18C> ?
LANE_TYPE_JuncTurnRight = 27 ; //<2F> ?口右<E58FA3> ?车道
LANE_TYPE_Turn = 28 ; //掉头车道
LANE_TYPE_Diversion = 29 ; //导流带车<E5B8A6> ?
LANE_TYPE_DrivingSide = 30 ; //<2F> ?通车<E9809A> ?-辅路
LANE_TYPE_BikingSide = 31 ; //非机动车<E58AA8> ?-辅路
LANE_TYPE_TurnRighSide = 32 ; //右转车道-辅路
LANE_TYPE_TaxiLane = 33 ; //出<> ?<3F> 车专用车道
LANE_TYPE_LeftOrUturnWaite = 34 ; //左转或调头待<E5A4B4> ?车道
LANE_TYPE_PoliceCarLane = 35 ; //警务专用车道
LANE_TYPE_AcceleOrDeceleLane = 36 ; //加减速车<E9809F> ?
}
enum LaneArrow {
LANE_ARROW_None = 0x0 ;
LANE_ARROW_Straight = 0x1 ;
LANE_ARROW_Left = 0x2 ;
LANE_ARROW_Right = 0x4 ;
LANE_ARROW_Uturn = 0x8 ;
LANE_ARROW_SkewLeft = 0x20 ;
LANE_ARROW_SkewRight = 0x40 ;
LANE_ARROW_StraightLeft = 0x3 ; //LANE_ARROW_Straight | LANE_ARROW_Left,
LANE_ARROW_StraightRight = 0x5 ; //LANE_ARROW_Straight | LANE_ARROW_Right,
LANE_ARROW_LeftRight = 0x6 ; //LANE_ARROW_Left | LANE_ARROW_Right,
LANE_ARROW_LeftUturn = 0xa ; //LANE_ARROW_Left | LANE_ARROW_Uturn,
LANE_ARROW_StraightUturn = 0x9 ; //LANE_ARROW_Straight | LANE_ARROW_Uturn,
}
enum RoadType {
ROAD_TYPE_Normal = 0 ;
ROAD_TYPE_OTHER = 1 ;
ROAD_TYPE_SA = 2 ; // Service Area
ROAD_TYPE_PA = 3 ; //Parking Area
ROAD_TYPE_ControlAccess = 4 ;
ROAD_TYPE_GenerapRamp = 5 ;
ROAD_TYPE_Overpass = 6 ;
ROAD_TYPE_Underpass = 7 ;
ROAD_TYPE_PrivateRoad = 8 ;
ROAD_TYPE_PedestrainRoad = 9 ;
ROAD_TYPE_OverpassForP = 10 ; //Overpass for passenger
ROAD_TYPE_BusOnly = 11 ;
ROAD_TYPE_BicycleOnly = 12 ; //Bicycle only30 Bridge
ROAD_TYPE_Tunnel = 13 ;
ROAD_TYPE_UTA = 14 ; //Undefined Traffic Figure
ROAD_TYPE_ICEntrance = 15 ;
ROAD_TYPE_TollBooth = 16 ;
ROAD_TYPE_ConstructionRoad = 17 ;
ROAD_TYPE_Roundabout = 18 ;
ROAD_TYPE_Intersection = 19 ;
}
enum RoadDirection {
ROAD_DIRECTION_FORWARD = 0 ;
ROAD_DIRECTION_BACKWARD = 1 ;
ROAD_DIRECTION_BIDIRECTIONAL = 2 ;
}
enum ObjectType {
OBJECT_TYPE_None = 0 ;
OBJECT_TYPE_Curb = 1 ;
OBJECT_TYPE_TrafficBarrier = 2 ;
OBJECT_TYPE_OverheadCrossing = 3 ;
OBJECT_TYPE_Tunnel = 4 ;
OBJECT_TYPE_Gantry = 5 ;
OBJECT_TYPE_TrafficSign = 6 ;
OBJECT_TYPE_VariableMessageSign = 7 ;
OBJECT_TYPE_PermanentDelineator = 8 ;
OBJECT_TYPE_TollBooth = 9 ;
OBJECT_TYPE_EmergencyCallbox = 10 ;
OBJECT_TYPE_Ditch = 11 ;
OBJECT_TYPE_Pole = 12 ;
OBJECT_TYPE_Building = 13 ;
OBJECT_TYPE_RoadSign = 14 ;
OBJECT_TYPE_CrossWalk = 15 ;
OBJECT_TYPE_TrafficLights = 16 ;
OBJECT_TYPE_TunnelWall = 17 ;
OBJECT_TYPE_Arrow = 18 ;
OBJECT_TYPE_Text = 19 ;
OBJECT_TYPE_RoadSign_Text = 20 ;
OBJECT_TYPE_Stop = 21 ;
OBJECT_TYPE_LaneBoundary = 22 ;
OBJECT_TYPE_ParkingSpace = 23 ;
OBJECT_TYPE_DrivingArea = 24 ;
OBJECT_TYPE_FeaturePoint = 25 ;
OBJECT_TYPE_SpeedLimit = 26 ;
OBJECT_TYPE_EdgeDriving = 27 ;
OBJECT_TYPE_Horn = 28 ;
OBJECT_TYPE_NoParkingGrid = 29 ;
}
enum ObjectShape {
OBJECT_SHAPE_None = 0 ;
OBJECT_SHAPE_Rectangle = 1 ;
OBJECT_SHAPE_Triangle = 2 ;
OBJECT_SHAPE_Circle = 3 ;
OBJECT_SHAPE_Diamond = 4 ;
OBJECT_SHAPE_RTriangle = 5 ;
OBJECT_SHAPE_Arrow = 6 ;
OBJECT_SHAPE_Bicycle = 7 ;
OBJECT_SHAPE_WheelChair = 8 ;
OBJECT_SHAPE_Cross = 9 ;
OBJECT_SHAPE_Polyline = 10 ;
OBJECT_SHAPE_Polygon = 11 ;
OBJECT_SHAPE_Point = 12 ;
}
// junction type
enum JunctionType {
JCT_TYPE_CROSS = 609 ; //ʮ<> <CAAE> ·<EFBFBD> ڡ<EFBFBD> T<EFBFBD> <54> ·<EFBFBD> <C2B7>
JCT_TYPE_SIDE_MASTER = 612 ; //<2F> <> ·<EFBFBD> <C2B7> <EFBFBD> <EFBFBD> ·֮<C2B7> <D6AE> <EFBFBD> ·<EFBFBD> ڿ<EFBFBD>
JCT_TYPE_TO_RIGHT = 614 ; //<2F> <> <EFBFBD> <EFBFBD>
JCT_TYPE_INCREASE = 6151 ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӵ<EFBFBD>
JCT_TYPE_DECREASE = 6152 ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ٴ<EFBFBD>
JCT_TYPE_OUT_RAMP = 6153 ; //<2F> <> <EFBFBD> ѵ <EFBFBD> <D1B5> <EFBFBD>
JCT_TYPE_IN_RAMP = 6154 ; //<2F> <> <EFBFBD> ѵ <EFBFBD> <D1B5> <EFBFBD>
JCT_TYPE_SINGLE_UTURN = 616 ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ͷ
JCT_TYPE_RING_LAND = 617 ; //<2F> <> <EFBFBD> <EFBFBD>
JCT_TYPE_SAMLL_MASTER = 619 ; //С ·<D0A1> ڡ<EFBFBD> <DAA1> <EFBFBD> ·<EFBFBD> <C2B7> <EFBFBD> Ӵ<EFBFBD>
JCT_TYPE_CROSS_NOT_LANE_NOT_SEGGREGATE = 6091 ; //ʮ<> <CAAE> ·<EFBFBD> ڡ<EFBFBD> T<EFBFBD> <54> ·<EFBFBD> <C2B7> (·<> ڷ<EFBFBD> Χ <EFBFBD> <CEA7> <EFBFBD> <EFBFBD> <DEB3> <EFBFBD> <EFBFBD> ߹ᴩ,<2C> <> ·<EFBFBD> м<EFBFBD> <D0BC> <EFBFBD> <EFBFBD> <EFBFBD> <DFBC> <EFBFBD> <EFBFBD> <EFBFBD> )
JCT_TYPE_CROSS_NOT_LANE_SEGGREGATE = 6092 ; //ʮ<> <CAAE> ·<EFBFBD> ڡ<EFBFBD> T<EFBFBD> <54> ·<EFBFBD> <C2B7> (·<> ڷ<EFBFBD> Χ <EFBFBD> <CEA7> <EFBFBD> <EFBFBD> <DEB3> <EFBFBD> <EFBFBD> ߹ᴩ,<2C> <> ·<EFBFBD> м<EFBFBD> <D0BC> <EFBFBD> <EFBFBD> <EFBFBD> <DFBC> <EFBFBD> <EFBFBD> <EFBFBD> )
JCT_TYPE_CROSS_LANE_NOT_SEGGREGATE = 6201 ; //ʮ<> <CAAE> ·<EFBFBD> ڡ<EFBFBD> T<EFBFBD> <54> ·<EFBFBD> <C2B7> (·<> ڷ<EFBFBD> Χ <EFBFBD> ڴ<EFBFBD> <DAB4> ڳ<EFBFBD> <DAB3> <EFBFBD> <EFBFBD> ߹ᴩ,<2C> <> ·<EFBFBD> м<EFBFBD> <D0BC> <EFBFBD> <EFBFBD> <EFBFBD> <DFBC> <EFBFBD> <EFBFBD> <EFBFBD> )
JCT_TYPE_CROSS_LANE_SEGGREGATE = 6202 ; //ʮ<> <CAAE> ·<EFBFBD> ڡ<EFBFBD> T<EFBFBD> <54> ·<EFBFBD> <C2B7> (·<> ڷ<EFBFBD> Χ <EFBFBD> ڴ<EFBFBD> <DAB4> ڳ<EFBFBD> <DAB3> <EFBFBD> <EFBFBD> ߹ᴩ,<2C> <> ·<EFBFBD> м<EFBFBD> <D0BC> <EFBFBD> <EFBFBD> <EFBFBD> <DFBC> <EFBFBD> <EFBFBD> <EFBFBD> )
JCT_TYPE_UNKOWN = 99999 ; // δ֪<CEB4> <D6AA> <EFBFBD> <EFBFBD>
}
// physical isolation type
enum IsolationType {
ISO_TYPE_GREENBELT = 1 ;
ISO_TYPE_SAFETYISLAND = 2 ;
ISO_TYPE_JUNCTION_CURB = 3 ;
}
message BoundaryPoint {
optional double x = 1 ;
optional double y = 2 ;
optional double z = 3 ;
optional LaneMarkType point_type = 4 ;
optional uint32 lane_tag = 5 ;
}
message LanePoint {
optional double x = 1 ;
optional double y = 2 ;
optional double z = 3 ;
optional LaneType point_center_type = 4 ;
optional LaneArrow point_center_arrow = 5 ;
optional uint32 point_speed_limit = 6 ;
}
message LaneBoundary {
// lane boundary primary key
optional uint64 pkid = 1 ;
// epsg code
optional uint32 srs = 2 ;
// lane mark
optional LaneMarkType type = 3 ;
optional LaneMarkColor color = 4 ;
// 将LaneMarkType绑定到每个geom点上
repeated BoundaryPoint point = 5 ;
}
message Lane {
// road primary key
optional uint64 road_pkid = 1 ;
// sectin id, ascend order
optional uint32 section_id = 2 ;
// lane id follow OpenDrive Specification
optional int32 lane_id = 3 ;
// lane name, "road.section.lane"
optional string name = 4 ;
// epsg code
optional uint32 srs = 5 ;
// left lane boundary geometry pkid
optional uint64 left_boundary_id = 6 ;
// right lane boundary geometry pkid
optional uint64 right_boundary_id = 7 ;
// lane type
optional LaneType type = 8 ;
// lane arrow
optional LaneArrow arrow = 9 ;
// speed limit
optional uint32 speed_limit = 10 ;
// 将LaneType, LaneArrow, speedlimit绑定到每个geom点上
repeated LanePoint point = 11 ;
// <20> <> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> <EFBFBD> ڵ<EFBFBD> <DAB5> ܳ<EFBFBD> <DCB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
optional uint32 parallel_lane_count = 12 ;
// <20> <> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> <EFBFBD> ڵij<DAB5> <C4B3> <EFBFBD> <EFBFBD> Ļ<EFBFBD> <C4BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
optional uint32 drive_lane_count = 13 ;
// whether it is recommended
optional bool recommended = 14 ;
// for parallel lanes, steps away from the best lane
optional int32 rank = 15 ;
// Passable distance
optional double passable_dis = 16 ;
optional double dis_to_goal = 17 ;
}
message Section {
// section id
optional uint32 id = 1 ;
// lanes
repeated Lane lanes = 2 ;
// boundaries
repeated LaneBoundary boundaries = 3 ;
}
message Road {
// primary key
optional uint64 pkid = 1 ;
// geohash key
optional string id = 2 ;
// road name
optional string name = 3 ;
// epsg code
optional uint32 srs = 4 ;
// road length
optional float length = 6 ;
// section count of road
optional uint32 section_num = 7 ;
// road type
optional RoadType road_type = 8 ;
// road driving direction
optional RoadDirection direction = 9 ;
// curvature geometry
repeated geometry.Point curvature = 10 ;
// slope geometry
repeated geometry.Point slope = 11 ;
// heading geometry
repeated geometry.Point heading = 12 ;
// super_elevation geometry
repeated geometry.Point super_elevation = 13 ;
// road geometry
repeated geometry.Point geom = 14 ;
// sections
repeated Section sections = 15 ;
// opposite roads
repeated uint64 opposite_pkid = 16 ;
// this road have lane nums
optional uint32 lane_num = 17 ;
// this road hava drive lane nums
optional uint32 drive_lane_num = 18 ;
}
message Junction {
// primary key
optional uint64 pkid = 1 ;
// epsg code
optional uint32 srs = 2 ;
// junction altitude
optional float altitude = 3 ;
// junction polygon
optional geometry.Polygon geom = 4 ;
// junction type
optional JunctionType type = 5 ;
// road pkid
repeated uint32 road_ids = 6 ;
}
message LaneLink {
// primary key
optional uint64 pkid = 1 ;
// from road pkid
optional uint64 from_road_pkid = 2 ;
// from road section id
optional uint32 from_section_id = 3 ;
// from road lane id
optional int32 from_lane_id = 4 ;
// to road pkid
optional uint64 to_road_pkid = 5 ;
// to road section id
optional uint32 to_section_id = 6 ;
// to road lane id
optional int32 to_lane_id = 7 ;
// 驶出<E9A9B6> ?口的lanlink, <6B> ?<3F> 字段true, 非<EFBC8C> ?<3F> ?fasle
optional bool from_junction = 8 ;
// 进出<E8BF9B> ?口的lanlink, <6B> ?<3F> 字段true, 非<EFBC8C> ?<3F> ?false
optional bool to_junction = 9 ;
// lane_link geometry
repeated geometry.Point geom = 10 ;
// the type of lane_link
optional LaneType type = 11 ;
}
message Object {
// object primary key
optional uint64 pkid = 1 ;
// road id
optional uint64 road_pkid = 2 ;
// section id
optional uint64 section_id = 3 ;
// lane id
optional int32 lane_id = 4 ;
// objcet type
optional ObjectType type = 5 ;
// polygon style
optional ObjectShape shape = 6 ;
// object text
optional string text = 7 ;
// object attribute
optional string attribute = 8 ;
// object geom
repeated geometry.Point geom = 9 ;
// object value
optional float value = 10 ;
}
message PhysicalIsolation {
// primary key
optional uint64 pkid = 1 ;
// physical isolation name
optional string name = 2 ;
// type
optional IsolationType type = 3 ;
// road pkid
repeated uint64 road_pkid = 4 ;
// junction pkid
repeated uint64 junction_pkid = 5 ;
// physical isolation geometry
optional geometry.Polygon geom = 6 ;
}
message Map {
repeated Road roads = 1 ;
repeated LaneLink lanelinks = 2 ;
repeated Junction junctions = 3 ;
repeated Object objects = 4 ;
repeated PhysicalIsolation isolations = 5 ;
//TODO: junction relation with roads
}
message MapMsg {
optional common.Header header = 1 ;
optional Map map = 2 ;
}