├── modules └── map │ ├── __init__.py │ ├── map_id_pb2.py │ ├── map_junction_pb2.py │ ├── map_crosswalk_pb2.py │ ├── map_speed_bump_pb2.py │ ├── map_clear_area_pb2.py │ ├── map_yield_sign_pb2.py │ ├── map_speed_control_pb2.py │ ├── map_stop_sign_pb2.py │ ├── map_parking_space_pb2.py │ ├── map_geometry_pb2.py │ ├── map_pnc_junction_pb2.py │ ├── geometry_pb2.py │ ├── map_signal_pb2.py │ ├── map_road_pb2.py │ └── map_pb2.py ├── static ├── icon.png ├── stop.png ├── signal.png └── stopSmall.png ├── Lib.py ├── Objects ├── Relations.py ├── StopLane.py ├── Signal.py ├── Overlap.py ├── StopSign.py ├── Neighbor.py ├── Junction.py ├── Lane.py └── Shape.py ├── .gitignore ├── test.py ├── requirements.txt ├── Pane.py ├── README.md ├── OffsetsDialog.py ├── create_map.py ├── Toolbars.py ├── Save.py ├── map_elements.py └── Canvas.py /modules/map/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mliubimov/MapCreator/HEAD/static/icon.png -------------------------------------------------------------------------------- /static/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mliubimov/MapCreator/HEAD/static/stop.png -------------------------------------------------------------------------------- /static/signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mliubimov/MapCreator/HEAD/static/signal.png -------------------------------------------------------------------------------- /static/stopSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mliubimov/MapCreator/HEAD/static/stopSmall.png -------------------------------------------------------------------------------- /Lib.py: -------------------------------------------------------------------------------- 1 | 2 | import math 3 | 4 | def distance(p): 5 | return math.sqrt(p.x() * p.x() + p.y() * p.y()) 6 | 7 | -------------------------------------------------------------------------------- /Objects/Relations.py: -------------------------------------------------------------------------------- 1 | class Relation(): 2 | def __init__(self,successor,predecessor): 3 | self.successor=successor 4 | self.predecessor=predecessor 5 | -------------------------------------------------------------------------------- /Objects/StopLane.py: -------------------------------------------------------------------------------- 1 | class StopLane(): 2 | def __init__(self,id): 3 | self.id=id 4 | self.points=[] 5 | self.overlapsId=[] 6 | self.direction=1 7 | -------------------------------------------------------------------------------- /Objects/Signal.py: -------------------------------------------------------------------------------- 1 | class Signal(): 2 | def __init__(self,id): 3 | self.id=id 4 | self.point=None 5 | self.pointsStopLane=[] 6 | self.idStopLane=None 7 | -------------------------------------------------------------------------------- /Objects/Overlap.py: -------------------------------------------------------------------------------- 1 | class Overlap(): 2 | def __init__(self,id): 3 | self.id=id 4 | self.laneOverlapId=-1 5 | self.pointOverlap=-1 6 | self.IdSecObject=-1 7 | -------------------------------------------------------------------------------- /Objects/StopSign.py: -------------------------------------------------------------------------------- 1 | class StopSign(): 2 | def __init__(self,id): 3 | self.id=id 4 | self.idStopLane=None 5 | self.pointsStopLane=[] 6 | self.overlapsId=[] 7 | self.direction=2 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | __pycache__/ 3 | 4 | geotiff/ 5 | 6 | pickle/ 7 | 8 | settings\.pickle 9 | 10 | *.pyc 11 | 12 | map (copy)/ 13 | 14 | Centres/ 15 | 16 | trajectory/ 17 | 18 | static/ 19 | 20 | *.pickle 21 | 22 | 2019-10-21-12_06_10_position.map 23 | -------------------------------------------------------------------------------- /Objects/Neighbor.py: -------------------------------------------------------------------------------- 1 | class Neighbor(): 2 | def __init__(self,id,mainLane,leftForward,leftReverse,RightForward,RightReverse): 3 | self.id=id 4 | self.mainLane=mainLane 5 | self.leftForward=leftForward 6 | self.leftReverse=leftReverse 7 | self.RightForward=RightForward 8 | self.RightReverse=RightReverse -------------------------------------------------------------------------------- /Objects/Junction.py: -------------------------------------------------------------------------------- 1 | from Objects.Shape import Shape 2 | 3 | class Junction(): 4 | def __init__(self,id): 5 | self.id=id 6 | self.width=3 7 | self.speed=20 8 | self.points=[] 9 | self.borderLeft=[] 10 | self.borderRight=[] 11 | self.direction="FORWARD" 12 | self.isLaneChange=False 13 | self.turn=1 -------------------------------------------------------------------------------- /Objects/Lane.py: -------------------------------------------------------------------------------- 1 | from Objects.Shape import Shape 2 | 3 | class Lane(): 4 | def __init__(self,id,idLeft,idRight,width,speed,turn): 5 | self.id=id 6 | self.leftBorderType=-1 7 | self.rightBorderType=-1 8 | self.direction="FORWARD" 9 | self.Neighbors="" 10 | self.points=[] 11 | self.leftBorderPoints=[] 12 | self.rightBorderPoints=[] 13 | self.idLeftBorder=idLeft 14 | self.idRightBorder=idRight 15 | self.width=width 16 | self.turn=turn 17 | self.speed=speed -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | 2 | import math 3 | 4 | 5 | def cosdir(azim): 6 | az = math.radians(azim) 7 | cosa = math.sin(az) 8 | cosb = math.cos(az) 9 | return cosa,cosb 10 | 11 | # original point 12 | point = QgsPoint(147352.43, 94305.21) 13 | for elem in layer.getFeatures(): 14 | line = elem.geometry().asPolyline() 15 | for seg_start, seg_end in pair(line): 16 | line_start = QgsPoint(seg_start) 17 | line_end = QgsPoint(seg_end) 18 | length = math.sqrt(line_start.sqrDist(line_end)) 19 | # direction cosines from the azimuth 20 | cosa, cosb = cosdir(line_start.azimuth(line_end)) 21 | # generate the points in the same direction 22 | resulting_point = QgsPoint(point.x()+(length*cosa), point.y()+(length*cosb)) 23 | result= QgsGeometry.fromPolyline([point,resulting_point]) 24 | point = resulting_point -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # Requirements automatically generated by pigar. 2 | # https://github.com/damnever/pigar 3 | 4 | # Canvas.py: 8 5 | # MapCreator.py: 13 6 | Pillow == 5.1.0 7 | 8 | # Canvas.py: 25 9 | # Save.py: 10 10 | # create_import map.py: 20 11 | # map_elements.py: 9 12 | # utils.py: 5 13 | Shapely == 1.6.4.post2 14 | 15 | # Canvas.py: 24 16 | # create_import map.py: 5 17 | # map_elements.py: 8 18 | matplotlib == 2.2.2 19 | 20 | # Canvas.py: 10 21 | # MapCreator.py: 15 22 | # Objects/Shape.py: 6 23 | # create_import map.py: 6,11,21 24 | # map_elements.py: 3 25 | # utils.py: 3 26 | numpy == 1.16.0 27 | 28 | # utils.py: 1 29 | opencv_python == 4.0.0.21 30 | 31 | # map/geometry_pb2.py: 6,7,8,9,10 32 | # map/map_clear_area_pb2.py: 6,7,8,9,10 33 | # map/map_crosswalk_pb2.py: 6,7,8,9,10 34 | # map/map_geometry_pb2.py: 6,7,8,9,10 35 | # map/map_id_pb2.py: 6,7,8,9,10 36 | # map/map_junction_pb2.py: 6,7,8,9,10 37 | # map/map_lane_pb2.py: 6,7,8,9,10 38 | # map/map_overlap_pb2.py: 6,7,8,9,10 39 | # map/map_parking_space_pb2.py: 6,7,8,9,10 40 | # map/map_pb2.py: 6,7,8,9,10 41 | # map/map_road_pb2.py: 6,7,8,9,10 42 | # map/map_signal_pb2.py: 6,7,8,9,10 43 | # map/map_speed_bump_pb2.py: 6,7,8,9,10 44 | # map/map_speed_control_pb2.py: 6,7,8,9,10 45 | # map/map_stop_sign_pb2.py: 6,7,8,9,10 46 | # map/map_yield_sign_pb2.py: 6,7,8,9,10 47 | protobuf == 3.5.2.post1 48 | 49 | # create_import map.py: 1 50 | requests == 2.2.1 51 | 52 | # create_import map.py: 7 53 | utm == 0.4.2 54 | 55 | pyqt5 56 | 57 | -------------------------------------------------------------------------------- /Pane.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtCore import QDir, Qt,QSize,QSettings,QRect,QEvent 2 | from PyQt5.QtGui import QImage, QPainter, QPalette, QPixmap, QPen 3 | from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QLabel,QToolBar, 4 | QMainWindow, QMenu, QMessageBox, QScrollArea, QSizePolicy,QVBoxLayout,QWidget,QFrame,QScrollBar,QHBoxLayout) 5 | from PyQt5.QtPrintSupport import QPrintDialog, QPrinter 6 | class Pane(QScrollArea): 7 | 8 | def __init__(self, alignment=0, parent=None): 9 | super().__init__(parent) 10 | self.mainWidget = QWidget(self) 11 | self.mainLayout = QVBoxLayout(self.mainWidget) 12 | self.mainLayout.setAlignment(alignment) 13 | self.mainLayout.setContentsMargins(0, 0, 0, 0) 14 | self.mainLayout.setSpacing(0) 15 | self.setContentsMargins(0, 0, 0, 0) 16 | self.setFrameStyle(QFrame.NoFrame) 17 | 18 | self.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) 19 | self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) 20 | self.setSizePolicy(QSizePolicy.Ignored, 21 | QSizePolicy.Ignored) 22 | self.setWidgetResizable(True) 23 | self.setWidget(self.mainWidget) 24 | 25 | def wheelEvent(self, ev): 26 | modifiers = QApplication.keyboardModifiers() 27 | if modifiers == Qt.ControlModifier: 28 | return False 29 | super(Pane, self).wheelEvent(ev) 30 | def addWidget(self, widget): 31 | self.mainLayout.addWidget(widget) 32 | 33 | def removeWidget(self, widget): 34 | self.mainLayout.removeWidget(widget) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MapCreator 2 | This tool help to generate base_import map.txt file which is the main component for map in the [Apollo](https://github.com/ApolloAuto/apollo) . We use prepared geotiff file our territory for map generation. According to the file information there is a comparison of coordinates on the image with real coordinates. Accuracy of objects size depend on geotiff file. We use ``` gdalinfo ``` for information about geotiff file. 3 | 4 | Information about our geotiff file 5 | ``` 6 | 7 | Coordinate System is: 8 | PROJCS["WGS 84 / UTM zone 39N", 9 | GEOGCS["WGS 84", 10 | DATUM["WGS_1984", 11 | SPHEROID["WGS 84",6378137,298.257223563, 12 | AUTHORITY["EPSG","7030"]], 13 | AUTHORITY["EPSG","6326"]], 14 | PRIMEM["Greenwich",0, 15 | AUTHORITY["EPSG","8901"]], 16 | UNIT["degree",0.0174532925199433, 17 | AUTHORITY["EPSG","9122"]], 18 | AUTHORITY["EPSG","4326"]], 19 | PROJECTION["Transverse_Mercator"], 20 | PARAMETER["latitude_of_origin",0], 21 | PARAMETER["central_meridian",51], 22 | PARAMETER["scale_factor",0.9996], 23 | PARAMETER["false_easting",500000], 24 | PARAMETER["false_northing",0], 25 | UNIT["metre",1, 26 | AUTHORITY["EPSG","9001"]], 27 | AXIS["Easting",EAST], 28 | AXIS["Northing",NORTH], 29 | AUTHORITY["EPSG","32639"]] 30 | Origin = (357745.018840000033379,6181870.420440000481904) 31 | Pixel Size = (0.205375334528076,-0.205372475295642) 32 | 33 | 34 | ``` 35 | When we make map we use geographic coordinates of left upper corner like a local center. We implement the lanes, roads, stop signs and signals. The implementation of junctions works using lanes without borders. The relation of signal and stop signs with stop lanes sets by hand. Overlaps also set by hand. 36 | 37 | 38 | ##### Process of map creation 39 | [![](http://img.youtube.com/vi/muWFqz1OA2I/0.jpg)](http://www.youtube.com/watch?v=muWFqz1OA2I "Map making process") 40 | -------------------------------------------------------------------------------- /modules/map/map_id_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_id.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | 17 | 18 | DESCRIPTOR = _descriptor.FileDescriptor( 19 | name='modules/map/proto/map_id.proto', 20 | package='apollo.hdmap', 21 | syntax='proto2', 22 | serialized_pb=_b('\n\x1emodules/map/proto/map_id.proto\x12\x0c\x61pollo.hdmap\"\x10\n\x02Id\x12\n\n\x02id\x18\x01 \x01(\t') 23 | ) 24 | 25 | 26 | 27 | 28 | _ID = _descriptor.Descriptor( 29 | name='Id', 30 | full_name='apollo.hdmap.Id', 31 | filename=None, 32 | file=DESCRIPTOR, 33 | containing_type=None, 34 | fields=[ 35 | _descriptor.FieldDescriptor( 36 | name='id', full_name='apollo.hdmap.Id.id', index=0, 37 | number=1, type=9, cpp_type=9, label=1, 38 | has_default_value=False, default_value=_b("").decode('utf-8'), 39 | message_type=None, enum_type=None, containing_type=None, 40 | is_extension=False, extension_scope=None, 41 | options=None), 42 | ], 43 | extensions=[ 44 | ], 45 | nested_types=[], 46 | enum_types=[ 47 | ], 48 | options=None, 49 | is_extendable=False, 50 | syntax='proto2', 51 | extension_ranges=[], 52 | oneofs=[ 53 | ], 54 | serialized_start=48, 55 | serialized_end=64, 56 | ) 57 | 58 | DESCRIPTOR.message_types_by_name['Id'] = _ID 59 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 60 | 61 | Id = _reflection.GeneratedProtocolMessageType('Id', (_message.Message,), dict( 62 | DESCRIPTOR = _ID, 63 | __module__ = 'modules.map.map_id_pb2' 64 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Id) 65 | )) 66 | _sym_db.RegisterMessage(Id) 67 | 68 | 69 | # @@protoc_insertion_point(module_scope) 70 | -------------------------------------------------------------------------------- /OffsetsDialog.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtCore import QDir, Qt,QSize,QSettings,QRect,QEvent,QFile 2 | from PyQt5.QtGui import QImage, QPainter, QPalette, QPixmap, QPen,QIcon,QDoubleValidator 3 | from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QLabel,QToolBar,QDialog,QLineEdit, 4 | QSizePolicy,QVBoxLayout,QWidget,QFrame,QScrollBar,QHBoxLayout,QTextEdit,QDialogButtonBox) 5 | 6 | 7 | class OffsetsDialog(QDialog): 8 | def __init__(self, offsetX,offsetY,rotation): 9 | super(OffsetsDialog, self).__init__(None) 10 | 11 | layout = QVBoxLayout(self) 12 | offsetX=str(offsetX).replace(".",",") 13 | offsetY=str(offsetY).replace(".",",") 14 | rotation=str(rotation).replace(".",",") 15 | # nice widget for editing the date 16 | labelX=QLabel() 17 | labelX.setText("Offset X") 18 | self.offsetX = QLineEdit(self) 19 | self.offsetX.setText(str(offsetX)) 20 | labelY=QLabel() 21 | labelY.setText("Offset Y") 22 | self.offsetY = QLineEdit(self) 23 | self.offsetY.setText(str(offsetY)) 24 | labelR=QLabel() 25 | labelR.setText("Rotation") 26 | self.rotation = QLineEdit(self) 27 | self.rotation.setText(str(rotation)) 28 | 29 | self.onlyFloat=QDoubleValidator() 30 | self.offsetX.setValidator(self.onlyFloat) 31 | self.offsetY.setValidator(self.onlyFloat) 32 | self.rotation.setValidator(self.onlyFloat) 33 | # OK and Cancel buttons 34 | buttons = QDialogButtonBox( 35 | QDialogButtonBox.Ok | QDialogButtonBox.Cancel, 36 | Qt.Horizontal, self) 37 | buttons.accepted.connect(self.accept) 38 | buttons.rejected.connect(self.reject) 39 | layout.addWidget(labelX) 40 | layout.addWidget(self.offsetX) 41 | layout.addWidget(labelY) 42 | layout.addWidget(self.offsetY) 43 | layout.addWidget(labelR) 44 | layout.addWidget(self.rotation) 45 | layout.addWidget(buttons) 46 | 47 | 48 | # get current date and time from the dialog 49 | def getOffsetsFromEdit(self): 50 | return self.offsetX.text(),self.offsetY.text(),self.rotation.text() 51 | 52 | # static method to create the dialog and return (date, time, accepted) 53 | @staticmethod 54 | def getOffsets(offsetX,offsetY,rotation): 55 | dialog = OffsetsDialog(offsetX,offsetY,rotation) 56 | result = dialog.exec_() 57 | x,y,rotation = dialog.getOffsetsFromEdit() 58 | x=float(x.replace(",",".")) 59 | y=float(y.replace(",",".")) 60 | rotation=float(rotation.replace(",",".")) 61 | 62 | return (x,y,rotation, result == QDialog.Accepted) -------------------------------------------------------------------------------- /modules/map/map_junction_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_junction.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 17 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_junction.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n$modules/map/proto/map_junction.proto\x12\x0c\x61pollo.hdmap\x1a\x1emodules/map/proto/map_id.proto\x1a$modules/map/proto/map_geometry.proto\"v\n\x08Junction\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x07polygon\x18\x02 \x01(\x0b\x32\x15.apollo.hdmap.Polygon\x12$\n\noverlap_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | 31 | _JUNCTION = _descriptor.Descriptor( 32 | name='Junction', 33 | full_name='apollo.hdmap.Junction', 34 | filename=None, 35 | file=DESCRIPTOR, 36 | containing_type=None, 37 | fields=[ 38 | _descriptor.FieldDescriptor( 39 | name='id', full_name='apollo.hdmap.Junction.id', index=0, 40 | number=1, type=11, cpp_type=10, label=1, 41 | has_default_value=False, default_value=None, 42 | message_type=None, enum_type=None, containing_type=None, 43 | is_extension=False, extension_scope=None, 44 | options=None), 45 | _descriptor.FieldDescriptor( 46 | name='polygon', full_name='apollo.hdmap.Junction.polygon', index=1, 47 | number=2, type=11, cpp_type=10, label=1, 48 | has_default_value=False, default_value=None, 49 | message_type=None, enum_type=None, containing_type=None, 50 | is_extension=False, extension_scope=None, 51 | options=None), 52 | _descriptor.FieldDescriptor( 53 | name='overlap_id', full_name='apollo.hdmap.Junction.overlap_id', index=2, 54 | number=3, type=11, cpp_type=10, label=3, 55 | has_default_value=False, default_value=[], 56 | message_type=None, enum_type=None, containing_type=None, 57 | is_extension=False, extension_scope=None, 58 | options=None), 59 | ], 60 | extensions=[ 61 | ], 62 | nested_types=[], 63 | enum_types=[ 64 | ], 65 | options=None, 66 | is_extendable=False, 67 | syntax='proto2', 68 | extension_ranges=[], 69 | oneofs=[ 70 | ], 71 | serialized_start=124, 72 | serialized_end=242, 73 | ) 74 | 75 | _JUNCTION.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 76 | _JUNCTION.fields_by_name['polygon'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 77 | _JUNCTION.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 78 | DESCRIPTOR.message_types_by_name['Junction'] = _JUNCTION 79 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 80 | 81 | Junction = _reflection.GeneratedProtocolMessageType('Junction', (_message.Message,), dict( 82 | DESCRIPTOR = _JUNCTION, 83 | __module__ = 'modules.map.map_junction_pb2' 84 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Junction) 85 | )) 86 | _sym_db.RegisterMessage(Junction) 87 | 88 | 89 | # @@protoc_insertion_point(module_scope) 90 | -------------------------------------------------------------------------------- /modules/map/map_crosswalk_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_crosswalk.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 17 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_crosswalk.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n%modules/map/proto/map_crosswalk.proto\x12\x0c\x61pollo.hdmap\x1a$modules/map/proto/map_geometry.proto\x1a\x1emodules/map/proto/map_id.proto\"w\n\tCrosswalk\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x07polygon\x18\x02 \x01(\x0b\x32\x15.apollo.hdmap.Polygon\x12$\n\noverlap_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | 31 | _CROSSWALK = _descriptor.Descriptor( 32 | name='Crosswalk', 33 | full_name='apollo.hdmap.Crosswalk', 34 | filename=None, 35 | file=DESCRIPTOR, 36 | containing_type=None, 37 | fields=[ 38 | _descriptor.FieldDescriptor( 39 | name='id', full_name='apollo.hdmap.Crosswalk.id', index=0, 40 | number=1, type=11, cpp_type=10, label=1, 41 | has_default_value=False, default_value=None, 42 | message_type=None, enum_type=None, containing_type=None, 43 | is_extension=False, extension_scope=None, 44 | options=None), 45 | _descriptor.FieldDescriptor( 46 | name='polygon', full_name='apollo.hdmap.Crosswalk.polygon', index=1, 47 | number=2, type=11, cpp_type=10, label=1, 48 | has_default_value=False, default_value=None, 49 | message_type=None, enum_type=None, containing_type=None, 50 | is_extension=False, extension_scope=None, 51 | options=None), 52 | _descriptor.FieldDescriptor( 53 | name='overlap_id', full_name='apollo.hdmap.Crosswalk.overlap_id', index=2, 54 | number=3, type=11, cpp_type=10, label=3, 55 | has_default_value=False, default_value=[], 56 | message_type=None, enum_type=None, containing_type=None, 57 | is_extension=False, extension_scope=None, 58 | options=None), 59 | ], 60 | extensions=[ 61 | ], 62 | nested_types=[], 63 | enum_types=[ 64 | ], 65 | options=None, 66 | is_extendable=False, 67 | syntax='proto2', 68 | extension_ranges=[], 69 | oneofs=[ 70 | ], 71 | serialized_start=125, 72 | serialized_end=244, 73 | ) 74 | 75 | _CROSSWALK.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 76 | _CROSSWALK.fields_by_name['polygon'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 77 | _CROSSWALK.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 78 | DESCRIPTOR.message_types_by_name['Crosswalk'] = _CROSSWALK 79 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 80 | 81 | Crosswalk = _reflection.GeneratedProtocolMessageType('Crosswalk', (_message.Message,), dict( 82 | DESCRIPTOR = _CROSSWALK, 83 | __module__ = 'modules.map.map_crosswalk_pb2' 84 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Crosswalk) 85 | )) 86 | _sym_db.RegisterMessage(Crosswalk) 87 | 88 | 89 | # @@protoc_insertion_point(module_scope) 90 | -------------------------------------------------------------------------------- /modules/map/map_speed_bump_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_speed_bump.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 17 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_speed_bump.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n&modules/map/proto/map_speed_bump.proto\x12\x0c\x61pollo.hdmap\x1a\x1emodules/map/proto/map_id.proto\x1a$modules/map/proto/map_geometry.proto\"v\n\tSpeedBump\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12$\n\noverlap_id\x18\x02 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12%\n\x08position\x18\x03 \x03(\x0b\x32\x13.apollo.hdmap.Curve') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | 31 | _SPEEDBUMP = _descriptor.Descriptor( 32 | name='SpeedBump', 33 | full_name='apollo.hdmap.SpeedBump', 34 | filename=None, 35 | file=DESCRIPTOR, 36 | containing_type=None, 37 | fields=[ 38 | _descriptor.FieldDescriptor( 39 | name='id', full_name='apollo.hdmap.SpeedBump.id', index=0, 40 | number=1, type=11, cpp_type=10, label=1, 41 | has_default_value=False, default_value=None, 42 | message_type=None, enum_type=None, containing_type=None, 43 | is_extension=False, extension_scope=None, 44 | options=None), 45 | _descriptor.FieldDescriptor( 46 | name='overlap_id', full_name='apollo.hdmap.SpeedBump.overlap_id', index=1, 47 | number=2, type=11, cpp_type=10, label=3, 48 | has_default_value=False, default_value=[], 49 | message_type=None, enum_type=None, containing_type=None, 50 | is_extension=False, extension_scope=None, 51 | options=None), 52 | _descriptor.FieldDescriptor( 53 | name='position', full_name='apollo.hdmap.SpeedBump.position', index=2, 54 | number=3, type=11, cpp_type=10, label=3, 55 | has_default_value=False, default_value=[], 56 | message_type=None, enum_type=None, containing_type=None, 57 | is_extension=False, extension_scope=None, 58 | options=None), 59 | ], 60 | extensions=[ 61 | ], 62 | nested_types=[], 63 | enum_types=[ 64 | ], 65 | options=None, 66 | is_extendable=False, 67 | syntax='proto2', 68 | extension_ranges=[], 69 | oneofs=[ 70 | ], 71 | serialized_start=126, 72 | serialized_end=244, 73 | ) 74 | 75 | _SPEEDBUMP.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 76 | _SPEEDBUMP.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 77 | _SPEEDBUMP.fields_by_name['position'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._CURVE 78 | DESCRIPTOR.message_types_by_name['SpeedBump'] = _SPEEDBUMP 79 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 80 | 81 | SpeedBump = _reflection.GeneratedProtocolMessageType('SpeedBump', (_message.Message,), dict( 82 | DESCRIPTOR = _SPEEDBUMP, 83 | __module__ = 'modules.map.map_speed_bump_pb2' 84 | # @@protoc_insertion_point(class_scope:apollo.hdmap.SpeedBump) 85 | )) 86 | _sym_db.RegisterMessage(SpeedBump) 87 | 88 | 89 | # @@protoc_insertion_point(module_scope) 90 | -------------------------------------------------------------------------------- /modules/map/map_clear_area_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_clear_area.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 17 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_clear_area.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n&modules/map/proto/map_clear_area.proto\x12\x0c\x61pollo.hdmap\x1a\x1emodules/map/proto/map_id.proto\x1a$modules/map/proto/map_geometry.proto\"w\n\tClearArea\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12$\n\noverlap_id\x18\x02 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x07polygon\x18\x03 \x01(\x0b\x32\x15.apollo.hdmap.Polygon') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | 31 | _CLEARAREA = _descriptor.Descriptor( 32 | name='ClearArea', 33 | full_name='apollo.hdmap.ClearArea', 34 | filename=None, 35 | file=DESCRIPTOR, 36 | containing_type=None, 37 | fields=[ 38 | _descriptor.FieldDescriptor( 39 | name='id', full_name='apollo.hdmap.ClearArea.id', index=0, 40 | number=1, type=11, cpp_type=10, label=1, 41 | has_default_value=False, default_value=None, 42 | message_type=None, enum_type=None, containing_type=None, 43 | is_extension=False, extension_scope=None, 44 | options=None), 45 | _descriptor.FieldDescriptor( 46 | name='overlap_id', full_name='apollo.hdmap.ClearArea.overlap_id', index=1, 47 | number=2, type=11, cpp_type=10, label=3, 48 | has_default_value=False, default_value=[], 49 | message_type=None, enum_type=None, containing_type=None, 50 | is_extension=False, extension_scope=None, 51 | options=None), 52 | _descriptor.FieldDescriptor( 53 | name='polygon', full_name='apollo.hdmap.ClearArea.polygon', index=2, 54 | number=3, type=11, cpp_type=10, label=1, 55 | has_default_value=False, default_value=None, 56 | message_type=None, enum_type=None, containing_type=None, 57 | is_extension=False, extension_scope=None, 58 | options=None), 59 | ], 60 | extensions=[ 61 | ], 62 | nested_types=[], 63 | enum_types=[ 64 | ], 65 | options=None, 66 | is_extendable=False, 67 | syntax='proto2', 68 | extension_ranges=[], 69 | oneofs=[ 70 | ], 71 | serialized_start=126, 72 | serialized_end=245, 73 | ) 74 | 75 | _CLEARAREA.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 76 | _CLEARAREA.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 77 | _CLEARAREA.fields_by_name['polygon'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 78 | DESCRIPTOR.message_types_by_name['ClearArea'] = _CLEARAREA 79 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 80 | 81 | ClearArea = _reflection.GeneratedProtocolMessageType('ClearArea', (_message.Message,), dict( 82 | DESCRIPTOR = _CLEARAREA, 83 | __module__ = 'modules.map.map_clear_area_pb2' 84 | # @@protoc_insertion_point(class_scope:apollo.hdmap.ClearArea) 85 | )) 86 | _sym_db.RegisterMessage(ClearArea) 87 | 88 | 89 | # @@protoc_insertion_point(module_scope) 90 | -------------------------------------------------------------------------------- /modules/map/map_yield_sign_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_yield_sign.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 17 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_yield_sign.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n&modules/map/proto/map_yield_sign.proto\x12\x0c\x61pollo.hdmap\x1a\x1emodules/map/proto/map_id.proto\x1a$modules/map/proto/map_geometry.proto\"w\n\tYieldSign\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\tstop_line\x18\x02 \x03(\x0b\x32\x13.apollo.hdmap.Curve\x12$\n\noverlap_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | 31 | _YIELDSIGN = _descriptor.Descriptor( 32 | name='YieldSign', 33 | full_name='apollo.hdmap.YieldSign', 34 | filename=None, 35 | file=DESCRIPTOR, 36 | containing_type=None, 37 | fields=[ 38 | _descriptor.FieldDescriptor( 39 | name='id', full_name='apollo.hdmap.YieldSign.id', index=0, 40 | number=1, type=11, cpp_type=10, label=1, 41 | has_default_value=False, default_value=None, 42 | message_type=None, enum_type=None, containing_type=None, 43 | is_extension=False, extension_scope=None, 44 | options=None), 45 | _descriptor.FieldDescriptor( 46 | name='stop_line', full_name='apollo.hdmap.YieldSign.stop_line', index=1, 47 | number=2, type=11, cpp_type=10, label=3, 48 | has_default_value=False, default_value=[], 49 | message_type=None, enum_type=None, containing_type=None, 50 | is_extension=False, extension_scope=None, 51 | options=None), 52 | _descriptor.FieldDescriptor( 53 | name='overlap_id', full_name='apollo.hdmap.YieldSign.overlap_id', index=2, 54 | number=3, type=11, cpp_type=10, label=3, 55 | has_default_value=False, default_value=[], 56 | message_type=None, enum_type=None, containing_type=None, 57 | is_extension=False, extension_scope=None, 58 | options=None), 59 | ], 60 | extensions=[ 61 | ], 62 | nested_types=[], 63 | enum_types=[ 64 | ], 65 | options=None, 66 | is_extendable=False, 67 | syntax='proto2', 68 | extension_ranges=[], 69 | oneofs=[ 70 | ], 71 | serialized_start=126, 72 | serialized_end=245, 73 | ) 74 | 75 | _YIELDSIGN.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 76 | _YIELDSIGN.fields_by_name['stop_line'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._CURVE 77 | _YIELDSIGN.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 78 | DESCRIPTOR.message_types_by_name['YieldSign'] = _YIELDSIGN 79 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 80 | 81 | YieldSign = _reflection.GeneratedProtocolMessageType('YieldSign', (_message.Message,), dict( 82 | DESCRIPTOR = _YIELDSIGN, 83 | __module__ = 'modules.map.map_yield_sign_pb2' 84 | # @@protoc_insertion_point(class_scope:apollo.hdmap.YieldSign) 85 | )) 86 | _sym_db.RegisterMessage(YieldSign) 87 | 88 | 89 | # @@protoc_insertion_point(module_scope) 90 | -------------------------------------------------------------------------------- /modules/map/map_speed_control_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_speed_control.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 17 | 18 | 19 | DESCRIPTOR = _descriptor.FileDescriptor( 20 | name='modules/map/proto/map_speed_control.proto', 21 | package='apollo.hdmap', 22 | syntax='proto2', 23 | serialized_pb=_b('\n)modules/map/proto/map_speed_control.proto\x12\x0c\x61pollo.hdmap\x1a$modules/map/proto/map_geometry.proto\"Y\n\x0cSpeedControl\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x07polygon\x18\x02 \x01(\x0b\x32\x15.apollo.hdmap.Polygon\x12\x13\n\x0bspeed_limit\x18\x03 \x01(\x01\"B\n\rSpeedControls\x12\x31\n\rspeed_control\x18\x01 \x03(\x0b\x32\x1a.apollo.hdmap.SpeedControl') 24 | , 25 | dependencies=[modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,]) 26 | 27 | 28 | 29 | 30 | _SPEEDCONTROL = _descriptor.Descriptor( 31 | name='SpeedControl', 32 | full_name='apollo.hdmap.SpeedControl', 33 | filename=None, 34 | file=DESCRIPTOR, 35 | containing_type=None, 36 | fields=[ 37 | _descriptor.FieldDescriptor( 38 | name='name', full_name='apollo.hdmap.SpeedControl.name', index=0, 39 | number=1, type=9, cpp_type=9, label=1, 40 | has_default_value=False, default_value=_b("").decode('utf-8'), 41 | message_type=None, enum_type=None, containing_type=None, 42 | is_extension=False, extension_scope=None, 43 | options=None), 44 | _descriptor.FieldDescriptor( 45 | name='polygon', full_name='apollo.hdmap.SpeedControl.polygon', index=1, 46 | number=2, type=11, cpp_type=10, label=1, 47 | has_default_value=False, default_value=None, 48 | message_type=None, enum_type=None, containing_type=None, 49 | is_extension=False, extension_scope=None, 50 | options=None), 51 | _descriptor.FieldDescriptor( 52 | name='speed_limit', full_name='apollo.hdmap.SpeedControl.speed_limit', index=2, 53 | number=3, type=1, cpp_type=5, label=1, 54 | has_default_value=False, default_value=float(0), 55 | message_type=None, enum_type=None, containing_type=None, 56 | is_extension=False, extension_scope=None, 57 | options=None), 58 | ], 59 | extensions=[ 60 | ], 61 | nested_types=[], 62 | enum_types=[ 63 | ], 64 | options=None, 65 | is_extendable=False, 66 | syntax='proto2', 67 | extension_ranges=[], 68 | oneofs=[ 69 | ], 70 | serialized_start=97, 71 | serialized_end=186, 72 | ) 73 | 74 | 75 | _SPEEDCONTROLS = _descriptor.Descriptor( 76 | name='SpeedControls', 77 | full_name='apollo.hdmap.SpeedControls', 78 | filename=None, 79 | file=DESCRIPTOR, 80 | containing_type=None, 81 | fields=[ 82 | _descriptor.FieldDescriptor( 83 | name='speed_control', full_name='apollo.hdmap.SpeedControls.speed_control', index=0, 84 | number=1, type=11, cpp_type=10, label=3, 85 | has_default_value=False, default_value=[], 86 | message_type=None, enum_type=None, containing_type=None, 87 | is_extension=False, extension_scope=None, 88 | options=None), 89 | ], 90 | extensions=[ 91 | ], 92 | nested_types=[], 93 | enum_types=[ 94 | ], 95 | options=None, 96 | is_extendable=False, 97 | syntax='proto2', 98 | extension_ranges=[], 99 | oneofs=[ 100 | ], 101 | serialized_start=188, 102 | serialized_end=254, 103 | ) 104 | 105 | _SPEEDCONTROL.fields_by_name['polygon'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 106 | _SPEEDCONTROLS.fields_by_name['speed_control'].message_type = _SPEEDCONTROL 107 | DESCRIPTOR.message_types_by_name['SpeedControl'] = _SPEEDCONTROL 108 | DESCRIPTOR.message_types_by_name['SpeedControls'] = _SPEEDCONTROLS 109 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 110 | 111 | SpeedControl = _reflection.GeneratedProtocolMessageType('SpeedControl', (_message.Message,), dict( 112 | DESCRIPTOR = _SPEEDCONTROL, 113 | __module__ = 'modules.map.map_speed_control_pb2' 114 | # @@protoc_insertion_point(class_scope:apollo.hdmap.SpeedControl) 115 | )) 116 | _sym_db.RegisterMessage(SpeedControl) 117 | 118 | SpeedControls = _reflection.GeneratedProtocolMessageType('SpeedControls', (_message.Message,), dict( 119 | DESCRIPTOR = _SPEEDCONTROLS, 120 | __module__ = 'modules.map.map_speed_control_pb2' 121 | # @@protoc_insertion_point(class_scope:apollo.hdmap.SpeedControls) 122 | )) 123 | _sym_db.RegisterMessage(SpeedControls) 124 | 125 | 126 | # @@protoc_insertion_point(module_scope) 127 | -------------------------------------------------------------------------------- /modules/map/map_stop_sign_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_stop_sign.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 17 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_stop_sign.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n%modules/map/proto/map_stop_sign.proto\x12\x0c\x61pollo.hdmap\x1a\x1emodules/map/proto/map_id.proto\x1a$modules/map/proto/map_geometry.proto\"\x82\x02\n\x08StopSign\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\tstop_line\x18\x02 \x03(\x0b\x32\x13.apollo.hdmap.Curve\x12$\n\noverlap_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12-\n\x04type\x18\x04 \x01(\x0e\x32\x1f.apollo.hdmap.StopSign.StopType\"[\n\x08StopType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07ONE_WAY\x10\x01\x12\x0b\n\x07TWO_WAY\x10\x02\x12\r\n\tTHREE_WAY\x10\x03\x12\x0c\n\x08\x46OUR_WAY\x10\x04\x12\x0b\n\x07\x41LL_WAY\x10\x05') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | _STOPSIGN_STOPTYPE = _descriptor.EnumDescriptor( 31 | name='StopType', 32 | full_name='apollo.hdmap.StopSign.StopType', 33 | filename=None, 34 | file=DESCRIPTOR, 35 | values=[ 36 | _descriptor.EnumValueDescriptor( 37 | name='UNKNOWN', index=0, number=0, 38 | options=None, 39 | type=None), 40 | _descriptor.EnumValueDescriptor( 41 | name='ONE_WAY', index=1, number=1, 42 | options=None, 43 | type=None), 44 | _descriptor.EnumValueDescriptor( 45 | name='TWO_WAY', index=2, number=2, 46 | options=None, 47 | type=None), 48 | _descriptor.EnumValueDescriptor( 49 | name='THREE_WAY', index=3, number=3, 50 | options=None, 51 | type=None), 52 | _descriptor.EnumValueDescriptor( 53 | name='FOUR_WAY', index=4, number=4, 54 | options=None, 55 | type=None), 56 | _descriptor.EnumValueDescriptor( 57 | name='ALL_WAY', index=5, number=5, 58 | options=None, 59 | type=None), 60 | ], 61 | containing_type=None, 62 | options=None, 63 | serialized_start=293, 64 | serialized_end=384, 65 | ) 66 | _sym_db.RegisterEnumDescriptor(_STOPSIGN_STOPTYPE) 67 | 68 | 69 | _STOPSIGN = _descriptor.Descriptor( 70 | name='StopSign', 71 | full_name='apollo.hdmap.StopSign', 72 | filename=None, 73 | file=DESCRIPTOR, 74 | containing_type=None, 75 | fields=[ 76 | _descriptor.FieldDescriptor( 77 | name='id', full_name='apollo.hdmap.StopSign.id', index=0, 78 | number=1, type=11, cpp_type=10, label=1, 79 | has_default_value=False, default_value=None, 80 | message_type=None, enum_type=None, containing_type=None, 81 | is_extension=False, extension_scope=None, 82 | options=None), 83 | _descriptor.FieldDescriptor( 84 | name='stop_line', full_name='apollo.hdmap.StopSign.stop_line', index=1, 85 | number=2, type=11, cpp_type=10, label=3, 86 | has_default_value=False, default_value=[], 87 | message_type=None, enum_type=None, containing_type=None, 88 | is_extension=False, extension_scope=None, 89 | options=None), 90 | _descriptor.FieldDescriptor( 91 | name='overlap_id', full_name='apollo.hdmap.StopSign.overlap_id', index=2, 92 | number=3, type=11, cpp_type=10, label=3, 93 | has_default_value=False, default_value=[], 94 | message_type=None, enum_type=None, containing_type=None, 95 | is_extension=False, extension_scope=None, 96 | options=None), 97 | _descriptor.FieldDescriptor( 98 | name='type', full_name='apollo.hdmap.StopSign.type', index=3, 99 | number=4, type=14, cpp_type=8, label=1, 100 | has_default_value=False, default_value=0, 101 | message_type=None, enum_type=None, containing_type=None, 102 | is_extension=False, extension_scope=None, 103 | options=None), 104 | ], 105 | extensions=[ 106 | ], 107 | nested_types=[], 108 | enum_types=[ 109 | _STOPSIGN_STOPTYPE, 110 | ], 111 | options=None, 112 | is_extendable=False, 113 | syntax='proto2', 114 | extension_ranges=[], 115 | oneofs=[ 116 | ], 117 | serialized_start=126, 118 | serialized_end=384, 119 | ) 120 | 121 | _STOPSIGN.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 122 | _STOPSIGN.fields_by_name['stop_line'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._CURVE 123 | _STOPSIGN.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 124 | _STOPSIGN.fields_by_name['type'].enum_type = _STOPSIGN_STOPTYPE 125 | _STOPSIGN_STOPTYPE.containing_type = _STOPSIGN 126 | DESCRIPTOR.message_types_by_name['StopSign'] = _STOPSIGN 127 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 128 | 129 | StopSign = _reflection.GeneratedProtocolMessageType('StopSign', (_message.Message,), dict( 130 | DESCRIPTOR = _STOPSIGN, 131 | __module__ = 'modules.map.map_stop_sign_pb2' 132 | # @@protoc_insertion_point(class_scope:apollo.hdmap.StopSign) 133 | )) 134 | _sym_db.RegisterMessage(StopSign) 135 | 136 | 137 | # @@protoc_insertion_point(module_scope) 138 | -------------------------------------------------------------------------------- /modules/map/map_parking_space_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_parking_space.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 17 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_parking_space.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n)modules/map/proto/map_parking_space.proto\x12\x0c\x61pollo.hdmap\x1a$modules/map/proto/map_geometry.proto\x1a\x1emodules/map/proto/map_id.proto\"\x8b\x01\n\x0cParkingSpace\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x07polygon\x18\x02 \x01(\x0b\x32\x15.apollo.hdmap.Polygon\x12$\n\noverlap_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12\x0f\n\x07heading\x18\x04 \x01(\x01\"x\n\nParkingLot\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x07polygon\x18\x02 \x01(\x0b\x32\x15.apollo.hdmap.Polygon\x12$\n\noverlap_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | 31 | _PARKINGSPACE = _descriptor.Descriptor( 32 | name='ParkingSpace', 33 | full_name='apollo.hdmap.ParkingSpace', 34 | filename=None, 35 | file=DESCRIPTOR, 36 | containing_type=None, 37 | fields=[ 38 | _descriptor.FieldDescriptor( 39 | name='id', full_name='apollo.hdmap.ParkingSpace.id', index=0, 40 | number=1, type=11, cpp_type=10, label=1, 41 | has_default_value=False, default_value=None, 42 | message_type=None, enum_type=None, containing_type=None, 43 | is_extension=False, extension_scope=None, 44 | options=None), 45 | _descriptor.FieldDescriptor( 46 | name='polygon', full_name='apollo.hdmap.ParkingSpace.polygon', index=1, 47 | number=2, type=11, cpp_type=10, label=1, 48 | has_default_value=False, default_value=None, 49 | message_type=None, enum_type=None, containing_type=None, 50 | is_extension=False, extension_scope=None, 51 | options=None), 52 | _descriptor.FieldDescriptor( 53 | name='overlap_id', full_name='apollo.hdmap.ParkingSpace.overlap_id', index=2, 54 | number=3, type=11, cpp_type=10, label=3, 55 | has_default_value=False, default_value=[], 56 | message_type=None, enum_type=None, containing_type=None, 57 | is_extension=False, extension_scope=None, 58 | options=None), 59 | _descriptor.FieldDescriptor( 60 | name='heading', full_name='apollo.hdmap.ParkingSpace.heading', index=3, 61 | number=4, type=1, cpp_type=5, label=1, 62 | has_default_value=False, default_value=float(0), 63 | message_type=None, enum_type=None, containing_type=None, 64 | is_extension=False, extension_scope=None, 65 | options=None), 66 | ], 67 | extensions=[ 68 | ], 69 | nested_types=[], 70 | enum_types=[ 71 | ], 72 | options=None, 73 | is_extendable=False, 74 | syntax='proto2', 75 | extension_ranges=[], 76 | oneofs=[ 77 | ], 78 | serialized_start=130, 79 | serialized_end=269, 80 | ) 81 | 82 | 83 | _PARKINGLOT = _descriptor.Descriptor( 84 | name='ParkingLot', 85 | full_name='apollo.hdmap.ParkingLot', 86 | filename=None, 87 | file=DESCRIPTOR, 88 | containing_type=None, 89 | fields=[ 90 | _descriptor.FieldDescriptor( 91 | name='id', full_name='apollo.hdmap.ParkingLot.id', index=0, 92 | number=1, type=11, cpp_type=10, label=1, 93 | has_default_value=False, default_value=None, 94 | message_type=None, enum_type=None, containing_type=None, 95 | is_extension=False, extension_scope=None, 96 | options=None), 97 | _descriptor.FieldDescriptor( 98 | name='polygon', full_name='apollo.hdmap.ParkingLot.polygon', index=1, 99 | number=2, type=11, cpp_type=10, label=1, 100 | has_default_value=False, default_value=None, 101 | message_type=None, enum_type=None, containing_type=None, 102 | is_extension=False, extension_scope=None, 103 | options=None), 104 | _descriptor.FieldDescriptor( 105 | name='overlap_id', full_name='apollo.hdmap.ParkingLot.overlap_id', index=2, 106 | number=3, type=11, cpp_type=10, label=3, 107 | has_default_value=False, default_value=[], 108 | message_type=None, enum_type=None, containing_type=None, 109 | is_extension=False, extension_scope=None, 110 | options=None), 111 | ], 112 | extensions=[ 113 | ], 114 | nested_types=[], 115 | enum_types=[ 116 | ], 117 | options=None, 118 | is_extendable=False, 119 | syntax='proto2', 120 | extension_ranges=[], 121 | oneofs=[ 122 | ], 123 | serialized_start=271, 124 | serialized_end=391, 125 | ) 126 | 127 | _PARKINGSPACE.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 128 | _PARKINGSPACE.fields_by_name['polygon'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 129 | _PARKINGSPACE.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 130 | _PARKINGLOT.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 131 | _PARKINGLOT.fields_by_name['polygon'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 132 | _PARKINGLOT.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 133 | DESCRIPTOR.message_types_by_name['ParkingSpace'] = _PARKINGSPACE 134 | DESCRIPTOR.message_types_by_name['ParkingLot'] = _PARKINGLOT 135 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 136 | 137 | ParkingSpace = _reflection.GeneratedProtocolMessageType('ParkingSpace', (_message.Message,), dict( 138 | DESCRIPTOR = _PARKINGSPACE, 139 | __module__ = 'modules.map.map_parking_space_pb2' 140 | # @@protoc_insertion_point(class_scope:apollo.hdmap.ParkingSpace) 141 | )) 142 | _sym_db.RegisterMessage(ParkingSpace) 143 | 144 | ParkingLot = _reflection.GeneratedProtocolMessageType('ParkingLot', (_message.Message,), dict( 145 | DESCRIPTOR = _PARKINGLOT, 146 | __module__ = 'modules.map.map_parking_space_pb2' 147 | # @@protoc_insertion_point(class_scope:apollo.hdmap.ParkingLot) 148 | )) 149 | _sym_db.RegisterMessage(ParkingLot) 150 | 151 | 152 | # @@protoc_insertion_point(module_scope) 153 | -------------------------------------------------------------------------------- /Objects/Shape.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | 4 | from PyQt5.QtGui import * 5 | from PyQt5.QtCore import * 6 | import numpy as np 7 | from Lib import distance 8 | 9 | import math 10 | DEFAULT_LINE_COLOR_LEFT = QColor(0, 0, 220, 128) 11 | DEFAULT_LINE_COLOR_RIGHT = QColor(20, 200, 20, 128) 12 | DEFAULT_LINE_COLOR = QColor(220, 0, 0, 128) 13 | DEFAULT_PREVIEW_COLOR = QColor(123, 0, 200, 50) 14 | DEFAULT_TRAJECTORY_COLOR = QColor(223, 233, 0, 250) 15 | DEFAULT_STOPLINE_COLOR = QColor(220, 220, 0, 128) 16 | DEFAULT_FILL_COLOR = QColor(255, 0, 0, 10) 17 | DEFAULT_SELECT_LINE_COLOR = QColor(255, 255, 255) 18 | DEFAULT_SELECT_FILL_COLOR = QColor(0, 128, 255, 155) 19 | DEFAULT_VERTEX_FILL_COLOR = QColor(0, 255,255, 255) 20 | DEFAULT_HVERTEX_FILL_COLOR = QColor(255, 0, 0) 21 | 22 | 23 | class Shape(object): 24 | P_SQUARE, P_ROUND = range(2) 25 | LANE,BORDER,JUNCTION,STOPLANE,OVERLAP,SIGNAL,STOPSIGN,RULER,PREVIEW,TRAJECTORY = range(10) 26 | MOVE_VERTEX, NEAR_VERTEX = range(2) 27 | SOLID_WHITE,DOTTED_WHITE,CRUB,SOLID_YELLOW,DOTTED_YELLOW=range(5) 28 | line_color = DEFAULT_LINE_COLOR 29 | lineLeft_color=DEFAULT_LINE_COLOR_LEFT 30 | lineRight_color=DEFAULT_LINE_COLOR_RIGHT 31 | fill_color = DEFAULT_FILL_COLOR 32 | select_line_color = DEFAULT_SELECT_LINE_COLOR 33 | select_fill_color = DEFAULT_SELECT_FILL_COLOR 34 | vertex_fill_color = DEFAULT_VERTEX_FILL_COLOR 35 | hvertex_fill_color = DEFAULT_HVERTEX_FILL_COLOR 36 | point_type = P_ROUND 37 | point_size = 6 38 | scale = 1.0 39 | label_font_size = 14 40 | 41 | def __init__(self, label=None, shape_type=0, line_color=None,Angle="",index=None): 42 | 43 | self.label = label 44 | self.points = [] 45 | self.Angle=Angle 46 | self.fill = False 47 | self.selected = False 48 | self.Index=index 49 | self.LaneChange=False 50 | self.turn=1 51 | self.type=self.SOLID_WHITE 52 | self.width=-1 53 | self.isStopSign=False 54 | self.shape_type = self.LANE 55 | self.max_piont_num = 4 56 | if shape_type == 1: 57 | self.shape_type = self.BORDER 58 | self.max_piont_num = 100 59 | self._highlightIndex = None 60 | self._highlightMode = self.NEAR_VERTEX 61 | self._highlightSettings = { 62 | self.NEAR_VERTEX: (1.5, self.P_ROUND), 63 | self.MOVE_VERTEX: (1.5, self.P_SQUARE), 64 | } 65 | 66 | self._closed = False 67 | 68 | if line_color is not None: 69 | self.line_color = line_color 70 | 71 | def set_shape_type(self, type): 72 | self.shape_type = type 73 | 74 | def get_shape_type(self): 75 | return self.shape_type 76 | 77 | def close(self): 78 | assert len(self.points) > 1 79 | self._closed = True 80 | 81 | 82 | def isLane(self): 83 | return self.shape_type == self.LANE 84 | 85 | def reachMaxPoints(self): 86 | if len(self.points) >= self.max_piont_num: 87 | return True 88 | return False 89 | 90 | def addPoint(self, point): 91 | 92 | self.points.append(point) 93 | 94 | def popPoint(self): 95 | if self.points: 96 | return self.points.pop() 97 | return None 98 | 99 | def isClosed(self): 100 | return self._closed 101 | 102 | def setOpen(self): 103 | self._closed = False 104 | 105 | def paint(self, painter,image=None,distance=None): 106 | 107 | if image!=None: 108 | painter.drawImage(self.points[0].x(), self.points[0].y(), image) 109 | if not self.isStopSign: 110 | return 111 | 112 | color = self.select_line_color if self.selected else self.line_color 113 | if self.shape_type==self.PREVIEW: 114 | color=DEFAULT_PREVIEW_COLOR 115 | if self.shape_type==self.TRAJECTORY: 116 | color=DEFAULT_TRAJECTORY_COLOR 117 | if self.shape_type==self.STOPLANE: 118 | color=DEFAULT_STOPLINE_COLOR 119 | if self.label.find("Left")!=-1: 120 | color=self.lineLeft_color 121 | elif self.label.find("Right")!=-1: 122 | color=self.lineRight_color 123 | pen = QPen(color) 124 | if self.type==self.DOTTED_WHITE or self.type==self.DOTTED_YELLOW: 125 | pen.setStyle(Qt.CustomDashLine) 126 | pen.setDashPattern([5, 5, 5, 5]) 127 | 128 | # Try using integer sizes for smoother drawing(?) 129 | 130 | pen.setWidth(max(1, int(round(3.0 / self.scale)))) 131 | if self.shape_type==self.TRAJECTORY: 132 | pen.setWidth(max(1, int(round(1.0 / self.scale)))) 133 | painter.setPen(pen) 134 | 135 | line_path = QPainterPath() 136 | vrtx_path = QPainterPath() 137 | 138 | line_path.moveTo(self.points[0]) 139 | if self.isStopSign: 140 | painter.drawImage(self.points[0].x(), self.points[0].y(), image) 141 | if self.shape_type!=self.PREVIEW: 142 | self.drawVertex(vrtx_path, 0) 143 | 144 | for i, p in enumerate(self.points): 145 | if self.shape_type!=self.PREVIEW: 146 | self.drawVertex(vrtx_path, i) 147 | 148 | painter.drawPath(line_path) 149 | if self.shape_type!=self.TRAJECTORY: 150 | painter.drawPath(vrtx_path) 151 | painter.fillPath(vrtx_path, self.vertex_fill_color) 152 | fontScale=12/self.scale 153 | if fontScale<2:fontScale=2 154 | if self.label is not None: 155 | for i in range(0,len(self.points)-1): 156 | painter.drawLine(self.points[i], self.points[i+1]) 157 | if self.shape_type==self.RULER: 158 | painter.setPen(QColor(255, 255, 255)) 159 | painter.setFont(QFont('Decorative', fontScale)) 160 | painter.drawText(self.points[0], distance) 161 | elif self.label.find("Left")==-1 and self.label.find("Right")==-1: 162 | painter.setPen(QColor(255, 255, 255)) 163 | painter.setFont(QFont('Decorative', fontScale)) 164 | painter.drawText(self.points[int(len(self.points)/2)], self.label) 165 | 166 | def distance_between(self,p1,p2): 167 | return math.sqrt(math.pow(p2.x()-p1.x(),2)+math.pow(p2.y()-p1.y(),2)) 168 | 169 | 170 | def drawVertex(self, path, i): 171 | d = self.point_size / self.scale 172 | if self.shape_type==self.TRAJECTORY: 173 | d=3/self.scale 174 | shape = self.point_type 175 | point = self.points[i] 176 | 177 | if i == self._highlightIndex: 178 | size, shape = self._highlightSettings[self._highlightMode] 179 | d *= size 180 | if self._highlightIndex is not None: 181 | self.vertex_fill_color = self.hvertex_fill_color 182 | else: 183 | self.vertex_fill_color = Shape.vertex_fill_color 184 | if shape == self.P_SQUARE: 185 | path.addRect(point.x() - d / 2, point.y() - d / 2, d, d) 186 | elif shape == self.P_ROUND: 187 | path.addEllipse(point, d / 2.0, d / 2.0) 188 | else: 189 | assert False, "unsupported vertex shape" 190 | 191 | def nearestVertex(self, point, epsilon): 192 | for i, p in enumerate(self.points): 193 | if distance(p - point) <= epsilon: 194 | return i 195 | return None 196 | 197 | def containsPoint(self, point): 198 | return self.makePath().contains(point) 199 | 200 | def makePath(self): 201 | path = QPainterPath(self.points[0]) 202 | for p in self.points[1:]: 203 | path.lineTo(p) 204 | return path 205 | 206 | def boundingRect(self): 207 | return self.makePath().boundingRect() 208 | 209 | def moveBy(self, offset): 210 | self.points = [p + offset for p in self.points] 211 | 212 | def moveVertexBy(self, i, offset): 213 | self.points[i] = self.points[i] + offset 214 | 215 | def highlightVertex(self, i, action): 216 | self._highlightIndex = i 217 | self._highlightMode = action 218 | 219 | def highlightClear(self): 220 | self._highlightIndex = None 221 | 222 | 223 | 224 | def __len__(self): 225 | return len(self.points) 226 | 227 | def __getitem__(self, key): 228 | return self.points[key] 229 | 230 | def __setitem__(self, key, value): 231 | self.points[key] = value 232 | -------------------------------------------------------------------------------- /modules/map/map_geometry_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_geometry.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import geometry_pb2 as modules_dot_common_dot_proto_dot_geometry__pb2 17 | 18 | 19 | DESCRIPTOR = _descriptor.FileDescriptor( 20 | name='modules/map/proto/map_geometry.proto', 21 | package='apollo.hdmap', 22 | syntax='proto2', 23 | serialized_pb=_b('\n$modules/map/proto/map_geometry.proto\x12\x0c\x61pollo.hdmap\x1a#modules/common/proto/geometry.proto\"1\n\x07Polygon\x12&\n\x05point\x18\x01 \x03(\x0b\x32\x17.apollo.common.PointENU\"5\n\x0bLineSegment\x12&\n\x05point\x18\x01 \x03(\x0b\x32\x17.apollo.common.PointENU\"\xac\x01\n\x0c\x43urveSegment\x12\x31\n\x0cline_segment\x18\x01 \x01(\x0b\x32\x19.apollo.hdmap.LineSegmentH\x00\x12\t\n\x01s\x18\x06 \x01(\x01\x12/\n\x0estart_position\x18\x07 \x01(\x0b\x32\x17.apollo.common.PointENU\x12\x0f\n\x07heading\x18\x08 \x01(\x01\x12\x0e\n\x06length\x18\t \x01(\x01\x42\x0c\n\ncurve_type\"4\n\x05\x43urve\x12+\n\x07segment\x18\x01 \x03(\x0b\x32\x1a.apollo.hdmap.CurveSegment') 24 | , 25 | dependencies=[modules_dot_common_dot_proto_dot_geometry__pb2.DESCRIPTOR,]) 26 | 27 | 28 | 29 | 30 | _POLYGON = _descriptor.Descriptor( 31 | name='Polygon', 32 | full_name='apollo.hdmap.Polygon', 33 | filename=None, 34 | file=DESCRIPTOR, 35 | containing_type=None, 36 | fields=[ 37 | _descriptor.FieldDescriptor( 38 | name='point', full_name='apollo.hdmap.Polygon.point', index=0, 39 | number=1, type=11, cpp_type=10, label=3, 40 | has_default_value=False, default_value=[], 41 | message_type=None, enum_type=None, containing_type=None, 42 | is_extension=False, extension_scope=None, 43 | options=None), 44 | ], 45 | extensions=[ 46 | ], 47 | nested_types=[], 48 | enum_types=[ 49 | ], 50 | options=None, 51 | is_extendable=False, 52 | syntax='proto2', 53 | extension_ranges=[], 54 | oneofs=[ 55 | ], 56 | serialized_start=91, 57 | serialized_end=140, 58 | ) 59 | 60 | 61 | _LINESEGMENT = _descriptor.Descriptor( 62 | name='LineSegment', 63 | full_name='apollo.hdmap.LineSegment', 64 | filename=None, 65 | file=DESCRIPTOR, 66 | containing_type=None, 67 | fields=[ 68 | _descriptor.FieldDescriptor( 69 | name='point', full_name='apollo.hdmap.LineSegment.point', index=0, 70 | number=1, type=11, cpp_type=10, label=3, 71 | has_default_value=False, default_value=[], 72 | message_type=None, enum_type=None, containing_type=None, 73 | is_extension=False, extension_scope=None, 74 | options=None), 75 | ], 76 | extensions=[ 77 | ], 78 | nested_types=[], 79 | enum_types=[ 80 | ], 81 | options=None, 82 | is_extendable=False, 83 | syntax='proto2', 84 | extension_ranges=[], 85 | oneofs=[ 86 | ], 87 | serialized_start=142, 88 | serialized_end=195, 89 | ) 90 | 91 | 92 | _CURVESEGMENT = _descriptor.Descriptor( 93 | name='CurveSegment', 94 | full_name='apollo.hdmap.CurveSegment', 95 | filename=None, 96 | file=DESCRIPTOR, 97 | containing_type=None, 98 | fields=[ 99 | _descriptor.FieldDescriptor( 100 | name='line_segment', full_name='apollo.hdmap.CurveSegment.line_segment', index=0, 101 | number=1, type=11, cpp_type=10, label=1, 102 | has_default_value=False, default_value=None, 103 | message_type=None, enum_type=None, containing_type=None, 104 | is_extension=False, extension_scope=None, 105 | options=None), 106 | _descriptor.FieldDescriptor( 107 | name='s', full_name='apollo.hdmap.CurveSegment.s', index=1, 108 | number=6, type=1, cpp_type=5, label=1, 109 | has_default_value=False, default_value=float(0), 110 | message_type=None, enum_type=None, containing_type=None, 111 | is_extension=False, extension_scope=None, 112 | options=None), 113 | _descriptor.FieldDescriptor( 114 | name='start_position', full_name='apollo.hdmap.CurveSegment.start_position', index=2, 115 | number=7, type=11, cpp_type=10, label=1, 116 | has_default_value=False, default_value=None, 117 | message_type=None, enum_type=None, containing_type=None, 118 | is_extension=False, extension_scope=None, 119 | options=None), 120 | _descriptor.FieldDescriptor( 121 | name='heading', full_name='apollo.hdmap.CurveSegment.heading', index=3, 122 | number=8, type=1, cpp_type=5, label=1, 123 | has_default_value=False, default_value=float(0), 124 | message_type=None, enum_type=None, containing_type=None, 125 | is_extension=False, extension_scope=None, 126 | options=None), 127 | _descriptor.FieldDescriptor( 128 | name='length', full_name='apollo.hdmap.CurveSegment.length', index=4, 129 | number=9, type=1, cpp_type=5, label=1, 130 | has_default_value=False, default_value=float(0), 131 | message_type=None, enum_type=None, containing_type=None, 132 | is_extension=False, extension_scope=None, 133 | options=None), 134 | ], 135 | extensions=[ 136 | ], 137 | nested_types=[], 138 | enum_types=[ 139 | ], 140 | options=None, 141 | is_extendable=False, 142 | syntax='proto2', 143 | extension_ranges=[], 144 | oneofs=[ 145 | _descriptor.OneofDescriptor( 146 | name='curve_type', full_name='apollo.hdmap.CurveSegment.curve_type', 147 | index=0, containing_type=None, fields=[]), 148 | ], 149 | serialized_start=198, 150 | serialized_end=370, 151 | ) 152 | 153 | 154 | _CURVE = _descriptor.Descriptor( 155 | name='Curve', 156 | full_name='apollo.hdmap.Curve', 157 | filename=None, 158 | file=DESCRIPTOR, 159 | containing_type=None, 160 | fields=[ 161 | _descriptor.FieldDescriptor( 162 | name='segment', full_name='apollo.hdmap.Curve.segment', index=0, 163 | number=1, type=11, cpp_type=10, label=3, 164 | has_default_value=False, default_value=[], 165 | message_type=None, enum_type=None, containing_type=None, 166 | is_extension=False, extension_scope=None, 167 | options=None), 168 | ], 169 | extensions=[ 170 | ], 171 | nested_types=[], 172 | enum_types=[ 173 | ], 174 | options=None, 175 | is_extendable=False, 176 | syntax='proto2', 177 | extension_ranges=[], 178 | oneofs=[ 179 | ], 180 | serialized_start=372, 181 | serialized_end=424, 182 | ) 183 | 184 | _POLYGON.fields_by_name['point'].message_type = modules_dot_common_dot_proto_dot_geometry__pb2._POINTENU 185 | _LINESEGMENT.fields_by_name['point'].message_type = modules_dot_common_dot_proto_dot_geometry__pb2._POINTENU 186 | _CURVESEGMENT.fields_by_name['line_segment'].message_type = _LINESEGMENT 187 | _CURVESEGMENT.fields_by_name['start_position'].message_type = modules_dot_common_dot_proto_dot_geometry__pb2._POINTENU 188 | _CURVESEGMENT.oneofs_by_name['curve_type'].fields.append( 189 | _CURVESEGMENT.fields_by_name['line_segment']) 190 | _CURVESEGMENT.fields_by_name['line_segment'].containing_oneof = _CURVESEGMENT.oneofs_by_name['curve_type'] 191 | _CURVE.fields_by_name['segment'].message_type = _CURVESEGMENT 192 | DESCRIPTOR.message_types_by_name['Polygon'] = _POLYGON 193 | DESCRIPTOR.message_types_by_name['LineSegment'] = _LINESEGMENT 194 | DESCRIPTOR.message_types_by_name['CurveSegment'] = _CURVESEGMENT 195 | DESCRIPTOR.message_types_by_name['Curve'] = _CURVE 196 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 197 | 198 | Polygon = _reflection.GeneratedProtocolMessageType('Polygon', (_message.Message,), dict( 199 | DESCRIPTOR = _POLYGON, 200 | __module__ = 'modules.map.map_geometry_pb2' 201 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Polygon) 202 | )) 203 | _sym_db.RegisterMessage(Polygon) 204 | 205 | LineSegment = _reflection.GeneratedProtocolMessageType('LineSegment', (_message.Message,), dict( 206 | DESCRIPTOR = _LINESEGMENT, 207 | __module__ = 'modules.map.map_geometry_pb2' 208 | # @@protoc_insertion_point(class_scope:apollo.hdmap.LineSegment) 209 | )) 210 | _sym_db.RegisterMessage(LineSegment) 211 | 212 | CurveSegment = _reflection.GeneratedProtocolMessageType('CurveSegment', (_message.Message,), dict( 213 | DESCRIPTOR = _CURVESEGMENT, 214 | __module__ = 'modules.map.map_geometry_pb2' 215 | # @@protoc_insertion_point(class_scope:apollo.hdmap.CurveSegment) 216 | )) 217 | _sym_db.RegisterMessage(CurveSegment) 218 | 219 | Curve = _reflection.GeneratedProtocolMessageType('Curve', (_message.Message,), dict( 220 | DESCRIPTOR = _CURVE, 221 | __module__ = 'modules.map.map_geometry_pb2' 222 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Curve) 223 | )) 224 | _sym_db.RegisterMessage(Curve) 225 | 226 | 227 | # @@protoc_insertion_point(module_scope) 228 | -------------------------------------------------------------------------------- /create_map.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | import json 4 | 5 | import matplotlib.pyplot as plt 6 | import numpy as np 7 | import utm 8 | from map_elements import * 9 | import math 10 | from decimal import Decimal 11 | import numpy as np 12 | from modules.map import map_road_pb2 13 | from modules.map import map_pb2 14 | from modules.map import map_lane_pb2 15 | from modules.map import map_crosswalk_pb2 16 | from modules.map import map_signal_pb2 17 | from modules.map import map_overlap_pb2 18 | from modules.map import map_stop_sign_pb2 19 | from utils import distance 20 | from shapely.geometry import LineString, Polygon, Point 21 | import sys, json, numpy as np 22 | 23 | from datetime import datetime 24 | 25 | SOLID_YELLOW = map_lane_pb2.LaneBoundaryType.SOLID_YELLOW 26 | CURB = map_lane_pb2.LaneBoundaryType.CURB 27 | DOTTED_WHITE = map_lane_pb2.LaneBoundaryType.DOTTED_WHITE 28 | UNKNOWN = map_lane_pb2.LaneBoundaryType.DOTTED_WHITE 29 | DOTTED_YELLOW=map_lane_pb2.LaneBoundaryType.DOTTED_YELLOW 30 | SOLID_WHITE=map_lane_pb2.LaneBoundaryType.SOLID_WHITE 31 | 32 | class BaseMapGeneration(): 33 | def addNeighbors (self,neighbors,lane): 34 | for elem in neighbors: 35 | if (elem.mainLane==lane.get_id()): 36 | if elem.leftForward is not None: 37 | lane.add_left_neighbor_forward(elem.leftForward) 38 | elif elem.leftReverse is not None: 39 | lane.add_left_neighbor_reverse(elem.leftReverse) 40 | elif elem.RightForward is not None : 41 | lane.add_right_neighbor_forward(elem.RightForward) 42 | elif elem.RightReverse is not None: 43 | lane.add_right_neighbor_reverse(elem.RightReverse) 44 | def addOverlaps (self,overlaps,obj): 45 | for elem in overlaps: 46 | if (elem.laneOverlapId==obj.get_id()): 47 | obj.add_overlap(elem.id) 48 | if (elem.IdSecObject==obj.get_id()): 49 | obj.add_overlap(elem.id) 50 | def addRelations (self,relations,lane): 51 | 52 | for elem in relations: 53 | if (elem.successor==lane.get_id()): 54 | lane.add_successor(elem.predecessor) 55 | if (elem.predecessor==lane.get_id()): 56 | lane.add_predecessor(elem.successor) 57 | def getBorderId(self,border): 58 | if (border=="SOLID_YELLOW"): 59 | return SOLID_YELLOW 60 | elif (border=="CURB"): 61 | return CURB 62 | elif (border=="DOTTED_WHITE"): 63 | return DOTTED_WHITE 64 | elif (border=="DOTTED_YELLOW"): 65 | return DOTTED_YELLOW 66 | return SOLID_WHITE 67 | def createRoad(self,map,roadid): 68 | road=Road(roadid,map) 69 | road.add_section("2") 70 | 71 | return road 72 | def make_lanes(self,points, map, id1, border,direction,speed,borderleft,borderright,neighbors,width,leftborderPoint,rightBorderPoints,turn,road): 73 | if len(points)==0: 74 | return None 75 | lane = Lane(id1, map) 76 | main_lane_x=[] 77 | main_lane_y=[] 78 | left_lane_x=[] 79 | left_lane_y=[] 80 | right_lane_x=[] 81 | right_lane_y=[] 82 | if leftborderPoint!=None: 83 | for i in range(len(points)): 84 | if points[i]!=None: 85 | main_lane_x.append(float(points[i][0])) 86 | main_lane_y.append(float(points[i][1])) 87 | for i in range(len(leftborderPoint)): 88 | left_lane_x.append(float(leftborderPoint[i][0])) 89 | left_lane_y.append(float(leftborderPoint[i][1])) 90 | for i in range(len(rightBorderPoints)): 91 | right_lane_x.append(float(rightBorderPoints[i][0])) 92 | right_lane_y.append(float(rightBorderPoints[i][1])) 93 | 94 | z = np.zeros(len(main_lane_x)) 95 | left_points = [] 96 | mainPoints = np.array(list(zip(main_lane_x, main_lane_y, z))) 97 | 98 | leftPoints=np.array(list(zip(left_lane_x, left_lane_y, z))) 99 | rightsPoints=np.array(list(zip(right_lane_x, right_lane_y, z))) 100 | 101 | if (direction=='FORWARD'): 102 | direction=map_lane_pb2.Lane.FORWARD 103 | elif (direction=='BACKWARD'): 104 | direction=map_lane_pb2.Lane.BACKWARD 105 | else: 106 | direction=map_lane_pb2.Lane.BIDIRECTION 107 | lane.add(mainPoints, speed, turn, map_lane_pb2.Lane.CITY_DRIVING,direction,width,leftborderPoint,rightBorderPoints,0.1) 108 | road.add_road_boundary(leftPoints,map_road_pb2.BoundaryEdge.LEFT_BOUNDARY,1) 109 | road.add_road_boundary(rightsPoints,map_road_pb2.BoundaryEdge.RIGHT_BOUNDARY,1) 110 | ##!!!Fix for DV 111 | borderleft1=self.getBorderId(borderright) 112 | borderright1=self.getBorderId(borderleft) 113 | if(border == True): 114 | lane.set_left_lane_boundary_type(borderleft1, False) 115 | lane.set_right_lane_boundary_type(borderright1, False) 116 | else: 117 | lane.set_left_lane_boundary_type(UNKNOWN, True) 118 | lane.set_right_lane_boundary_type(UNKNOWN, True) 119 | return lane 120 | 121 | return [i for i in cls.__dict__.keys() if i[:1] != '_'] 122 | def rotate(self,x,y,xo,yo,theta): 123 | xr=math.cos(theta)*(x-xo)-math.sin(theta)*(y-yo) + xo 124 | yr=math.sin(theta)*(x-xo)+math.cos(theta)*(y-yo) + yo 125 | return [xr,yr] 126 | def make_arr(self,arr1, arr2): 127 | for i in range(len(arr1)): 128 | if type(arr1[i]) is list: 129 | arr2.append([float(arr1[i][0]), -1*float(arr1[i][1])]) 130 | 131 | def start(self,roads,junctions,relations,neighbors,overlaps,signals,stopsigns,offsetx,offsety,rotation): 132 | map = map_pb2.Map() 133 | counter=0 134 | rotateangle=float(rotation) 135 | x=float(offsetx) 136 | y=-float(offsety) 137 | for record in overlaps: 138 | overlap=Overlap(record.id,map) 139 | if record.IdSecObject.find("stopsign")!=-1: 140 | overlap.addStopLine(record.IdSecObject) 141 | if record.IdSecObject.find("signal")!=-1: 142 | overlap.addSignal(record.IdSecObject) 143 | overlap.addLane(record.laneOverlapId,record.pointOverlap) 144 | for lanes in roads: 145 | counter+=1 146 | road=self.createRoad(map,"road_"+str(counter)) 147 | if (lanes.Neighbors!=None): 148 | lanesxy = [] 149 | self.make_arr(lanes.points,lanesxy) 150 | lanesxy_left = [] 151 | self.make_arr(lanes.leftBorderPoints,lanesxy_left) 152 | lanesxy_right = [] 153 | self.make_arr(lanes.rightBorderPoints,lanesxy_right) 154 | for i in range(len(lanesxy)): 155 | lanesxy[i]=self.rotate(lanesxy[i][0],lanesxy[i][1],0,0,math.radians(rotateangle) ) 156 | lanesxy[i][1]-=y 157 | lanesxy[i][0]+=x 158 | for i in range(len(lanesxy_left)): 159 | lanesxy_left[i]=self.rotate(lanesxy_left[i][0],lanesxy_left[i][1],0,0,math.radians(rotateangle) ) 160 | lanesxy_left[i][1]-=y 161 | lanesxy_left[i][0]+=x 162 | for i in range(len(lanesxy_right)): 163 | lanesxy_right[i]=self.rotate(lanesxy_right[i][0],lanesxy_right[i][1],0,0,math.radians(rotateangle) ) 164 | lanesxy_right[i][1]-=y 165 | lanesxy_right[i][0]+=x 166 | l = self.make_lanes(lanesxy, map, lanes.id, True,lanes.direction,int(lanes.speed),lanes.idLeftBorder,lanes.idRightBorder,lanes.Neighbors,float(lanes.width),lanesxy_left,lanesxy_right,lanes.turn,road) 167 | if l is None: 168 | continue 169 | self.addRelations(relations,l) 170 | self.addNeighbors(neighbors,l) 171 | self.addOverlaps(overlaps,l) 172 | road.add_lanes_to_section(lanes.id) 173 | 174 | for junction in junctions: 175 | if junction.id is None: 176 | continue 177 | if junction.points is None: 178 | continue 179 | lanesxy = [] 180 | counter+=1 181 | road=self.createRoad(map,"road_"+str(counter)) 182 | self.make_arr(junction.points,lanesxy) 183 | for i in range(len(lanesxy)): 184 | 185 | lanesxy[i]=self.rotate(lanesxy[i][0],lanesxy[i][1],0,0,math.radians(rotateangle) ) 186 | lanesxy[i][1]-=y 187 | lanesxy[i][0]+=x 188 | lanesxy_left = [] 189 | self.make_arr(junction.borderLeft,lanesxy_left) 190 | for i in range(len(lanesxy_left)): 191 | lanesxy_left[i]=self.rotate(lanesxy_left[i][0],lanesxy_left[i][1],0,0,math.radians(rotateangle) ) 192 | lanesxy_left[i][1]-=y 193 | lanesxy_left[i][0]+=x 194 | lanesxy_right = [] 195 | self.make_arr(junction.borderRight,lanesxy_right) 196 | for i in range(len(lanesxy_right)): 197 | 198 | lanesxy_right[i]=self.rotate(lanesxy_right[i][0],lanesxy_right[i][1],0,0,math.radians(rotateangle) ) 199 | lanesxy_right[i][1]-=y 200 | lanesxy_right[i][0]+=x 201 | 202 | 203 | l = self.make_lanes(lanesxy, map, junction.id, False,junction.direction,int(junction.speed),None,None,None,float(junction.width),lanesxy_left,lanesxy_right,junction.turn,road) 204 | road.add_lanes_to_section(junction.id) 205 | 206 | self.addOverlaps(overlaps,l) 207 | self.addRelations(relations,l) 208 | self.addNeighbors(neighbors,l) 209 | for stopsign in stopsigns: 210 | st=StopLane(stopsign.id,map) 211 | points=[] 212 | self.make_arr(stopsign.pointsStopLane,points) 213 | for i in range(len(points)): 214 | points[i]=self.rotate(points[i][0],points[i][1],0,0,math.radians(rotateangle) ) 215 | points[i][1]-=y 216 | points[i][0]+=x 217 | st.add_central_curve(points) 218 | self.addOverlaps(overlaps,st) 219 | for signal in signals: 220 | st=Signal(signal.id,map) 221 | points=[] 222 | self.make_arr(signal.pointsStopLane,points) 223 | for i in range(len(points)): 224 | points[i]=self.rotate(points[i][0],points[i][1],0,0,math.radians(rotateangle) ) 225 | points[i][1]+=y 226 | points[i][0]+=x 227 | signal.point=self.rotate(float(signal.point[0]),float(signal.point[1]),0,0,math.radians(rotateangle) ) 228 | signal.point[1]+=y 229 | signal.point[0]+=x 230 | signal.point=[float(signal.point[0]),float(signal.point[1])] 231 | st.addsubsignal(signal.point) 232 | st.addStopLine(points) 233 | self.addOverlaps(overlaps,st) 234 | map_file = open('base_map.txt', 'w') 235 | map_file.write(str(map)) 236 | map_file.close() 237 | -------------------------------------------------------------------------------- /Toolbars.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtCore import QDir, Qt,QSize,QSettings,QRect,QEvent 2 | from PyQt5.QtGui import QImage, QPainter, QPalette, QPixmap, QPen,QIntValidator,QDoubleValidator 3 | from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog,QLabel,QToolBar,QSpacerItem, 4 | QMainWindow, QMenu,QCheckBox, QMessageBox, QScrollArea, QSizePolicy,QVBoxLayout,QWidget,QFrame,QScrollBar,QHBoxLayout,QTextEdit,QLineEdit,QComboBox) 5 | def CreateToolbars(self): 6 | 7 | Toolbar = QToolBar() 8 | self.ComboObject=QComboBox() 9 | self.ComboObject.addItems([" ","Signal","StopSign"]) 10 | Toolbar.setIconSize(QSize(50,50)) 11 | Toolbar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon|Qt.AlignLeading) #<= Toolbuttonstyle 12 | self.addToolBar(Qt.TopToolBarArea,Toolbar) 13 | Toolbar.addAction(self.createRoad) 14 | Toolbar.addAction(self.createjunction) 15 | Toolbar.addAction(self.createStopLane) 16 | Toolbar.addSeparator() 17 | Toolbar.addWidget(self.ComboObject) 18 | Toolbar.addAction(self.chooseObject) 19 | Toolbar.addSeparator() 20 | Toolbar.addAction(self.createNeighbor) 21 | Toolbar.addAction(self.delNeighbor) 22 | Toolbar.addAction(self.createOverlap) 23 | Toolbar.addAction(self.delOverlap) 24 | Toolbar.addSeparator() 25 | Toolbar.addAction(self.cancel) 26 | Toolbar.addAction(self.ruler) 27 | 28 | 29 | Toolbar.setMovable(False) 30 | self.onlyInt = QIntValidator() 31 | self.onlyFloat=QDoubleValidator() 32 | self.ToolbarLane = QToolBar() 33 | self.EditLaneWidth=QLineEdit() 34 | self.EditLaneWidth.textChanged.connect(self.changeValueWidth) 35 | self.labelLaneId=QLabel() 36 | self.EditLaneSpeed=QLineEdit() 37 | self.EditLaneSpeed.setValidator(self.onlyInt) 38 | self.EditLaneWidth.setValidator(self.onlyFloat) 39 | self.ComboLaneBorderLeft = QComboBox(self) 40 | self.ComboLaneBorderLeft.addItems(["SOLID_WHITE", "DOTTED_WHITE", 41 | "CRUB", "SOLID_YELLOW", "DOTTED_YELLOW"]) 42 | 43 | self.EditLaneSpeed.setText("15") 44 | self.EditLaneWidth.setText("3") 45 | labelLeft=QLabel() 46 | labelLeft.setText("Left border type (blue)") 47 | 48 | labelRight=QLabel() 49 | labelRight.setText("Right border type (green)") 50 | self.ComboLaneBorderRight = QComboBox(self) 51 | self.ComboLaneBorderRight.addItems(["SOLID_WHITE", "DOTTED_WHITE", 52 | "CRUB", "SOLID_YELLOW", "DOTTED_YELLOW"]) 53 | 54 | labelWidth=QLabel() 55 | labelWidth.setText("Width") 56 | labelSpeed=QLabel() 57 | labelSpeed.setText("Speed") 58 | self.ToolbarLane.setIconSize(QSize(300,50)) 59 | self.ToolbarLane.setToolButtonStyle(Qt.ToolButtonTextBesideIcon|Qt.AlignLeft) #<= Toolbuttonstyle 60 | 61 | 62 | 63 | self.ToolbarLane.addWidget(self.labelLaneId) 64 | self.ToolbarLane.addWidget(labelWidth) 65 | self.ToolbarLane.addWidget(self.EditLaneWidth) 66 | self.ToolbarLane.addWidget(labelSpeed) 67 | self.ToolbarLane.addWidget(self.EditLaneSpeed) 68 | self.useTrajecoryChk = QCheckBox("Use Trajectory for creation") 69 | self.useTrajecoryChk.setChecked(False) 70 | self.useTrajecoryChk.stateChanged.connect(self.CreateByTrajectoryChk_changed) 71 | self.ComboLaneTurn = QComboBox(self) 72 | self.ComboLaneTurn.addItems(["NO_TURN", "LEFT_TURN", 73 | "RIGHT_TURN", "U_TURN"]) 74 | self.ToolbarLane.addWidget( self.ComboLaneTurn) 75 | self.ToolbarLane.addWidget(self.useTrajecoryChk) 76 | self.ToolbarLane.addAction(self.acceptRoad) 77 | 78 | self.ToolbarLane.setMovable(True) 79 | 80 | self.ToolbarLaneLeftRight = QToolBar() 81 | labelInfo=QLabel() 82 | labelInfo.setText("Start to draw Left border") 83 | self.ToolbarLaneLeftRight.addWidget(labelLeft) 84 | self.ToolbarLaneLeftRight.addWidget(self.ComboLaneBorderLeft) 85 | self.ToolbarLaneLeftRight.addWidget(labelInfo) 86 | labelInfo=QLabel() 87 | labelInfo.setText("Start to draw Right border") 88 | self.ToolbarLaneLeftRight.addWidget(labelRight) 89 | self.ToolbarLaneLeftRight.addWidget(self.ComboLaneBorderRight) 90 | self.ToolbarLaneLeftRight.addAction(self.createLeftRight) 91 | 92 | 93 | 94 | 95 | self.ComboLaneBorderLeft.currentIndexChanged.connect(self.leftChanged) 96 | self.ComboLaneBorderRight.currentIndexChanged.connect(self.rightChanged) 97 | 98 | 99 | 100 | 101 | 102 | 103 | self.ToolbarJunction=QToolBar() 104 | self.ToolbarJunction.addAction(self.getBezier) 105 | self.ToolbarJunction.addAction(self.acceptjunction) 106 | self.ToolbarJunction.addAction(self.previewJunction) 107 | self.ComboJunctionTurn = QComboBox(self) 108 | self.ComboJunctionTurn.addItems(["NO_TURN", "LEFT_TURN", 109 | "RIGHT_TURN", "U_TURN"]) 110 | 111 | labelSpeedJk=QLabel() 112 | labelSpeedJk.setText("Speed") 113 | self.EditLaneSpeedJk=QLineEdit() 114 | self.EditLaneSpeedJk.setValidator(self.onlyInt) 115 | self.ToolbarJunction.addWidget(labelSpeedJk) 116 | self.ToolbarJunction.addWidget(self.EditLaneSpeedJk) 117 | self.EditLaneSpeedJk.setText("10") 118 | self.ToolbarJunction.addWidget( self.ComboJunctionTurn) 119 | self.changelaneChk = QCheckBox("Lane Change") 120 | self.changelaneChk.setChecked(False) 121 | 122 | self.ToolbarJunction.addWidget(self.changelaneChk) 123 | 124 | 125 | self.ToolbarNeighbor=QToolBar() 126 | self.NeighborMainLanes = QComboBox(self) 127 | 128 | self.ComboNeighborForwardLeft = QComboBox(self) 129 | self.ComboNeighborReverseLeft = QComboBox(self) 130 | self.ComboNeighborForwardRight = QComboBox(self) 131 | self.ComboNeighborReverseRight = QComboBox(self) 132 | 133 | 134 | labelMain=QLabel() 135 | labelMain.setText("For Lane") 136 | 137 | 138 | labelNeighborForwardLeft=QLabel() 139 | labelNeighborForwardLeft.setText("Left forward neighbor") 140 | labelNeighborReverseLeft=QLabel() 141 | labelNeighborReverseLeft.setText("Left reverse neighbor") 142 | labelNeighborForwardRight=QLabel() 143 | labelNeighborForwardRight.setText("Right forward neighbor") 144 | labelNeighborReverseRight=QLabel() 145 | labelNeighborReverseRight.setText("Right reverse neighbor") 146 | 147 | 148 | self.ToolbarNeighbor.addWidget(labelMain) 149 | self.ToolbarNeighbor.addWidget(self.NeighborMainLanes) 150 | self.ToolbarNeighbor.addWidget(labelNeighborForwardLeft) 151 | self.ToolbarNeighbor.addWidget(self.ComboNeighborForwardLeft) 152 | self.ToolbarNeighbor.addWidget(labelNeighborReverseLeft) 153 | self.ToolbarNeighbor.addWidget(self.ComboNeighborReverseLeft) 154 | self.ToolbarNeighbor.addWidget(labelNeighborForwardRight) 155 | self.ToolbarNeighbor.addWidget(self.ComboNeighborForwardRight) 156 | self.ToolbarNeighbor.addWidget(labelNeighborReverseRight) 157 | self.ToolbarNeighbor.addWidget(self.ComboNeighborReverseRight) 158 | self.ToolbarNeighbor.addAction(self.acceptNeighbor) 159 | self.ToolbarStopLane=QToolBar() 160 | self.ToolbarStopLane.addAction(self.acceptStopLane) 161 | self.ToolbarOverlap=QToolBar() 162 | 163 | self.ComboOverlapLanes = QComboBox(self) 164 | labelOverlapLane=QLabel() 165 | labelOverlapLane.setText("Lane object") 166 | self.ToolbarOverlap.addWidget(labelOverlapLane) 167 | self.ToolbarOverlap.addWidget(self.ComboOverlapLanes) 168 | 169 | self.ComboboxesForOverlap=[] 170 | self.ComboOverlapSignal = QComboBox(self) 171 | labelOverlapSignal=QLabel() 172 | labelOverlapSignal.setText("Signal object") 173 | self.ToolbarOverlap.addWidget(labelOverlapSignal) 174 | self.ToolbarOverlap.addWidget(self.ComboOverlapSignal) 175 | 176 | self.ComboOverlapStopSign = QComboBox(self) 177 | labelOverlapStopSign=QLabel() 178 | labelOverlapStopSign.setText("Stop sign object") 179 | self.ToolbarOverlap.addWidget(labelOverlapStopSign) 180 | self.ToolbarOverlap.addWidget(self.ComboOverlapStopSign) 181 | self.ComboboxesForOverlap.append(self.ComboOverlapSignal) 182 | self.ComboboxesForOverlap.append(self.ComboOverlapStopSign) 183 | self.ToolbarOverlap.addAction(self.acceptOverlap) 184 | 185 | 186 | self.ToolbarSignal=QToolBar() 187 | 188 | self.ComboSignalStopLanes=QComboBox(self) 189 | labelSignalStopLane=QLabel() 190 | labelSignalStopLane.setText("Choose stoplane") 191 | self.ToolbarSignal.addWidget(labelSignalStopLane) 192 | self.ToolbarSignal.addWidget(self.ComboSignalStopLanes) 193 | self.ToolbarSignal.addAction(self.acceptSignal) 194 | 195 | 196 | self.ToolbarStopSign=QToolBar() 197 | self.ComboLaneForStopSign = QComboBox(self) 198 | labelStopSign=QLabel() 199 | labelStopSign.setText("choose stop lane") 200 | self.ToolbarStopSign.addWidget(labelStopSign) 201 | self.ToolbarStopSign.addWidget(self.ComboLaneForStopSign) 202 | self.ComboLaneForStopSign.currentIndexChanged.connect(self.signToStopLane) 203 | self.ToolbarStopSign.addAction(self.acceptStopSign) 204 | 205 | self.ToolbarDelNeighbor=QToolBar() 206 | labelIdNeighbor=QLabel() 207 | labelIdNeighbor.setText("Neighbor id and mainLane") 208 | self.ComboneighborIdMainLane= QComboBox(self) 209 | self.labelLeftForward=QLabel() 210 | self.labelLeftReverse=QLabel() 211 | self.labelRightForward=QLabel() 212 | self.labelRightReverse=QLabel() 213 | 214 | self.ComboneighborIdMainLane.currentIndexChanged.connect(self.addLabelForNeighborDeletion) 215 | self.ToolbarDelNeighbor.addWidget(labelIdNeighbor) 216 | self.ToolbarDelNeighbor.addWidget(self.ComboneighborIdMainLane) 217 | self.ToolbarDelNeighbor.addWidget(self.labelLeftForward) 218 | self.ToolbarDelNeighbor.addWidget(self.labelLeftReverse) 219 | self.ToolbarDelNeighbor.addWidget(self.labelRightForward) 220 | self.ToolbarDelNeighbor.addWidget(self.labelRightReverse) 221 | self.ToolbarDelNeighbor.addAction(self.finishNeighborDeletion) 222 | 223 | self.ToolbarDelOverlap=QToolBar() 224 | 225 | labelDelOverlap=QLabel() 226 | labelDelOverlap.setText("Choose overlap") 227 | 228 | self.ComboDelOverlap=QComboBox(self) 229 | 230 | self.ToolbarDelOverlap.addWidget(labelDelOverlap) 231 | self.ToolbarDelOverlap.addWidget(self.ComboDelOverlap) 232 | 233 | self.ToolbarDelOverlap.addAction(self.finishOverlapDeletion) 234 | 235 | -------------------------------------------------------------------------------- /Save.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtCore import QDir, Qt,QSize,QSettings,QRect,QEvent 2 | from PyQt5.QtGui import QImage, QPainter, QPalette, QPixmap, QPen,QIntValidator 3 | from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog,QLabel,QToolBar, 4 | QMainWindow, QMenu, QMessageBox, QScrollArea, QSizePolicy,QVBoxLayout,QWidget,QFrame,QScrollBar,QHBoxLayout,QTextEdit,QLineEdit,QComboBox) 5 | import create_map as cr 6 | from decimal import Decimal 7 | import pickle 8 | import os 9 | from itertools import chain 10 | from shapely.geometry import LineString 11 | 12 | def delIfEmpty(self, listObj): 13 | counter=0 14 | for obj in listObj: 15 | if obj.id not in self.imageLabel.shapes or len(self.imageLabel.shapes[obj.id].points)==0: 16 | del listObj[counter] 17 | counter+=1 18 | 19 | 20 | 21 | def clearList(self): 22 | 23 | delIfEmpty(self,self.Lanes) 24 | delIfEmpty(self,self.StopLanes) 25 | delIfEmpty(self,self.Signals) 26 | delIfEmpty(self,self.Junctions) 27 | 28 | counter=0 29 | 30 | for obj in self.Neighbors: 31 | if not(self.findById(obj.mainLane ,self.Lanes) or self.findById(obj.mainLane ,self.Junctions) ): 32 | del self.Neighbors[counter] 33 | elif obj.leftForward is not None and not (self.findById(obj.leftForward ,self.Lanes) or self.findById(obj.leftForward ,self.Junctions) ): 34 | del self.Neighbors[counter] 35 | elif obj.leftReverse is not None and not (self.findById(obj.leftReverse ,self.Lanes) or self.findById(obj.leftReverse ,self.Junctions) ): 36 | del self.Neighbors[counter] 37 | elif obj.RightForward is not None and not (self.findById(obj.RightForward ,self.Lanes) or self.findById(obj.RightForward ,self.Junctions) ): 38 | del self.Neighbors[counter] 39 | elif obj.RightReverse is not None and not (self.findById(obj.RightReverse ,self.Lanes) or self.findById(obj.RightReverse ,self.Junctions) ): 40 | del self.Neighbors[counter] 41 | counter+=1 42 | counter=0 43 | for rel in self.Relations: 44 | if not ((self.findById(rel.successor ,self.Lanes) or self.findById(rel.successor ,self.Junctions))) or not ((self.findById(rel.predecessor ,self.Lanes) or self.findById(rel.predecessor,self.Junctions))): 45 | del self.Relations[counter] 46 | counter+=1 47 | counter=0 48 | for ovr in self.Overlaps: 49 | if not (self.findById(ovr.laneOverlapId, self.Lanes) or self.findById(ovr.laneOverlapId ,self.Junctions) and (self.findById(ovr.IdSecObject,self.StopSigns) or self.findById(ovr.IdSecObject,self.Signals))): 50 | del self.Overlaps[counter] 51 | 52 | counter+=1 53 | counter=0 54 | for obj in self.StopSigns: 55 | if obj.idStopLane not in self.imageLabel.shapes or not self.imageLabel.shapes[obj.idStopLane].isStopSign: 56 | del self.StopSigns[counter] 57 | counter+=1 58 | 59 | for lane in self.Junctions: 60 | lane.points=[] 61 | for lane in self.Lanes: 62 | lane.points=[] 63 | lane.leftBorderPoints=[] 64 | lane.rightBorderPoints=[] 65 | for lane in self.StopLanes: 66 | lane.points=[] 67 | for ovr in self.Overlaps: 68 | ovr.points=[] 69 | for signal in self.Signals: 70 | signal.points=[] 71 | for sign in self.StopSigns: 72 | sign.pointsStopLane=[] 73 | def SaveTxt(self,filename): 74 | clearList(self) 75 | 76 | with open(filename, 'wb') as f: 77 | pickle.dump(self.Junctions, f) 78 | pickle.dump(self.Lanes, f) 79 | pickle.dump(self.Relations, f) 80 | pickle.dump(self.Neighbors,f) 81 | pickle.dump(self.imageLabel.shapes, f) 82 | pickle.dump(self.StopLanes,f) 83 | pickle.dump(self.Overlaps,f) 84 | pickle.dump(self.Signals,f) 85 | pickle.dump(self.StopSigns,f) 86 | with open(self.fileSetings, 'wb') as f: 87 | pickle.dump((self.offsetX,self.offsetY,self.rotation),f) 88 | bufPoints=[] 89 | 90 | 91 | for obj in self.Relations: 92 | if obj.predecessor.find("junction")!=-1: 93 | shape=None 94 | if obj.predecessor in self.imageLabel.shapes: 95 | shape=self.imageLabel.shapes[obj.predecessor] 96 | junk=self.findById(obj.predecessor,self.Junctions) 97 | if junk is not None and shape.LaneChange: 98 | obj.predecessor=obj.predecessor.replace("junction","laneChange") 99 | print(obj.predecessor) 100 | #junk.id=obj.predecessor 101 | else: 102 | continue 103 | 104 | if obj.successor.find("junction")!=-1: 105 | shape=None 106 | if obj.successor in self.imageLabel.shapes: 107 | shape=self.imageLabel.shapes[obj.successor] 108 | junk=self.findById(obj.successor,self.Junctions) 109 | if junk is not None and shape.LaneChange: 110 | obj.successor=obj.successor.replace("junction","laneChange") 111 | print(obj.successor) 112 | #junk.id=obj.successor 113 | else: 114 | continue 115 | 116 | 117 | 118 | 119 | for obj in self.Junctions: 120 | print(obj.id) 121 | shape=None 122 | if obj.id in self.imageLabel.shapes: 123 | shape=self.imageLabel.shapes[obj.id] 124 | else: 125 | self.Junctions.remove(obj) 126 | continue 127 | for point in shape.points: 128 | 129 | if type(point) is list: 130 | continue 131 | obj.points.append([Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))]) 132 | obj.isLaneChange=shape.LaneChange 133 | if obj.isLaneChange: 134 | obj.id=obj.id.replace("junction","laneChange") 135 | try: 136 | obj.turn=shape.turn#!!!!!!!!!!!!!! 137 | except: 138 | obj.turn=1 139 | 140 | for obj in self.Lanes: 141 | shape=None 142 | 143 | if obj.id in self.imageLabel.shapes: 144 | shape=self.imageLabel.shapes[obj.id] 145 | else: 146 | self.Lanes.remove(obj) 147 | continue 148 | shapeLeft=self.imageLabel.shapes[obj.id+"Left"] 149 | shapeRight=self.imageLabel.shapes[obj.id+"Right"] 150 | for point in shape.points: 151 | print(point.x()) 152 | print(self.resizeFactorWidth) 153 | print(self.geotiffScale) 154 | print(Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale))) 155 | print("XXXX") 156 | print(point.y()) 157 | print(self.resizeFactorWidth) 158 | print(self.geotiffScale) 159 | print(Decimal(point.y())*(self.resizeFactorWidth*Decimal(self.geotiffScale))) 160 | print("YYYYYYYY") 161 | obj.points.append([Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))]) 162 | 163 | for point in shapeLeft.points: 164 | obj.leftBorderPoints.append([Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))]) 165 | for point in shapeRight.points: 166 | obj.rightBorderPoints.append([Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))]) 167 | obj.leftBorderType=shapeLeft.type 168 | obj.rightBorderType=shapeRight.type 169 | try: 170 | obj.turn=shape.turn#!!!!!!!!!!!!!! 171 | except: 172 | obj.turn=1 173 | for obj in self.StopLanes: 174 | shape=None 175 | if obj.id in self.imageLabel.shapes: 176 | shape=self.imageLabel.shapes[obj.id] 177 | else: 178 | self.StopLanes.remove(obj) 179 | continue 180 | for point in shape.points: 181 | obj.points.append([Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))]) 182 | 183 | for obj in self.Overlaps: 184 | point=obj.pointOverlap 185 | Lanepoints=self.findById(obj.laneOverlapId,self.Lanes) 186 | if Lanepoints is None: 187 | Lanepoints=self.findById(obj.laneOverlapId,self.Junctions) 188 | shape=None 189 | if Lanepoints.id in self.imageLabel.shapes: 190 | shape=self.imageLabel.shapes[obj.id] 191 | if shape.LaneChange: 192 | obj.laneOverlapId=obj.laneOverlapId.replace("junction","laneChange") 193 | else: 194 | continue 195 | Lanepoints=Lanepoints.points 196 | pointMap=[Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))] 197 | Lanepoints.insert(1, pointMap) 198 | line = LineString(Lanepoints[:2]) 199 | Lanepoints.remove(pointMap) 200 | dist = line.length 201 | bufPoints.append(obj.pointOverlap) 202 | obj.pointOverlap=dist 203 | for obj in self.Signals: 204 | point=None 205 | if obj.id in self.imageLabel.shapes or obj.idStopLane in self.imageLabel.shapes: 206 | point=self.imageLabel.shapes[obj.id].points[0] 207 | else: 208 | self.Signals.remove(obj) 209 | continue 210 | pointsLane=self.imageLabel.shapes[obj.idStopLane].points 211 | 212 | obj.point=[Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))] 213 | 214 | for point in pointsLane: 215 | 216 | obj.pointsStopLane.append([Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))]) 217 | 218 | for obj in self.StopSigns: 219 | pointsLane=None 220 | if obj.idStopLane in self.imageLabel.shapes: 221 | pointsLane=self.imageLabel.shapes[obj.idStopLane].points 222 | else: 223 | self.StopSigns.remove(obj) 224 | continue 225 | 226 | for point in pointsLane: 227 | obj.pointsStopLane.append([Decimal(point.x())*(self.resizeFactorWidth*Decimal(self.geotiffScale)),Decimal(point.y())*(self.resizeFactorHeight*Decimal(self.geotiffScale))]) 228 | gen=cr.BaseMapGeneration() 229 | gen.start(self.Lanes,self.Junctions,self.Relations,self.Neighbors,self.Overlaps,self.Signals,self.StopSigns,self.offsetX,self.offsetY,self.rotation) 230 | for i in range(0,len(self.Overlaps)): 231 | self.Overlaps[i].pointOverlap=bufPoints[i] 232 | 233 | 234 | 235 | 236 | 237 | 238 | -------------------------------------------------------------------------------- /modules/map/map_pnc_junction_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_pnc_junction.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 17 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_pnc_junction.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n(modules/map/proto/map_pnc_junction.proto\x12\x0c\x61pollo.hdmap\x1a\x1emodules/map/proto/map_id.proto\x1a$modules/map/proto/map_geometry.proto\"\x92\x02\n\x07Passage\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12#\n\tsignal_id\x18\x02 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12\"\n\x08yield_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x0cstop_sign_id\x18\x04 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12!\n\x07lane_id\x18\x05 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12(\n\x04type\x18\x06 \x01(\x0e\x32\x1a.apollo.hdmap.Passage.Type\"+\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08\x45NTRANCE\x10\x01\x12\x08\n\x04\x45XIT\x10\x02\"T\n\x0cPassageGroup\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x07passage\x18\x02 \x03(\x0b\x32\x15.apollo.hdmap.Passage\"\xac\x01\n\x0bPNCJunction\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12&\n\x07polygon\x18\x02 \x01(\x0b\x32\x15.apollo.hdmap.Polygon\x12$\n\noverlap_id\x18\x03 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12\x31\n\rpassage_group\x18\x04 \x03(\x0b\x32\x1a.apollo.hdmap.PassageGroup') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | _PASSAGE_TYPE = _descriptor.EnumDescriptor( 31 | name='Type', 32 | full_name='apollo.hdmap.Passage.Type', 33 | filename=None, 34 | file=DESCRIPTOR, 35 | values=[ 36 | _descriptor.EnumValueDescriptor( 37 | name='UNKNOWN', index=0, number=0, 38 | options=None, 39 | type=None), 40 | _descriptor.EnumValueDescriptor( 41 | name='ENTRANCE', index=1, number=1, 42 | options=None, 43 | type=None), 44 | _descriptor.EnumValueDescriptor( 45 | name='EXIT', index=2, number=2, 46 | options=None, 47 | type=None), 48 | ], 49 | containing_type=None, 50 | options=None, 51 | serialized_start=360, 52 | serialized_end=403, 53 | ) 54 | _sym_db.RegisterEnumDescriptor(_PASSAGE_TYPE) 55 | 56 | 57 | _PASSAGE = _descriptor.Descriptor( 58 | name='Passage', 59 | full_name='apollo.hdmap.Passage', 60 | filename=None, 61 | file=DESCRIPTOR, 62 | containing_type=None, 63 | fields=[ 64 | _descriptor.FieldDescriptor( 65 | name='id', full_name='apollo.hdmap.Passage.id', index=0, 66 | number=1, type=11, cpp_type=10, label=1, 67 | has_default_value=False, default_value=None, 68 | message_type=None, enum_type=None, containing_type=None, 69 | is_extension=False, extension_scope=None, 70 | options=None), 71 | _descriptor.FieldDescriptor( 72 | name='signal_id', full_name='apollo.hdmap.Passage.signal_id', index=1, 73 | number=2, type=11, cpp_type=10, label=3, 74 | has_default_value=False, default_value=[], 75 | message_type=None, enum_type=None, containing_type=None, 76 | is_extension=False, extension_scope=None, 77 | options=None), 78 | _descriptor.FieldDescriptor( 79 | name='yield_id', full_name='apollo.hdmap.Passage.yield_id', index=2, 80 | number=3, type=11, cpp_type=10, label=3, 81 | has_default_value=False, default_value=[], 82 | message_type=None, enum_type=None, containing_type=None, 83 | is_extension=False, extension_scope=None, 84 | options=None), 85 | _descriptor.FieldDescriptor( 86 | name='stop_sign_id', full_name='apollo.hdmap.Passage.stop_sign_id', index=3, 87 | number=4, type=11, cpp_type=10, label=3, 88 | has_default_value=False, default_value=[], 89 | message_type=None, enum_type=None, containing_type=None, 90 | is_extension=False, extension_scope=None, 91 | options=None), 92 | _descriptor.FieldDescriptor( 93 | name='lane_id', full_name='apollo.hdmap.Passage.lane_id', index=4, 94 | number=5, type=11, cpp_type=10, label=3, 95 | has_default_value=False, default_value=[], 96 | message_type=None, enum_type=None, containing_type=None, 97 | is_extension=False, extension_scope=None, 98 | options=None), 99 | _descriptor.FieldDescriptor( 100 | name='type', full_name='apollo.hdmap.Passage.type', index=5, 101 | number=6, type=14, cpp_type=8, label=1, 102 | has_default_value=False, default_value=0, 103 | message_type=None, enum_type=None, containing_type=None, 104 | is_extension=False, extension_scope=None, 105 | options=None), 106 | ], 107 | extensions=[ 108 | ], 109 | nested_types=[], 110 | enum_types=[ 111 | _PASSAGE_TYPE, 112 | ], 113 | options=None, 114 | is_extendable=False, 115 | syntax='proto2', 116 | extension_ranges=[], 117 | oneofs=[ 118 | ], 119 | serialized_start=129, 120 | serialized_end=403, 121 | ) 122 | 123 | 124 | _PASSAGEGROUP = _descriptor.Descriptor( 125 | name='PassageGroup', 126 | full_name='apollo.hdmap.PassageGroup', 127 | filename=None, 128 | file=DESCRIPTOR, 129 | containing_type=None, 130 | fields=[ 131 | _descriptor.FieldDescriptor( 132 | name='id', full_name='apollo.hdmap.PassageGroup.id', index=0, 133 | number=1, type=11, cpp_type=10, label=1, 134 | has_default_value=False, default_value=None, 135 | message_type=None, enum_type=None, containing_type=None, 136 | is_extension=False, extension_scope=None, 137 | options=None), 138 | _descriptor.FieldDescriptor( 139 | name='passage', full_name='apollo.hdmap.PassageGroup.passage', index=1, 140 | number=2, type=11, cpp_type=10, label=3, 141 | has_default_value=False, default_value=[], 142 | message_type=None, enum_type=None, containing_type=None, 143 | is_extension=False, extension_scope=None, 144 | options=None), 145 | ], 146 | extensions=[ 147 | ], 148 | nested_types=[], 149 | enum_types=[ 150 | ], 151 | options=None, 152 | is_extendable=False, 153 | syntax='proto2', 154 | extension_ranges=[], 155 | oneofs=[ 156 | ], 157 | serialized_start=405, 158 | serialized_end=489, 159 | ) 160 | 161 | 162 | _PNCJUNCTION = _descriptor.Descriptor( 163 | name='PNCJunction', 164 | full_name='apollo.hdmap.PNCJunction', 165 | filename=None, 166 | file=DESCRIPTOR, 167 | containing_type=None, 168 | fields=[ 169 | _descriptor.FieldDescriptor( 170 | name='id', full_name='apollo.hdmap.PNCJunction.id', index=0, 171 | number=1, type=11, cpp_type=10, label=1, 172 | has_default_value=False, default_value=None, 173 | message_type=None, enum_type=None, containing_type=None, 174 | is_extension=False, extension_scope=None, 175 | options=None), 176 | _descriptor.FieldDescriptor( 177 | name='polygon', full_name='apollo.hdmap.PNCJunction.polygon', index=1, 178 | number=2, type=11, cpp_type=10, label=1, 179 | has_default_value=False, default_value=None, 180 | message_type=None, enum_type=None, containing_type=None, 181 | is_extension=False, extension_scope=None, 182 | options=None), 183 | _descriptor.FieldDescriptor( 184 | name='overlap_id', full_name='apollo.hdmap.PNCJunction.overlap_id', index=2, 185 | number=3, type=11, cpp_type=10, label=3, 186 | has_default_value=False, default_value=[], 187 | message_type=None, enum_type=None, containing_type=None, 188 | is_extension=False, extension_scope=None, 189 | options=None), 190 | _descriptor.FieldDescriptor( 191 | name='passage_group', full_name='apollo.hdmap.PNCJunction.passage_group', index=3, 192 | number=4, type=11, cpp_type=10, label=3, 193 | has_default_value=False, default_value=[], 194 | message_type=None, enum_type=None, containing_type=None, 195 | is_extension=False, extension_scope=None, 196 | options=None), 197 | ], 198 | extensions=[ 199 | ], 200 | nested_types=[], 201 | enum_types=[ 202 | ], 203 | options=None, 204 | is_extendable=False, 205 | syntax='proto2', 206 | extension_ranges=[], 207 | oneofs=[ 208 | ], 209 | serialized_start=492, 210 | serialized_end=664, 211 | ) 212 | 213 | _PASSAGE.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 214 | _PASSAGE.fields_by_name['signal_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 215 | _PASSAGE.fields_by_name['yield_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 216 | _PASSAGE.fields_by_name['stop_sign_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 217 | _PASSAGE.fields_by_name['lane_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 218 | _PASSAGE.fields_by_name['type'].enum_type = _PASSAGE_TYPE 219 | _PASSAGE_TYPE.containing_type = _PASSAGE 220 | _PASSAGEGROUP.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 221 | _PASSAGEGROUP.fields_by_name['passage'].message_type = _PASSAGE 222 | _PNCJUNCTION.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 223 | _PNCJUNCTION.fields_by_name['polygon'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 224 | _PNCJUNCTION.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 225 | _PNCJUNCTION.fields_by_name['passage_group'].message_type = _PASSAGEGROUP 226 | DESCRIPTOR.message_types_by_name['Passage'] = _PASSAGE 227 | DESCRIPTOR.message_types_by_name['PassageGroup'] = _PASSAGEGROUP 228 | DESCRIPTOR.message_types_by_name['PNCJunction'] = _PNCJUNCTION 229 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 230 | 231 | Passage = _reflection.GeneratedProtocolMessageType('Passage', (_message.Message,), dict( 232 | DESCRIPTOR = _PASSAGE, 233 | __module__ = 'modules.map.map_pnc_junction_pb2' 234 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Passage) 235 | )) 236 | _sym_db.RegisterMessage(Passage) 237 | 238 | PassageGroup = _reflection.GeneratedProtocolMessageType('PassageGroup', (_message.Message,), dict( 239 | DESCRIPTOR = _PASSAGEGROUP, 240 | __module__ = 'modules.map.map_pnc_junction_pb2' 241 | # @@protoc_insertion_point(class_scope:apollo.hdmap.PassageGroup) 242 | )) 243 | _sym_db.RegisterMessage(PassageGroup) 244 | 245 | PNCJunction = _reflection.GeneratedProtocolMessageType('PNCJunction', (_message.Message,), dict( 246 | DESCRIPTOR = _PNCJUNCTION, 247 | __module__ = 'modules.map.map_pnc_junction_pb2' 248 | # @@protoc_insertion_point(class_scope:apollo.hdmap.PNCJunction) 249 | )) 250 | _sym_db.RegisterMessage(PNCJunction) 251 | 252 | 253 | # @@protoc_insertion_point(module_scope) 254 | -------------------------------------------------------------------------------- /modules/map/geometry_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/common/proto/geometry.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | 17 | 18 | DESCRIPTOR = _descriptor.FileDescriptor( 19 | name='modules/common/proto/geometry.proto', 20 | package='apollo.common', 21 | syntax='proto2', 22 | serialized_pb=_b('\n#modules/common/proto/geometry.proto\x12\rapollo.common\"8\n\x08PointENU\x12\x0e\n\x01x\x18\x01 \x01(\x01:\x03nan\x12\x0e\n\x01y\x18\x02 \x01(\x01:\x03nan\x12\x0c\n\x01z\x18\x03 \x01(\x01:\x01\x30\"A\n\x08PointLLH\x12\x10\n\x03lon\x18\x01 \x01(\x01:\x03nan\x12\x10\n\x03lat\x18\x02 \x01(\x01:\x03nan\x12\x11\n\x06height\x18\x03 \x01(\x01:\x01\x30\")\n\x07Point2D\x12\x0e\n\x01x\x18\x01 \x01(\x01:\x03nan\x12\x0e\n\x01y\x18\x02 \x01(\x01:\x03nan\"9\n\x07Point3D\x12\x0e\n\x01x\x18\x01 \x01(\x01:\x03nan\x12\x0e\n\x01y\x18\x02 \x01(\x01:\x03nan\x12\x0e\n\x01z\x18\x03 \x01(\x01:\x03nan\"P\n\nQuaternion\x12\x0f\n\x02qx\x18\x01 \x01(\x01:\x03nan\x12\x0f\n\x02qy\x18\x02 \x01(\x01:\x03nan\x12\x0f\n\x02qz\x18\x03 \x01(\x01:\x03nan\x12\x0f\n\x02qw\x18\x04 \x01(\x01:\x03nan\"0\n\x07Polygon\x12%\n\x05point\x18\x01 \x03(\x0b\x32\x16.apollo.common.Point3D') 23 | ) 24 | 25 | 26 | 27 | 28 | _POINTENU = _descriptor.Descriptor( 29 | name='PointENU', 30 | full_name='apollo.common.PointENU', 31 | filename=None, 32 | file=DESCRIPTOR, 33 | containing_type=None, 34 | fields=[ 35 | _descriptor.FieldDescriptor( 36 | name='x', full_name='apollo.common.PointENU.x', index=0, 37 | number=1, type=1, cpp_type=5, label=1, 38 | has_default_value=True, default_value=(1e10000 * 0), 39 | message_type=None, enum_type=None, containing_type=None, 40 | is_extension=False, extension_scope=None, 41 | options=None), 42 | _descriptor.FieldDescriptor( 43 | name='y', full_name='apollo.common.PointENU.y', index=1, 44 | number=2, type=1, cpp_type=5, label=1, 45 | has_default_value=True, default_value=(1e10000 * 0), 46 | message_type=None, enum_type=None, containing_type=None, 47 | is_extension=False, extension_scope=None, 48 | options=None), 49 | _descriptor.FieldDescriptor( 50 | name='z', full_name='apollo.common.PointENU.z', index=2, 51 | number=3, type=1, cpp_type=5, label=1, 52 | has_default_value=True, default_value=float(0), 53 | message_type=None, enum_type=None, containing_type=None, 54 | is_extension=False, extension_scope=None, 55 | options=None), 56 | ], 57 | extensions=[ 58 | ], 59 | nested_types=[], 60 | enum_types=[ 61 | ], 62 | options=None, 63 | is_extendable=False, 64 | syntax='proto2', 65 | extension_ranges=[], 66 | oneofs=[ 67 | ], 68 | serialized_start=54, 69 | serialized_end=110, 70 | ) 71 | 72 | 73 | _POINTLLH = _descriptor.Descriptor( 74 | name='PointLLH', 75 | full_name='apollo.common.PointLLH', 76 | filename=None, 77 | file=DESCRIPTOR, 78 | containing_type=None, 79 | fields=[ 80 | _descriptor.FieldDescriptor( 81 | name='lon', full_name='apollo.common.PointLLH.lon', index=0, 82 | number=1, type=1, cpp_type=5, label=1, 83 | has_default_value=True, default_value=(1e10000 * 0), 84 | message_type=None, enum_type=None, containing_type=None, 85 | is_extension=False, extension_scope=None, 86 | options=None), 87 | _descriptor.FieldDescriptor( 88 | name='lat', full_name='apollo.common.PointLLH.lat', index=1, 89 | number=2, type=1, cpp_type=5, label=1, 90 | has_default_value=True, default_value=(1e10000 * 0), 91 | message_type=None, enum_type=None, containing_type=None, 92 | is_extension=False, extension_scope=None, 93 | options=None), 94 | _descriptor.FieldDescriptor( 95 | name='height', full_name='apollo.common.PointLLH.height', index=2, 96 | number=3, type=1, cpp_type=5, label=1, 97 | has_default_value=True, default_value=float(0), 98 | message_type=None, enum_type=None, containing_type=None, 99 | is_extension=False, extension_scope=None, 100 | options=None), 101 | ], 102 | extensions=[ 103 | ], 104 | nested_types=[], 105 | enum_types=[ 106 | ], 107 | options=None, 108 | is_extendable=False, 109 | syntax='proto2', 110 | extension_ranges=[], 111 | oneofs=[ 112 | ], 113 | serialized_start=112, 114 | serialized_end=177, 115 | ) 116 | 117 | 118 | _POINT2D = _descriptor.Descriptor( 119 | name='Point2D', 120 | full_name='apollo.common.Point2D', 121 | filename=None, 122 | file=DESCRIPTOR, 123 | containing_type=None, 124 | fields=[ 125 | _descriptor.FieldDescriptor( 126 | name='x', full_name='apollo.common.Point2D.x', index=0, 127 | number=1, type=1, cpp_type=5, label=1, 128 | has_default_value=True, default_value=(1e10000 * 0), 129 | message_type=None, enum_type=None, containing_type=None, 130 | is_extension=False, extension_scope=None, 131 | options=None), 132 | _descriptor.FieldDescriptor( 133 | name='y', full_name='apollo.common.Point2D.y', index=1, 134 | number=2, type=1, cpp_type=5, label=1, 135 | has_default_value=True, default_value=(1e10000 * 0), 136 | message_type=None, enum_type=None, containing_type=None, 137 | is_extension=False, extension_scope=None, 138 | options=None), 139 | ], 140 | extensions=[ 141 | ], 142 | nested_types=[], 143 | enum_types=[ 144 | ], 145 | options=None, 146 | is_extendable=False, 147 | syntax='proto2', 148 | extension_ranges=[], 149 | oneofs=[ 150 | ], 151 | serialized_start=179, 152 | serialized_end=220, 153 | ) 154 | 155 | 156 | _POINT3D = _descriptor.Descriptor( 157 | name='Point3D', 158 | full_name='apollo.common.Point3D', 159 | filename=None, 160 | file=DESCRIPTOR, 161 | containing_type=None, 162 | fields=[ 163 | _descriptor.FieldDescriptor( 164 | name='x', full_name='apollo.common.Point3D.x', index=0, 165 | number=1, type=1, cpp_type=5, label=1, 166 | has_default_value=True, default_value=(1e10000 * 0), 167 | message_type=None, enum_type=None, containing_type=None, 168 | is_extension=False, extension_scope=None, 169 | options=None), 170 | _descriptor.FieldDescriptor( 171 | name='y', full_name='apollo.common.Point3D.y', index=1, 172 | number=2, type=1, cpp_type=5, label=1, 173 | has_default_value=True, default_value=(1e10000 * 0), 174 | message_type=None, enum_type=None, containing_type=None, 175 | is_extension=False, extension_scope=None, 176 | options=None), 177 | _descriptor.FieldDescriptor( 178 | name='z', full_name='apollo.common.Point3D.z', index=2, 179 | number=3, type=1, cpp_type=5, label=1, 180 | has_default_value=True, default_value=(1e10000 * 0), 181 | message_type=None, enum_type=None, containing_type=None, 182 | is_extension=False, extension_scope=None, 183 | options=None), 184 | ], 185 | extensions=[ 186 | ], 187 | nested_types=[], 188 | enum_types=[ 189 | ], 190 | options=None, 191 | is_extendable=False, 192 | syntax='proto2', 193 | extension_ranges=[], 194 | oneofs=[ 195 | ], 196 | serialized_start=222, 197 | serialized_end=279, 198 | ) 199 | 200 | 201 | _QUATERNION = _descriptor.Descriptor( 202 | name='Quaternion', 203 | full_name='apollo.common.Quaternion', 204 | filename=None, 205 | file=DESCRIPTOR, 206 | containing_type=None, 207 | fields=[ 208 | _descriptor.FieldDescriptor( 209 | name='qx', full_name='apollo.common.Quaternion.qx', index=0, 210 | number=1, type=1, cpp_type=5, label=1, 211 | has_default_value=True, default_value=(1e10000 * 0), 212 | message_type=None, enum_type=None, containing_type=None, 213 | is_extension=False, extension_scope=None, 214 | options=None), 215 | _descriptor.FieldDescriptor( 216 | name='qy', full_name='apollo.common.Quaternion.qy', index=1, 217 | number=2, type=1, cpp_type=5, label=1, 218 | has_default_value=True, default_value=(1e10000 * 0), 219 | message_type=None, enum_type=None, containing_type=None, 220 | is_extension=False, extension_scope=None, 221 | options=None), 222 | _descriptor.FieldDescriptor( 223 | name='qz', full_name='apollo.common.Quaternion.qz', index=2, 224 | number=3, type=1, cpp_type=5, label=1, 225 | has_default_value=True, default_value=(1e10000 * 0), 226 | message_type=None, enum_type=None, containing_type=None, 227 | is_extension=False, extension_scope=None, 228 | options=None), 229 | _descriptor.FieldDescriptor( 230 | name='qw', full_name='apollo.common.Quaternion.qw', index=3, 231 | number=4, type=1, cpp_type=5, label=1, 232 | has_default_value=True, default_value=(1e10000 * 0), 233 | message_type=None, enum_type=None, containing_type=None, 234 | is_extension=False, extension_scope=None, 235 | options=None), 236 | ], 237 | extensions=[ 238 | ], 239 | nested_types=[], 240 | enum_types=[ 241 | ], 242 | options=None, 243 | is_extendable=False, 244 | syntax='proto2', 245 | extension_ranges=[], 246 | oneofs=[ 247 | ], 248 | serialized_start=281, 249 | serialized_end=361, 250 | ) 251 | 252 | 253 | _POLYGON = _descriptor.Descriptor( 254 | name='Polygon', 255 | full_name='apollo.common.Polygon', 256 | filename=None, 257 | file=DESCRIPTOR, 258 | containing_type=None, 259 | fields=[ 260 | _descriptor.FieldDescriptor( 261 | name='point', full_name='apollo.common.Polygon.point', index=0, 262 | number=1, type=11, cpp_type=10, label=3, 263 | has_default_value=False, default_value=[], 264 | message_type=None, enum_type=None, containing_type=None, 265 | is_extension=False, extension_scope=None, 266 | options=None), 267 | ], 268 | extensions=[ 269 | ], 270 | nested_types=[], 271 | enum_types=[ 272 | ], 273 | options=None, 274 | is_extendable=False, 275 | syntax='proto2', 276 | extension_ranges=[], 277 | oneofs=[ 278 | ], 279 | serialized_start=363, 280 | serialized_end=411, 281 | ) 282 | 283 | _POLYGON.fields_by_name['point'].message_type = _POINT3D 284 | DESCRIPTOR.message_types_by_name['PointENU'] = _POINTENU 285 | DESCRIPTOR.message_types_by_name['PointLLH'] = _POINTLLH 286 | DESCRIPTOR.message_types_by_name['Point2D'] = _POINT2D 287 | DESCRIPTOR.message_types_by_name['Point3D'] = _POINT3D 288 | DESCRIPTOR.message_types_by_name['Quaternion'] = _QUATERNION 289 | DESCRIPTOR.message_types_by_name['Polygon'] = _POLYGON 290 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 291 | 292 | PointENU = _reflection.GeneratedProtocolMessageType('PointENU', (_message.Message,), dict( 293 | DESCRIPTOR = _POINTENU, 294 | __module__ = 'modules.common.proto.geometry_pb2' 295 | # @@protoc_insertion_point(class_scope:apollo.common.PointENU) 296 | )) 297 | _sym_db.RegisterMessage(PointENU) 298 | 299 | PointLLH = _reflection.GeneratedProtocolMessageType('PointLLH', (_message.Message,), dict( 300 | DESCRIPTOR = _POINTLLH, 301 | __module__ = 'modules.common.proto.geometry_pb2' 302 | # @@protoc_insertion_point(class_scope:apollo.common.PointLLH) 303 | )) 304 | _sym_db.RegisterMessage(PointLLH) 305 | 306 | Point2D = _reflection.GeneratedProtocolMessageType('Point2D', (_message.Message,), dict( 307 | DESCRIPTOR = _POINT2D, 308 | __module__ = 'modules.common.proto.geometry_pb2' 309 | # @@protoc_insertion_point(class_scope:apollo.common.Point2D) 310 | )) 311 | _sym_db.RegisterMessage(Point2D) 312 | 313 | Point3D = _reflection.GeneratedProtocolMessageType('Point3D', (_message.Message,), dict( 314 | DESCRIPTOR = _POINT3D, 315 | __module__ = 'modules.common.proto.geometry_pb2' 316 | # @@protoc_insertion_point(class_scope:apollo.common.Point3D) 317 | )) 318 | _sym_db.RegisterMessage(Point3D) 319 | 320 | Quaternion = _reflection.GeneratedProtocolMessageType('Quaternion', (_message.Message,), dict( 321 | DESCRIPTOR = _QUATERNION, 322 | __module__ = 'modules.common.proto.geometry_pb2' 323 | # @@protoc_insertion_point(class_scope:apollo.common.Quaternion) 324 | )) 325 | _sym_db.RegisterMessage(Quaternion) 326 | 327 | Polygon = _reflection.GeneratedProtocolMessageType('Polygon', (_message.Message,), dict( 328 | DESCRIPTOR = _POLYGON, 329 | __module__ = 'modules.common.proto.geometry_pb2' 330 | # @@protoc_insertion_point(class_scope:apollo.common.Polygon) 331 | )) 332 | _sym_db.RegisterMessage(Polygon) 333 | 334 | 335 | # @@protoc_insertion_point(module_scope) 336 | -------------------------------------------------------------------------------- /modules/map/map_signal_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_signal.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import geometry_pb2 as modules_dot_common_dot_proto_dot_geometry__pb2 17 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 18 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 19 | 20 | 21 | DESCRIPTOR = _descriptor.FileDescriptor( 22 | name='modules/map/proto/map_signal.proto', 23 | package='apollo.hdmap', 24 | syntax='proto2', 25 | serialized_pb=_b('\n\"modules/map/proto/map_signal.proto\x12\x0c\x61pollo.hdmap\x1a#modules/common/proto/geometry.proto\x1a$modules/map/proto/map_geometry.proto\x1a\x1emodules/map/proto/map_id.proto\"\xa1\x02\n\tSubsignal\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12*\n\x04type\x18\x02 \x01(\x0e\x32\x1c.apollo.hdmap.Subsignal.Type\x12)\n\x08location\x18\x03 \x01(\x0b\x32\x17.apollo.common.PointENU\"\x9e\x01\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x01\x12\n\n\x06\x43IRCLE\x10\x02\x12\x0e\n\nARROW_LEFT\x10\x03\x12\x11\n\rARROW_FORWARD\x10\x04\x12\x0f\n\x0b\x41RROW_RIGHT\x10\x05\x12\x1a\n\x16\x41RROW_LEFT_AND_FORWARD\x10\x06\x12\x1b\n\x17\x41RROW_RIGHT_AND_FORWARD\x10\x07\x12\x10\n\x0c\x41RROW_U_TURN\x10\x08\"a\n\x08SignInfo\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.apollo.hdmap.SignInfo.Type\"*\n\x04Type\x12\x08\n\x04None\x10\x00\x12\x18\n\x14NO_RIGHT_TURN_ON_RED\x10\x01\"\x92\x03\n\x06Signal\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12\'\n\x08\x62oundary\x18\x02 \x01(\x0b\x32\x15.apollo.hdmap.Polygon\x12*\n\tsubsignal\x18\x03 \x03(\x0b\x32\x17.apollo.hdmap.Subsignal\x12$\n\noverlap_id\x18\x04 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12\'\n\x04type\x18\x05 \x01(\x0e\x32\x19.apollo.hdmap.Signal.Type\x12&\n\tstop_line\x18\x06 \x03(\x0b\x32\x13.apollo.hdmap.Curve\x12)\n\tsign_info\x18\x07 \x03(\x0b\x32\x16.apollo.hdmap.SignInfo\"s\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x01\x12\x14\n\x10MIX_2_HORIZONTAL\x10\x02\x12\x12\n\x0eMIX_2_VERTICAL\x10\x03\x12\x14\n\x10MIX_3_HORIZONTAL\x10\x04\x12\x12\n\x0eMIX_3_VERTICAL\x10\x05\x12\n\n\x06SINGLE\x10\x06') 26 | , 27 | dependencies=[modules_dot_common_dot_proto_dot_geometry__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,]) 28 | 29 | 30 | 31 | _SUBSIGNAL_TYPE = _descriptor.EnumDescriptor( 32 | name='Type', 33 | full_name='apollo.hdmap.Subsignal.Type', 34 | filename=None, 35 | file=DESCRIPTOR, 36 | values=[ 37 | _descriptor.EnumValueDescriptor( 38 | name='UNKNOWN', index=0, number=1, 39 | options=None, 40 | type=None), 41 | _descriptor.EnumValueDescriptor( 42 | name='CIRCLE', index=1, number=2, 43 | options=None, 44 | type=None), 45 | _descriptor.EnumValueDescriptor( 46 | name='ARROW_LEFT', index=2, number=3, 47 | options=None, 48 | type=None), 49 | _descriptor.EnumValueDescriptor( 50 | name='ARROW_FORWARD', index=3, number=4, 51 | options=None, 52 | type=None), 53 | _descriptor.EnumValueDescriptor( 54 | name='ARROW_RIGHT', index=4, number=5, 55 | options=None, 56 | type=None), 57 | _descriptor.EnumValueDescriptor( 58 | name='ARROW_LEFT_AND_FORWARD', index=5, number=6, 59 | options=None, 60 | type=None), 61 | _descriptor.EnumValueDescriptor( 62 | name='ARROW_RIGHT_AND_FORWARD', index=6, number=7, 63 | options=None, 64 | type=None), 65 | _descriptor.EnumValueDescriptor( 66 | name='ARROW_U_TURN', index=7, number=8, 67 | options=None, 68 | type=None), 69 | ], 70 | containing_type=None, 71 | options=None, 72 | serialized_start=291, 73 | serialized_end=449, 74 | ) 75 | _sym_db.RegisterEnumDescriptor(_SUBSIGNAL_TYPE) 76 | 77 | _SIGNINFO_TYPE = _descriptor.EnumDescriptor( 78 | name='Type', 79 | full_name='apollo.hdmap.SignInfo.Type', 80 | filename=None, 81 | file=DESCRIPTOR, 82 | values=[ 83 | _descriptor.EnumValueDescriptor( 84 | name='None', index=0, number=0, 85 | options=None, 86 | type=None), 87 | _descriptor.EnumValueDescriptor( 88 | name='NO_RIGHT_TURN_ON_RED', index=1, number=1, 89 | options=None, 90 | type=None), 91 | ], 92 | containing_type=None, 93 | options=None, 94 | serialized_start=506, 95 | serialized_end=548, 96 | ) 97 | _sym_db.RegisterEnumDescriptor(_SIGNINFO_TYPE) 98 | 99 | _SIGNAL_TYPE = _descriptor.EnumDescriptor( 100 | name='Type', 101 | full_name='apollo.hdmap.Signal.Type', 102 | filename=None, 103 | file=DESCRIPTOR, 104 | values=[ 105 | _descriptor.EnumValueDescriptor( 106 | name='UNKNOWN', index=0, number=1, 107 | options=None, 108 | type=None), 109 | _descriptor.EnumValueDescriptor( 110 | name='MIX_2_HORIZONTAL', index=1, number=2, 111 | options=None, 112 | type=None), 113 | _descriptor.EnumValueDescriptor( 114 | name='MIX_2_VERTICAL', index=2, number=3, 115 | options=None, 116 | type=None), 117 | _descriptor.EnumValueDescriptor( 118 | name='MIX_3_HORIZONTAL', index=3, number=4, 119 | options=None, 120 | type=None), 121 | _descriptor.EnumValueDescriptor( 122 | name='MIX_3_VERTICAL', index=4, number=5, 123 | options=None, 124 | type=None), 125 | _descriptor.EnumValueDescriptor( 126 | name='SINGLE', index=5, number=6, 127 | options=None, 128 | type=None), 129 | ], 130 | containing_type=None, 131 | options=None, 132 | serialized_start=838, 133 | serialized_end=953, 134 | ) 135 | _sym_db.RegisterEnumDescriptor(_SIGNAL_TYPE) 136 | 137 | 138 | _SUBSIGNAL = _descriptor.Descriptor( 139 | name='Subsignal', 140 | full_name='apollo.hdmap.Subsignal', 141 | filename=None, 142 | file=DESCRIPTOR, 143 | containing_type=None, 144 | fields=[ 145 | _descriptor.FieldDescriptor( 146 | name='id', full_name='apollo.hdmap.Subsignal.id', index=0, 147 | number=1, type=11, cpp_type=10, label=1, 148 | has_default_value=False, default_value=None, 149 | message_type=None, enum_type=None, containing_type=None, 150 | is_extension=False, extension_scope=None, 151 | options=None), 152 | _descriptor.FieldDescriptor( 153 | name='type', full_name='apollo.hdmap.Subsignal.type', index=1, 154 | number=2, type=14, cpp_type=8, label=1, 155 | has_default_value=False, default_value=1, 156 | message_type=None, enum_type=None, containing_type=None, 157 | is_extension=False, extension_scope=None, 158 | options=None), 159 | _descriptor.FieldDescriptor( 160 | name='location', full_name='apollo.hdmap.Subsignal.location', index=2, 161 | number=3, type=11, cpp_type=10, label=1, 162 | has_default_value=False, default_value=None, 163 | message_type=None, enum_type=None, containing_type=None, 164 | is_extension=False, extension_scope=None, 165 | options=None), 166 | ], 167 | extensions=[ 168 | ], 169 | nested_types=[], 170 | enum_types=[ 171 | _SUBSIGNAL_TYPE, 172 | ], 173 | options=None, 174 | is_extendable=False, 175 | syntax='proto2', 176 | extension_ranges=[], 177 | oneofs=[ 178 | ], 179 | serialized_start=160, 180 | serialized_end=449, 181 | ) 182 | 183 | 184 | _SIGNINFO = _descriptor.Descriptor( 185 | name='SignInfo', 186 | full_name='apollo.hdmap.SignInfo', 187 | filename=None, 188 | file=DESCRIPTOR, 189 | containing_type=None, 190 | fields=[ 191 | _descriptor.FieldDescriptor( 192 | name='type', full_name='apollo.hdmap.SignInfo.type', index=0, 193 | number=1, type=14, cpp_type=8, label=1, 194 | has_default_value=False, default_value=0, 195 | message_type=None, enum_type=None, containing_type=None, 196 | is_extension=False, extension_scope=None, 197 | options=None), 198 | ], 199 | extensions=[ 200 | ], 201 | nested_types=[], 202 | enum_types=[ 203 | _SIGNINFO_TYPE, 204 | ], 205 | options=None, 206 | is_extendable=False, 207 | syntax='proto2', 208 | extension_ranges=[], 209 | oneofs=[ 210 | ], 211 | serialized_start=451, 212 | serialized_end=548, 213 | ) 214 | 215 | 216 | _SIGNAL = _descriptor.Descriptor( 217 | name='Signal', 218 | full_name='apollo.hdmap.Signal', 219 | filename=None, 220 | file=DESCRIPTOR, 221 | containing_type=None, 222 | fields=[ 223 | _descriptor.FieldDescriptor( 224 | name='id', full_name='apollo.hdmap.Signal.id', index=0, 225 | number=1, type=11, cpp_type=10, label=1, 226 | has_default_value=False, default_value=None, 227 | message_type=None, enum_type=None, containing_type=None, 228 | is_extension=False, extension_scope=None, 229 | options=None), 230 | _descriptor.FieldDescriptor( 231 | name='boundary', full_name='apollo.hdmap.Signal.boundary', index=1, 232 | number=2, type=11, cpp_type=10, label=1, 233 | has_default_value=False, default_value=None, 234 | message_type=None, enum_type=None, containing_type=None, 235 | is_extension=False, extension_scope=None, 236 | options=None), 237 | _descriptor.FieldDescriptor( 238 | name='subsignal', full_name='apollo.hdmap.Signal.subsignal', index=2, 239 | number=3, type=11, cpp_type=10, label=3, 240 | has_default_value=False, default_value=[], 241 | message_type=None, enum_type=None, containing_type=None, 242 | is_extension=False, extension_scope=None, 243 | options=None), 244 | _descriptor.FieldDescriptor( 245 | name='overlap_id', full_name='apollo.hdmap.Signal.overlap_id', index=3, 246 | number=4, type=11, cpp_type=10, label=3, 247 | has_default_value=False, default_value=[], 248 | message_type=None, enum_type=None, containing_type=None, 249 | is_extension=False, extension_scope=None, 250 | options=None), 251 | _descriptor.FieldDescriptor( 252 | name='type', full_name='apollo.hdmap.Signal.type', index=4, 253 | number=5, type=14, cpp_type=8, label=1, 254 | has_default_value=False, default_value=1, 255 | message_type=None, enum_type=None, containing_type=None, 256 | is_extension=False, extension_scope=None, 257 | options=None), 258 | _descriptor.FieldDescriptor( 259 | name='stop_line', full_name='apollo.hdmap.Signal.stop_line', index=5, 260 | number=6, type=11, cpp_type=10, label=3, 261 | has_default_value=False, default_value=[], 262 | message_type=None, enum_type=None, containing_type=None, 263 | is_extension=False, extension_scope=None, 264 | options=None), 265 | _descriptor.FieldDescriptor( 266 | name='sign_info', full_name='apollo.hdmap.Signal.sign_info', index=6, 267 | number=7, type=11, cpp_type=10, label=3, 268 | has_default_value=False, default_value=[], 269 | message_type=None, enum_type=None, containing_type=None, 270 | is_extension=False, extension_scope=None, 271 | options=None), 272 | ], 273 | extensions=[ 274 | ], 275 | nested_types=[], 276 | enum_types=[ 277 | _SIGNAL_TYPE, 278 | ], 279 | options=None, 280 | is_extendable=False, 281 | syntax='proto2', 282 | extension_ranges=[], 283 | oneofs=[ 284 | ], 285 | serialized_start=551, 286 | serialized_end=953, 287 | ) 288 | 289 | _SUBSIGNAL.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 290 | _SUBSIGNAL.fields_by_name['type'].enum_type = _SUBSIGNAL_TYPE 291 | _SUBSIGNAL.fields_by_name['location'].message_type = modules_dot_common_dot_proto_dot_geometry__pb2._POINTENU 292 | _SUBSIGNAL_TYPE.containing_type = _SUBSIGNAL 293 | _SIGNINFO.fields_by_name['type'].enum_type = _SIGNINFO_TYPE 294 | _SIGNINFO_TYPE.containing_type = _SIGNINFO 295 | _SIGNAL.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 296 | _SIGNAL.fields_by_name['boundary'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._POLYGON 297 | _SIGNAL.fields_by_name['subsignal'].message_type = _SUBSIGNAL 298 | _SIGNAL.fields_by_name['overlap_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 299 | _SIGNAL.fields_by_name['type'].enum_type = _SIGNAL_TYPE 300 | _SIGNAL.fields_by_name['stop_line'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._CURVE 301 | _SIGNAL.fields_by_name['sign_info'].message_type = _SIGNINFO 302 | _SIGNAL_TYPE.containing_type = _SIGNAL 303 | DESCRIPTOR.message_types_by_name['Subsignal'] = _SUBSIGNAL 304 | DESCRIPTOR.message_types_by_name['SignInfo'] = _SIGNINFO 305 | DESCRIPTOR.message_types_by_name['Signal'] = _SIGNAL 306 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 307 | 308 | Subsignal = _reflection.GeneratedProtocolMessageType('Subsignal', (_message.Message,), dict( 309 | DESCRIPTOR = _SUBSIGNAL, 310 | __module__ = 'modules.map.map_signal_pb2' 311 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Subsignal) 312 | )) 313 | _sym_db.RegisterMessage(Subsignal) 314 | 315 | SignInfo = _reflection.GeneratedProtocolMessageType('SignInfo', (_message.Message,), dict( 316 | DESCRIPTOR = _SIGNINFO, 317 | __module__ = 'modules.map.map_signal_pb2' 318 | # @@protoc_insertion_point(class_scope:apollo.hdmap.SignInfo) 319 | )) 320 | _sym_db.RegisterMessage(SignInfo) 321 | 322 | Signal = _reflection.GeneratedProtocolMessageType('Signal', (_message.Message,), dict( 323 | DESCRIPTOR = _SIGNAL, 324 | __module__ = 'modules.map.map_signal_pb2' 325 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Signal) 326 | )) 327 | _sym_db.RegisterMessage(Signal) 328 | 329 | 330 | # @@protoc_insertion_point(module_scope) 331 | -------------------------------------------------------------------------------- /modules/map/map_road_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map_road.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_geometry_pb2 as modules_dot_map_dot_proto_dot_map__geometry__pb2 17 | from modules.map import map_id_pb2 as modules_dot_map_dot_proto_dot_map__id__pb2 18 | 19 | 20 | DESCRIPTOR = _descriptor.FileDescriptor( 21 | name='modules/map/proto/map_road.proto', 22 | package='apollo.hdmap', 23 | syntax='proto2', 24 | serialized_pb=_b('\n modules/map/proto/map_road.proto\x12\x0c\x61pollo.hdmap\x1a$modules/map/proto/map_geometry.proto\x1a\x1emodules/map/proto/map_id.proto\"\xa9\x01\n\x0c\x42oundaryEdge\x12\"\n\x05\x63urve\x18\x01 \x01(\x0b\x32\x13.apollo.hdmap.Curve\x12-\n\x04type\x18\x02 \x01(\x0e\x32\x1f.apollo.hdmap.BoundaryEdge.Type\"F\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06NORMAL\x10\x01\x12\x11\n\rLEFT_BOUNDARY\x10\x02\x12\x12\n\x0eRIGHT_BOUNDARY\x10\x03\";\n\x0f\x42oundaryPolygon\x12(\n\x04\x65\x64ge\x18\x01 \x03(\x0b\x32\x1a.apollo.hdmap.BoundaryEdge\"q\n\x0cRoadBoundary\x12\x34\n\router_polygon\x18\x01 \x01(\x0b\x32\x1d.apollo.hdmap.BoundaryPolygon\x12+\n\x04hole\x18\x02 \x03(\x0b\x32\x1d.apollo.hdmap.BoundaryPolygon\"d\n\x0fRoadROIBoundary\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12\x33\n\x0froad_boundaries\x18\x02 \x03(\x0b\x32\x1a.apollo.hdmap.RoadBoundary\"|\n\x0bRoadSection\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12!\n\x07lane_id\x18\x02 \x03(\x0b\x32\x10.apollo.hdmap.Id\x12,\n\x08\x62oundary\x18\x03 \x01(\x0b\x32\x1a.apollo.hdmap.RoadBoundary\"\xd9\x01\n\x04Road\x12\x1c\n\x02id\x18\x01 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12*\n\x07section\x18\x02 \x03(\x0b\x32\x19.apollo.hdmap.RoadSection\x12%\n\x0bjunction_id\x18\x03 \x01(\x0b\x32\x10.apollo.hdmap.Id\x12%\n\x04type\x18\x04 \x01(\x0e\x32\x17.apollo.hdmap.Road.Type\"9\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07HIGHWAY\x10\x01\x12\r\n\tCITY_ROAD\x10\x02\x12\x08\n\x04PARK\x10\x03') 25 | , 26 | dependencies=[modules_dot_map_dot_proto_dot_map__geometry__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__id__pb2.DESCRIPTOR,]) 27 | 28 | 29 | 30 | _BOUNDARYEDGE_TYPE = _descriptor.EnumDescriptor( 31 | name='Type', 32 | full_name='apollo.hdmap.BoundaryEdge.Type', 33 | filename=None, 34 | file=DESCRIPTOR, 35 | values=[ 36 | _descriptor.EnumValueDescriptor( 37 | name='UNKNOWN', index=0, number=0, 38 | options=None, 39 | type=None), 40 | _descriptor.EnumValueDescriptor( 41 | name='NORMAL', index=1, number=1, 42 | options=None, 43 | type=None), 44 | _descriptor.EnumValueDescriptor( 45 | name='LEFT_BOUNDARY', index=2, number=2, 46 | options=None, 47 | type=None), 48 | _descriptor.EnumValueDescriptor( 49 | name='RIGHT_BOUNDARY', index=3, number=3, 50 | options=None, 51 | type=None), 52 | ], 53 | containing_type=None, 54 | options=None, 55 | serialized_start=220, 56 | serialized_end=290, 57 | ) 58 | _sym_db.RegisterEnumDescriptor(_BOUNDARYEDGE_TYPE) 59 | 60 | _ROAD_TYPE = _descriptor.EnumDescriptor( 61 | name='Type', 62 | full_name='apollo.hdmap.Road.Type', 63 | filename=None, 64 | file=DESCRIPTOR, 65 | values=[ 66 | _descriptor.EnumValueDescriptor( 67 | name='UNKNOWN', index=0, number=0, 68 | options=None, 69 | type=None), 70 | _descriptor.EnumValueDescriptor( 71 | name='HIGHWAY', index=1, number=1, 72 | options=None, 73 | type=None), 74 | _descriptor.EnumValueDescriptor( 75 | name='CITY_ROAD', index=2, number=2, 76 | options=None, 77 | type=None), 78 | _descriptor.EnumValueDescriptor( 79 | name='PARK', index=3, number=3, 80 | options=None, 81 | type=None), 82 | ], 83 | containing_type=None, 84 | options=None, 85 | serialized_start=857, 86 | serialized_end=914, 87 | ) 88 | _sym_db.RegisterEnumDescriptor(_ROAD_TYPE) 89 | 90 | 91 | _BOUNDARYEDGE = _descriptor.Descriptor( 92 | name='BoundaryEdge', 93 | full_name='apollo.hdmap.BoundaryEdge', 94 | filename=None, 95 | file=DESCRIPTOR, 96 | containing_type=None, 97 | fields=[ 98 | _descriptor.FieldDescriptor( 99 | name='curve', full_name='apollo.hdmap.BoundaryEdge.curve', index=0, 100 | number=1, type=11, cpp_type=10, label=1, 101 | has_default_value=False, default_value=None, 102 | message_type=None, enum_type=None, containing_type=None, 103 | is_extension=False, extension_scope=None, 104 | options=None), 105 | _descriptor.FieldDescriptor( 106 | name='type', full_name='apollo.hdmap.BoundaryEdge.type', index=1, 107 | number=2, type=14, cpp_type=8, label=1, 108 | has_default_value=False, default_value=0, 109 | message_type=None, enum_type=None, containing_type=None, 110 | is_extension=False, extension_scope=None, 111 | options=None), 112 | ], 113 | extensions=[ 114 | ], 115 | nested_types=[], 116 | enum_types=[ 117 | _BOUNDARYEDGE_TYPE, 118 | ], 119 | options=None, 120 | is_extendable=False, 121 | syntax='proto2', 122 | extension_ranges=[], 123 | oneofs=[ 124 | ], 125 | serialized_start=121, 126 | serialized_end=290, 127 | ) 128 | 129 | 130 | _BOUNDARYPOLYGON = _descriptor.Descriptor( 131 | name='BoundaryPolygon', 132 | full_name='apollo.hdmap.BoundaryPolygon', 133 | filename=None, 134 | file=DESCRIPTOR, 135 | containing_type=None, 136 | fields=[ 137 | _descriptor.FieldDescriptor( 138 | name='edge', full_name='apollo.hdmap.BoundaryPolygon.edge', index=0, 139 | number=1, type=11, cpp_type=10, label=3, 140 | has_default_value=False, default_value=[], 141 | message_type=None, enum_type=None, containing_type=None, 142 | is_extension=False, extension_scope=None, 143 | options=None), 144 | ], 145 | extensions=[ 146 | ], 147 | nested_types=[], 148 | enum_types=[ 149 | ], 150 | options=None, 151 | is_extendable=False, 152 | syntax='proto2', 153 | extension_ranges=[], 154 | oneofs=[ 155 | ], 156 | serialized_start=292, 157 | serialized_end=351, 158 | ) 159 | 160 | 161 | _ROADBOUNDARY = _descriptor.Descriptor( 162 | name='RoadBoundary', 163 | full_name='apollo.hdmap.RoadBoundary', 164 | filename=None, 165 | file=DESCRIPTOR, 166 | containing_type=None, 167 | fields=[ 168 | _descriptor.FieldDescriptor( 169 | name='outer_polygon', full_name='apollo.hdmap.RoadBoundary.outer_polygon', index=0, 170 | number=1, type=11, cpp_type=10, label=1, 171 | has_default_value=False, default_value=None, 172 | message_type=None, enum_type=None, containing_type=None, 173 | is_extension=False, extension_scope=None, 174 | options=None), 175 | _descriptor.FieldDescriptor( 176 | name='hole', full_name='apollo.hdmap.RoadBoundary.hole', index=1, 177 | number=2, type=11, cpp_type=10, label=3, 178 | has_default_value=False, default_value=[], 179 | message_type=None, enum_type=None, containing_type=None, 180 | is_extension=False, extension_scope=None, 181 | options=None), 182 | ], 183 | extensions=[ 184 | ], 185 | nested_types=[], 186 | enum_types=[ 187 | ], 188 | options=None, 189 | is_extendable=False, 190 | syntax='proto2', 191 | extension_ranges=[], 192 | oneofs=[ 193 | ], 194 | serialized_start=353, 195 | serialized_end=466, 196 | ) 197 | 198 | 199 | _ROADROIBOUNDARY = _descriptor.Descriptor( 200 | name='RoadROIBoundary', 201 | full_name='apollo.hdmap.RoadROIBoundary', 202 | filename=None, 203 | file=DESCRIPTOR, 204 | containing_type=None, 205 | fields=[ 206 | _descriptor.FieldDescriptor( 207 | name='id', full_name='apollo.hdmap.RoadROIBoundary.id', index=0, 208 | number=1, type=11, cpp_type=10, label=1, 209 | has_default_value=False, default_value=None, 210 | message_type=None, enum_type=None, containing_type=None, 211 | is_extension=False, extension_scope=None, 212 | options=None), 213 | _descriptor.FieldDescriptor( 214 | name='road_boundaries', full_name='apollo.hdmap.RoadROIBoundary.road_boundaries', index=1, 215 | number=2, type=11, cpp_type=10, label=3, 216 | has_default_value=False, default_value=[], 217 | message_type=None, enum_type=None, containing_type=None, 218 | is_extension=False, extension_scope=None, 219 | options=None), 220 | ], 221 | extensions=[ 222 | ], 223 | nested_types=[], 224 | enum_types=[ 225 | ], 226 | options=None, 227 | is_extendable=False, 228 | syntax='proto2', 229 | extension_ranges=[], 230 | oneofs=[ 231 | ], 232 | serialized_start=468, 233 | serialized_end=568, 234 | ) 235 | 236 | 237 | _ROADSECTION = _descriptor.Descriptor( 238 | name='RoadSection', 239 | full_name='apollo.hdmap.RoadSection', 240 | filename=None, 241 | file=DESCRIPTOR, 242 | containing_type=None, 243 | fields=[ 244 | _descriptor.FieldDescriptor( 245 | name='id', full_name='apollo.hdmap.RoadSection.id', index=0, 246 | number=1, type=11, cpp_type=10, label=1, 247 | has_default_value=False, default_value=None, 248 | message_type=None, enum_type=None, containing_type=None, 249 | is_extension=False, extension_scope=None, 250 | options=None), 251 | _descriptor.FieldDescriptor( 252 | name='lane_id', full_name='apollo.hdmap.RoadSection.lane_id', index=1, 253 | number=2, type=11, cpp_type=10, label=3, 254 | has_default_value=False, default_value=[], 255 | message_type=None, enum_type=None, containing_type=None, 256 | is_extension=False, extension_scope=None, 257 | options=None), 258 | _descriptor.FieldDescriptor( 259 | name='boundary', full_name='apollo.hdmap.RoadSection.boundary', index=2, 260 | number=3, type=11, cpp_type=10, label=1, 261 | has_default_value=False, default_value=None, 262 | message_type=None, enum_type=None, containing_type=None, 263 | is_extension=False, extension_scope=None, 264 | options=None), 265 | ], 266 | extensions=[ 267 | ], 268 | nested_types=[], 269 | enum_types=[ 270 | ], 271 | options=None, 272 | is_extendable=False, 273 | syntax='proto2', 274 | extension_ranges=[], 275 | oneofs=[ 276 | ], 277 | serialized_start=570, 278 | serialized_end=694, 279 | ) 280 | 281 | 282 | _ROAD = _descriptor.Descriptor( 283 | name='Road', 284 | full_name='apollo.hdmap.Road', 285 | filename=None, 286 | file=DESCRIPTOR, 287 | containing_type=None, 288 | fields=[ 289 | _descriptor.FieldDescriptor( 290 | name='id', full_name='apollo.hdmap.Road.id', index=0, 291 | number=1, type=11, cpp_type=10, label=1, 292 | has_default_value=False, default_value=None, 293 | message_type=None, enum_type=None, containing_type=None, 294 | is_extension=False, extension_scope=None, 295 | options=None), 296 | _descriptor.FieldDescriptor( 297 | name='section', full_name='apollo.hdmap.Road.section', index=1, 298 | number=2, type=11, cpp_type=10, label=3, 299 | has_default_value=False, default_value=[], 300 | message_type=None, enum_type=None, containing_type=None, 301 | is_extension=False, extension_scope=None, 302 | options=None), 303 | _descriptor.FieldDescriptor( 304 | name='junction_id', full_name='apollo.hdmap.Road.junction_id', index=2, 305 | number=3, type=11, cpp_type=10, label=1, 306 | has_default_value=False, default_value=None, 307 | message_type=None, enum_type=None, containing_type=None, 308 | is_extension=False, extension_scope=None, 309 | options=None), 310 | _descriptor.FieldDescriptor( 311 | name='type', full_name='apollo.hdmap.Road.type', index=3, 312 | number=4, type=14, cpp_type=8, label=1, 313 | has_default_value=False, default_value=0, 314 | message_type=None, enum_type=None, containing_type=None, 315 | is_extension=False, extension_scope=None, 316 | options=None), 317 | ], 318 | extensions=[ 319 | ], 320 | nested_types=[], 321 | enum_types=[ 322 | _ROAD_TYPE, 323 | ], 324 | options=None, 325 | is_extendable=False, 326 | syntax='proto2', 327 | extension_ranges=[], 328 | oneofs=[ 329 | ], 330 | serialized_start=697, 331 | serialized_end=914, 332 | ) 333 | 334 | _BOUNDARYEDGE.fields_by_name['curve'].message_type = modules_dot_map_dot_proto_dot_map__geometry__pb2._CURVE 335 | _BOUNDARYEDGE.fields_by_name['type'].enum_type = _BOUNDARYEDGE_TYPE 336 | _BOUNDARYEDGE_TYPE.containing_type = _BOUNDARYEDGE 337 | _BOUNDARYPOLYGON.fields_by_name['edge'].message_type = _BOUNDARYEDGE 338 | _ROADBOUNDARY.fields_by_name['outer_polygon'].message_type = _BOUNDARYPOLYGON 339 | _ROADBOUNDARY.fields_by_name['hole'].message_type = _BOUNDARYPOLYGON 340 | _ROADROIBOUNDARY.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 341 | _ROADROIBOUNDARY.fields_by_name['road_boundaries'].message_type = _ROADBOUNDARY 342 | _ROADSECTION.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 343 | _ROADSECTION.fields_by_name['lane_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 344 | _ROADSECTION.fields_by_name['boundary'].message_type = _ROADBOUNDARY 345 | _ROAD.fields_by_name['id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 346 | _ROAD.fields_by_name['section'].message_type = _ROADSECTION 347 | _ROAD.fields_by_name['junction_id'].message_type = modules_dot_map_dot_proto_dot_map__id__pb2._ID 348 | _ROAD.fields_by_name['type'].enum_type = _ROAD_TYPE 349 | _ROAD_TYPE.containing_type = _ROAD 350 | DESCRIPTOR.message_types_by_name['BoundaryEdge'] = _BOUNDARYEDGE 351 | DESCRIPTOR.message_types_by_name['BoundaryPolygon'] = _BOUNDARYPOLYGON 352 | DESCRIPTOR.message_types_by_name['RoadBoundary'] = _ROADBOUNDARY 353 | DESCRIPTOR.message_types_by_name['RoadROIBoundary'] = _ROADROIBOUNDARY 354 | DESCRIPTOR.message_types_by_name['RoadSection'] = _ROADSECTION 355 | DESCRIPTOR.message_types_by_name['Road'] = _ROAD 356 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 357 | 358 | BoundaryEdge = _reflection.GeneratedProtocolMessageType('BoundaryEdge', (_message.Message,), dict( 359 | DESCRIPTOR = _BOUNDARYEDGE, 360 | __module__ = 'modules.map.map_road_pb2' 361 | # @@protoc_insertion_point(class_scope:apollo.hdmap.BoundaryEdge) 362 | )) 363 | _sym_db.RegisterMessage(BoundaryEdge) 364 | 365 | BoundaryPolygon = _reflection.GeneratedProtocolMessageType('BoundaryPolygon', (_message.Message,), dict( 366 | DESCRIPTOR = _BOUNDARYPOLYGON, 367 | __module__ = 'modules.map.map_road_pb2' 368 | # @@protoc_insertion_point(class_scope:apollo.hdmap.BoundaryPolygon) 369 | )) 370 | _sym_db.RegisterMessage(BoundaryPolygon) 371 | 372 | RoadBoundary = _reflection.GeneratedProtocolMessageType('RoadBoundary', (_message.Message,), dict( 373 | DESCRIPTOR = _ROADBOUNDARY, 374 | __module__ = 'modules.map.map_road_pb2' 375 | # @@protoc_insertion_point(class_scope:apollo.hdmap.RoadBoundary) 376 | )) 377 | _sym_db.RegisterMessage(RoadBoundary) 378 | 379 | RoadROIBoundary = _reflection.GeneratedProtocolMessageType('RoadROIBoundary', (_message.Message,), dict( 380 | DESCRIPTOR = _ROADROIBOUNDARY, 381 | __module__ = 'modules.map.map_road_pb2' 382 | # @@protoc_insertion_point(class_scope:apollo.hdmap.RoadROIBoundary) 383 | )) 384 | _sym_db.RegisterMessage(RoadROIBoundary) 385 | 386 | RoadSection = _reflection.GeneratedProtocolMessageType('RoadSection', (_message.Message,), dict( 387 | DESCRIPTOR = _ROADSECTION, 388 | __module__ = 'modules.map.map_road_pb2' 389 | # @@protoc_insertion_point(class_scope:apollo.hdmap.RoadSection) 390 | )) 391 | _sym_db.RegisterMessage(RoadSection) 392 | 393 | Road = _reflection.GeneratedProtocolMessageType('Road', (_message.Message,), dict( 394 | DESCRIPTOR = _ROAD, 395 | __module__ = 'modules.map.map_road_pb2' 396 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Road) 397 | )) 398 | _sym_db.RegisterMessage(Road) 399 | 400 | 401 | # @@protoc_insertion_point(module_scope) 402 | -------------------------------------------------------------------------------- /modules/map/map_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: modules/map/proto/map.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | from modules.map import map_clear_area_pb2 as modules_dot_map_dot_proto_dot_map__clear__area__pb2 17 | from modules.map import map_crosswalk_pb2 as modules_dot_map_dot_proto_dot_map__crosswalk__pb2 18 | from modules.map import map_junction_pb2 as modules_dot_map_dot_proto_dot_map__junction__pb2 19 | from modules.map import map_lane_pb2 as modules_dot_map_dot_proto_dot_map__lane__pb2 20 | from modules.map import map_overlap_pb2 as modules_dot_map_dot_proto_dot_map__overlap__pb2 21 | from modules.map import map_signal_pb2 as modules_dot_map_dot_proto_dot_map__signal__pb2 22 | from modules.map import map_speed_bump_pb2 as modules_dot_map_dot_proto_dot_map__speed__bump__pb2 23 | from modules.map import map_stop_sign_pb2 as modules_dot_map_dot_proto_dot_map__stop__sign__pb2 24 | from modules.map import map_yield_sign_pb2 as modules_dot_map_dot_proto_dot_map__yield__sign__pb2 25 | from modules.map import map_road_pb2 as modules_dot_map_dot_proto_dot_map__road__pb2 26 | from modules.map import map_parking_space_pb2 as modules_dot_map_dot_proto_dot_map__parking__space__pb2 27 | from modules.map import map_pnc_junction_pb2 as modules_dot_map_dot_proto_dot_map__pnc__junction__pb2 28 | 29 | 30 | DESCRIPTOR = _descriptor.FileDescriptor( 31 | name='modules/map/proto/map.proto', 32 | package='apollo.hdmap', 33 | syntax='proto2', 34 | serialized_pb=_b('\n\x1bmodules/map/proto/map.proto\x12\x0c\x61pollo.hdmap\x1a&modules/map/proto/map_clear_area.proto\x1a%modules/map/proto/map_crosswalk.proto\x1a$modules/map/proto/map_junction.proto\x1a modules/map/proto/map_lane.proto\x1a#modules/map/proto/map_overlap.proto\x1a\"modules/map/proto/map_signal.proto\x1a&modules/map/proto/map_speed_bump.proto\x1a%modules/map/proto/map_stop_sign.proto\x1a&modules/map/proto/map_yield_sign.proto\x1a modules/map/proto/map_road.proto\x1a)modules/map/proto/map_parking_space.proto\x1a(modules/map/proto/map_pnc_junction.proto\"\x1a\n\nProjection\x12\x0c\n\x04proj\x18\x01 \x01(\t\"\xeb\x01\n\x06Header\x12\x0f\n\x07version\x18\x01 \x01(\x0c\x12\x0c\n\x04\x64\x61te\x18\x02 \x01(\x0c\x12,\n\nprojection\x18\x03 \x01(\x0b\x32\x18.apollo.hdmap.Projection\x12\x10\n\x08\x64istrict\x18\x04 \x01(\x0c\x12\x12\n\ngeneration\x18\x05 \x01(\x0c\x12\x11\n\trev_major\x18\x06 \x01(\x0c\x12\x11\n\trev_minor\x18\x07 \x01(\x0c\x12\x0c\n\x04left\x18\x08 \x01(\x01\x12\x0b\n\x03top\x18\t \x01(\x01\x12\r\n\x05right\x18\n \x01(\x01\x12\x0e\n\x06\x62ottom\x18\x0b \x01(\x01\x12\x0e\n\x06vendor\x18\x0c \x01(\x0c\"\xa4\x04\n\x03Map\x12$\n\x06header\x18\x01 \x01(\x0b\x32\x14.apollo.hdmap.Header\x12*\n\tcrosswalk\x18\x02 \x03(\x0b\x32\x17.apollo.hdmap.Crosswalk\x12(\n\x08junction\x18\x03 \x03(\x0b\x32\x16.apollo.hdmap.Junction\x12 \n\x04lane\x18\x04 \x03(\x0b\x32\x12.apollo.hdmap.Lane\x12)\n\tstop_sign\x18\x05 \x03(\x0b\x32\x16.apollo.hdmap.StopSign\x12$\n\x06signal\x18\x06 \x03(\x0b\x32\x14.apollo.hdmap.Signal\x12&\n\x05yield\x18\x07 \x03(\x0b\x32\x17.apollo.hdmap.YieldSign\x12&\n\x07overlap\x18\x08 \x03(\x0b\x32\x15.apollo.hdmap.Overlap\x12+\n\nclear_area\x18\t \x03(\x0b\x32\x17.apollo.hdmap.ClearArea\x12+\n\nspeed_bump\x18\n \x03(\x0b\x32\x17.apollo.hdmap.SpeedBump\x12 \n\x04road\x18\x0b \x03(\x0b\x32\x12.apollo.hdmap.Road\x12\x31\n\rparking_space\x18\x0c \x03(\x0b\x32\x1a.apollo.hdmap.ParkingSpace\x12/\n\x0cpnc_junction\x18\r \x03(\x0b\x32\x19.apollo.hdmap.PNCJunction') 35 | , 36 | dependencies=[modules_dot_map_dot_proto_dot_map__clear__area__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__crosswalk__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__junction__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__lane__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__overlap__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__signal__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__speed__bump__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__stop__sign__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__yield__sign__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__road__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__parking__space__pb2.DESCRIPTOR,modules_dot_map_dot_proto_dot_map__pnc__junction__pb2.DESCRIPTOR,]) 37 | 38 | 39 | 40 | 41 | _PROJECTION = _descriptor.Descriptor( 42 | name='Projection', 43 | full_name='apollo.hdmap.Projection', 44 | filename=None, 45 | file=DESCRIPTOR, 46 | containing_type=None, 47 | fields=[ 48 | _descriptor.FieldDescriptor( 49 | name='proj', full_name='apollo.hdmap.Projection.proj', index=0, 50 | number=1, type=9, cpp_type=9, label=1, 51 | has_default_value=False, default_value=_b("").decode('utf-8'), 52 | message_type=None, enum_type=None, containing_type=None, 53 | is_extension=False, extension_scope=None, 54 | options=None), 55 | ], 56 | extensions=[ 57 | ], 58 | nested_types=[], 59 | enum_types=[ 60 | ], 61 | options=None, 62 | is_extendable=False, 63 | syntax='proto2', 64 | extension_ranges=[], 65 | oneofs=[ 66 | ], 67 | serialized_start=507, 68 | serialized_end=533, 69 | ) 70 | 71 | 72 | _HEADER = _descriptor.Descriptor( 73 | name='Header', 74 | full_name='apollo.hdmap.Header', 75 | filename=None, 76 | file=DESCRIPTOR, 77 | containing_type=None, 78 | fields=[ 79 | _descriptor.FieldDescriptor( 80 | name='version', full_name='apollo.hdmap.Header.version', index=0, 81 | number=1, type=12, cpp_type=9, label=1, 82 | has_default_value=False, default_value=_b(""), 83 | message_type=None, enum_type=None, containing_type=None, 84 | is_extension=False, extension_scope=None, 85 | options=None), 86 | _descriptor.FieldDescriptor( 87 | name='date', full_name='apollo.hdmap.Header.date', index=1, 88 | number=2, type=12, cpp_type=9, label=1, 89 | has_default_value=False, default_value=_b(""), 90 | message_type=None, enum_type=None, containing_type=None, 91 | is_extension=False, extension_scope=None, 92 | options=None), 93 | _descriptor.FieldDescriptor( 94 | name='projection', full_name='apollo.hdmap.Header.projection', index=2, 95 | number=3, type=11, cpp_type=10, label=1, 96 | has_default_value=False, default_value=None, 97 | message_type=None, enum_type=None, containing_type=None, 98 | is_extension=False, extension_scope=None, 99 | options=None), 100 | _descriptor.FieldDescriptor( 101 | name='district', full_name='apollo.hdmap.Header.district', index=3, 102 | number=4, type=12, cpp_type=9, label=1, 103 | has_default_value=False, default_value=_b(""), 104 | message_type=None, enum_type=None, containing_type=None, 105 | is_extension=False, extension_scope=None, 106 | options=None), 107 | _descriptor.FieldDescriptor( 108 | name='generation', full_name='apollo.hdmap.Header.generation', index=4, 109 | number=5, type=12, cpp_type=9, label=1, 110 | has_default_value=False, default_value=_b(""), 111 | message_type=None, enum_type=None, containing_type=None, 112 | is_extension=False, extension_scope=None, 113 | options=None), 114 | _descriptor.FieldDescriptor( 115 | name='rev_major', full_name='apollo.hdmap.Header.rev_major', index=5, 116 | number=6, type=12, cpp_type=9, label=1, 117 | has_default_value=False, default_value=_b(""), 118 | message_type=None, enum_type=None, containing_type=None, 119 | is_extension=False, extension_scope=None, 120 | options=None), 121 | _descriptor.FieldDescriptor( 122 | name='rev_minor', full_name='apollo.hdmap.Header.rev_minor', index=6, 123 | number=7, type=12, cpp_type=9, label=1, 124 | has_default_value=False, default_value=_b(""), 125 | message_type=None, enum_type=None, containing_type=None, 126 | is_extension=False, extension_scope=None, 127 | options=None), 128 | _descriptor.FieldDescriptor( 129 | name='left', full_name='apollo.hdmap.Header.left', index=7, 130 | number=8, type=1, cpp_type=5, label=1, 131 | has_default_value=False, default_value=float(0), 132 | message_type=None, enum_type=None, containing_type=None, 133 | is_extension=False, extension_scope=None, 134 | options=None), 135 | _descriptor.FieldDescriptor( 136 | name='top', full_name='apollo.hdmap.Header.top', index=8, 137 | number=9, type=1, cpp_type=5, label=1, 138 | has_default_value=False, default_value=float(0), 139 | message_type=None, enum_type=None, containing_type=None, 140 | is_extension=False, extension_scope=None, 141 | options=None), 142 | _descriptor.FieldDescriptor( 143 | name='right', full_name='apollo.hdmap.Header.right', index=9, 144 | number=10, type=1, cpp_type=5, label=1, 145 | has_default_value=False, default_value=float(0), 146 | message_type=None, enum_type=None, containing_type=None, 147 | is_extension=False, extension_scope=None, 148 | options=None), 149 | _descriptor.FieldDescriptor( 150 | name='bottom', full_name='apollo.hdmap.Header.bottom', index=10, 151 | number=11, type=1, cpp_type=5, label=1, 152 | has_default_value=False, default_value=float(0), 153 | message_type=None, enum_type=None, containing_type=None, 154 | is_extension=False, extension_scope=None, 155 | options=None), 156 | _descriptor.FieldDescriptor( 157 | name='vendor', full_name='apollo.hdmap.Header.vendor', index=11, 158 | number=12, type=12, cpp_type=9, label=1, 159 | has_default_value=False, default_value=_b(""), 160 | message_type=None, enum_type=None, containing_type=None, 161 | is_extension=False, extension_scope=None, 162 | options=None), 163 | ], 164 | extensions=[ 165 | ], 166 | nested_types=[], 167 | enum_types=[ 168 | ], 169 | options=None, 170 | is_extendable=False, 171 | syntax='proto2', 172 | extension_ranges=[], 173 | oneofs=[ 174 | ], 175 | serialized_start=536, 176 | serialized_end=771, 177 | ) 178 | 179 | 180 | _MAP = _descriptor.Descriptor( 181 | name='Map', 182 | full_name='apollo.hdmap.Map', 183 | filename=None, 184 | file=DESCRIPTOR, 185 | containing_type=None, 186 | fields=[ 187 | _descriptor.FieldDescriptor( 188 | name='header', full_name='apollo.hdmap.Map.header', index=0, 189 | number=1, type=11, cpp_type=10, label=1, 190 | has_default_value=False, default_value=None, 191 | message_type=None, enum_type=None, containing_type=None, 192 | is_extension=False, extension_scope=None, 193 | options=None), 194 | _descriptor.FieldDescriptor( 195 | name='crosswalk', full_name='apollo.hdmap.Map.crosswalk', index=1, 196 | number=2, type=11, cpp_type=10, label=3, 197 | has_default_value=False, default_value=[], 198 | message_type=None, enum_type=None, containing_type=None, 199 | is_extension=False, extension_scope=None, 200 | options=None), 201 | _descriptor.FieldDescriptor( 202 | name='junction', full_name='apollo.hdmap.Map.junction', index=2, 203 | number=3, type=11, cpp_type=10, label=3, 204 | has_default_value=False, default_value=[], 205 | message_type=None, enum_type=None, containing_type=None, 206 | is_extension=False, extension_scope=None, 207 | options=None), 208 | _descriptor.FieldDescriptor( 209 | name='lane', full_name='apollo.hdmap.Map.lane', index=3, 210 | number=4, type=11, cpp_type=10, label=3, 211 | has_default_value=False, default_value=[], 212 | message_type=None, enum_type=None, containing_type=None, 213 | is_extension=False, extension_scope=None, 214 | options=None), 215 | _descriptor.FieldDescriptor( 216 | name='stop_sign', full_name='apollo.hdmap.Map.stop_sign', index=4, 217 | number=5, type=11, cpp_type=10, label=3, 218 | has_default_value=False, default_value=[], 219 | message_type=None, enum_type=None, containing_type=None, 220 | is_extension=False, extension_scope=None, 221 | options=None), 222 | _descriptor.FieldDescriptor( 223 | name='signal', full_name='apollo.hdmap.Map.signal', index=5, 224 | number=6, type=11, cpp_type=10, label=3, 225 | has_default_value=False, default_value=[], 226 | message_type=None, enum_type=None, containing_type=None, 227 | is_extension=False, extension_scope=None, 228 | options=None), 229 | _descriptor.FieldDescriptor( 230 | name='yield', full_name='apollo.hdmap.Map.yield', index=6, 231 | number=7, type=11, cpp_type=10, label=3, 232 | has_default_value=False, default_value=[], 233 | message_type=None, enum_type=None, containing_type=None, 234 | is_extension=False, extension_scope=None, 235 | options=None), 236 | _descriptor.FieldDescriptor( 237 | name='overlap', full_name='apollo.hdmap.Map.overlap', index=7, 238 | number=8, type=11, cpp_type=10, label=3, 239 | has_default_value=False, default_value=[], 240 | message_type=None, enum_type=None, containing_type=None, 241 | is_extension=False, extension_scope=None, 242 | options=None), 243 | _descriptor.FieldDescriptor( 244 | name='clear_area', full_name='apollo.hdmap.Map.clear_area', index=8, 245 | number=9, type=11, cpp_type=10, label=3, 246 | has_default_value=False, default_value=[], 247 | message_type=None, enum_type=None, containing_type=None, 248 | is_extension=False, extension_scope=None, 249 | options=None), 250 | _descriptor.FieldDescriptor( 251 | name='speed_bump', full_name='apollo.hdmap.Map.speed_bump', index=9, 252 | number=10, type=11, cpp_type=10, label=3, 253 | has_default_value=False, default_value=[], 254 | message_type=None, enum_type=None, containing_type=None, 255 | is_extension=False, extension_scope=None, 256 | options=None), 257 | _descriptor.FieldDescriptor( 258 | name='road', full_name='apollo.hdmap.Map.road', index=10, 259 | number=11, type=11, cpp_type=10, label=3, 260 | has_default_value=False, default_value=[], 261 | message_type=None, enum_type=None, containing_type=None, 262 | is_extension=False, extension_scope=None, 263 | options=None), 264 | _descriptor.FieldDescriptor( 265 | name='parking_space', full_name='apollo.hdmap.Map.parking_space', index=11, 266 | number=12, type=11, cpp_type=10, label=3, 267 | has_default_value=False, default_value=[], 268 | message_type=None, enum_type=None, containing_type=None, 269 | is_extension=False, extension_scope=None, 270 | options=None), 271 | _descriptor.FieldDescriptor( 272 | name='pnc_junction', full_name='apollo.hdmap.Map.pnc_junction', index=12, 273 | number=13, type=11, cpp_type=10, label=3, 274 | has_default_value=False, default_value=[], 275 | message_type=None, enum_type=None, containing_type=None, 276 | is_extension=False, extension_scope=None, 277 | options=None), 278 | ], 279 | extensions=[ 280 | ], 281 | nested_types=[], 282 | enum_types=[ 283 | ], 284 | options=None, 285 | is_extendable=False, 286 | syntax='proto2', 287 | extension_ranges=[], 288 | oneofs=[ 289 | ], 290 | serialized_start=774, 291 | serialized_end=1322, 292 | ) 293 | 294 | _HEADER.fields_by_name['projection'].message_type = _PROJECTION 295 | _MAP.fields_by_name['header'].message_type = _HEADER 296 | _MAP.fields_by_name['crosswalk'].message_type = modules_dot_map_dot_proto_dot_map__crosswalk__pb2._CROSSWALK 297 | _MAP.fields_by_name['junction'].message_type = modules_dot_map_dot_proto_dot_map__junction__pb2._JUNCTION 298 | _MAP.fields_by_name['lane'].message_type = modules_dot_map_dot_proto_dot_map__lane__pb2._LANE 299 | _MAP.fields_by_name['stop_sign'].message_type = modules_dot_map_dot_proto_dot_map__stop__sign__pb2._STOPSIGN 300 | _MAP.fields_by_name['signal'].message_type = modules_dot_map_dot_proto_dot_map__signal__pb2._SIGNAL 301 | _MAP.fields_by_name['yield'].message_type = modules_dot_map_dot_proto_dot_map__yield__sign__pb2._YIELDSIGN 302 | _MAP.fields_by_name['overlap'].message_type = modules_dot_map_dot_proto_dot_map__overlap__pb2._OVERLAP 303 | _MAP.fields_by_name['clear_area'].message_type = modules_dot_map_dot_proto_dot_map__clear__area__pb2._CLEARAREA 304 | _MAP.fields_by_name['speed_bump'].message_type = modules_dot_map_dot_proto_dot_map__speed__bump__pb2._SPEEDBUMP 305 | _MAP.fields_by_name['road'].message_type = modules_dot_map_dot_proto_dot_map__road__pb2._ROAD 306 | _MAP.fields_by_name['parking_space'].message_type = modules_dot_map_dot_proto_dot_map__parking__space__pb2._PARKINGSPACE 307 | _MAP.fields_by_name['pnc_junction'].message_type = modules_dot_map_dot_proto_dot_map__pnc__junction__pb2._PNCJUNCTION 308 | DESCRIPTOR.message_types_by_name['Projection'] = _PROJECTION 309 | DESCRIPTOR.message_types_by_name['Header'] = _HEADER 310 | DESCRIPTOR.message_types_by_name['Map'] = _MAP 311 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 312 | 313 | Projection = _reflection.GeneratedProtocolMessageType('Projection', (_message.Message,), dict( 314 | DESCRIPTOR = _PROJECTION, 315 | __module__ = 'modules.map.map_pb2' 316 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Projection) 317 | )) 318 | _sym_db.RegisterMessage(Projection) 319 | 320 | Header = _reflection.GeneratedProtocolMessageType('Header', (_message.Message,), dict( 321 | DESCRIPTOR = _HEADER, 322 | __module__ = 'modules.map.map_pb2' 323 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Header) 324 | )) 325 | _sym_db.RegisterMessage(Header) 326 | 327 | Map = _reflection.GeneratedProtocolMessageType('Map', (_message.Message,), dict( 328 | DESCRIPTOR = _MAP, 329 | __module__ = 'modules.map.map_pb2' 330 | # @@protoc_insertion_point(class_scope:apollo.hdmap.Map) 331 | )) 332 | _sym_db.RegisterMessage(Map) 333 | 334 | 335 | # @@protoc_insertion_point(module_scope) 336 | -------------------------------------------------------------------------------- /map_elements.py: -------------------------------------------------------------------------------- 1 | #import cv2 2 | import math 3 | import numpy as np 4 | from modules.map import map_road_pb2 5 | from modules.map import map_lane_pb2 6 | from modules.map import map_pb2 7 | from utils import distance 8 | import matplotlib.pyplot as plt 9 | from shapely.geometry import LineString, Polygon, Point 10 | 11 | 12 | class RoadObject(object): 13 | 14 | def __init__(self, id): 15 | self._id = id 16 | 17 | def get_id(self): 18 | return self._id 19 | 20 | class Lane(RoadObject): 21 | 22 | def __init__(self, id, map): 23 | super(Lane, self).__init__(id) 24 | self.lane = map.lane.add() 25 | self.lane.id.id = str(id) 26 | 27 | def get_polygon(self): 28 | return self._polygon 29 | 30 | 31 | def set_length(self, points): 32 | length = 0 33 | for i in range(1, len(points)): 34 | length += distance(points[i - 1], points[i]) 35 | self.lane.length = length 36 | return length 37 | 38 | def set_speed_limit(self, speed_limit): 39 | self.lane.speed_limit = speed_limit 40 | 41 | def add_overlap(self, id): 42 | self.lane.overlap_id.add().id = str(id) 43 | 44 | def add_predecessor(self, id): 45 | self.lane.predecessor_id.add().id = str(id) 46 | 47 | def add_successor(self, id): 48 | self.lane.successor_id.add().id = str(id) 49 | 50 | def add_left_neighbor_forward(self, id): 51 | self.lane.left_neighbor_forward_lane_id.add().id = str(id) 52 | 53 | def add_right_neighbor_forward(self, id): 54 | self.lane.right_neighbor_forward_lane_id.add().id = str(id) 55 | 56 | def add_left_neighbor_reverse(self, id): 57 | self.lane.left_neighbor_reverse_lane_id.add().id = str(id) 58 | 59 | def add_right_neighbor_reverse(self, id): 60 | self.lane.right_neighbor_reverse_lane_id.add().id = str(id) 61 | 62 | def set_type(self, type): 63 | self.lane.type = type 64 | 65 | def set_turn(self, turn): 66 | self.lane.turn = turn 67 | 68 | def set_direction(self, direction): 69 | self.lane.direction = direction 70 | 71 | def set_left_lane_boundary_type(self, type, virtual): 72 | boundary_type = self.lane.left_boundary.boundary_type.add() 73 | boundary_type.types.append(type) 74 | self.lane.left_boundary.virtual = virtual 75 | 76 | def set_right_lane_boundary_type(self, type, virtual): 77 | boundary_type = self.lane.right_boundary.boundary_type.add() 78 | boundary_type.types.append(type) 79 | self.lane.right_boundary.virtual = virtual 80 | 81 | def add_left_lane_boundary(self, x, y, z, heading): 82 | left_boundary = self.lane.left_boundary.curve.segment.add() 83 | left_boundary.heading = heading 84 | left_boundary.start_position.x = x 85 | left_boundary.start_position.y = y 86 | left_boundary.start_position.z = z 87 | left_boundary.s = 0 88 | return left_boundary 89 | 90 | def add_right_lane_boundary(self, x, y, z, heading): 91 | right_boundary = self.lane.right_boundary.curve.segment.add() 92 | right_boundary.heading = heading 93 | right_boundary.start_position.x = x 94 | right_boundary.start_position.y = y 95 | right_boundary.start_position.z = z 96 | right_boundary.s = 0 97 | return right_boundary 98 | 99 | def add_central_curve(self, x, y, z, heading): 100 | central_curve = self.lane.central_curve.segment.add() 101 | central_curve.heading = heading 102 | central_curve.start_position.x = x 103 | central_curve.start_position.y = y 104 | central_curve.start_position.z = z 105 | central_curve.s = 0 106 | return central_curve 107 | 108 | 109 | 110 | 111 | 112 | def lane_sampling(self, points, width, left_boundary, right_boundary, central_curve,left_points,right_points,thresh, do_sampling=False): 113 | length = len(points) 114 | lengthL = len(left_points) 115 | 116 | self.left_poly = [] 117 | self.right_poly = [] 118 | 119 | # variables used to compute central line and boundaries length 120 | c_dist = 0 121 | cx, cy = (central_curve.start_position.x, central_curve.start_position.y) 122 | l_dist = 0 123 | lx, ly = (left_boundary.start_position.x, central_curve.start_position.y) 124 | r_dist = 0 125 | rx, ry = (right_boundary.start_position.x, central_curve.start_position.y) 126 | left_lane_x = [] 127 | right_lane_x = [] 128 | left_lane_y = [] 129 | right_lane_y = [] 130 | 131 | for i in range(length): 132 | if i > 1: 133 | p = Point(points[i-1]) 134 | p2 = Point(points[i]) 135 | 136 | if i < length - 1: 137 | p = Point(points[i]) 138 | p2 = Point(points[i + 1]) 139 | else: 140 | p = Point(points[i - 1]) 141 | p2 = Point(points[i]) 142 | distance = width / 2.0 143 | 144 | central_point = central_curve.line_segment.point.add() 145 | if i < length - 1: 146 | central_point.x = p.x 147 | central_point.y = p.y 148 | central_point.z = points[i][2] 149 | else: 150 | central_point.x = p2.x 151 | central_point.y = p2.y 152 | central_point.z = points[i-1][2] 153 | c_dist += math.sqrt(math.pow(central_point.x - cx, 2) + math.pow(central_point.y - cy, 2)) 154 | if i 0 and abs(lp[0] - prevlx) < thresh and abs(lp[1] - prevly) < thresh): 159 | if(i > 0 and abs(rp[0] - prevrx) < thresh and abs(rp[1] - prevry) < thresh): 160 | continue 161 | else: 162 | right_bound_point = right_boundary.line_segment.point.add() 163 | right_bound_point.x = rp[0] 164 | right_bound_point.y = rp[1] 165 | right_bound_point.z = points[i][2] 166 | right_lane_x.append(rp[0]) 167 | right_lane_y.append(rp[1]) 168 | 169 | 170 | r_dist += math.sqrt(math.pow(rp[0] - rx, 2) + math.pow(rp[1] - ry, 2)) 171 | rx = rp[0] 172 | ry = rp[1] 173 | else: 174 | if(i > 0 and abs(rp[0] - prevrx) < thresh and abs(rp[1] - prevry) < thresh): 175 | continue 176 | else: 177 | right_bound_point = right_boundary.line_segment.point.add() 178 | right_bound_point.x = rp[0] 179 | right_bound_point.y = rp[1] 180 | right_bound_point.z = points[i][2] 181 | right_lane_x.append(rp[0]) 182 | right_lane_y.append(rp[1]) 183 | 184 | r_dist += math.sqrt(math.pow(rp[0] - rx, 2) + math.pow(rp[1] - ry, 2)) 185 | rx = rp[0] 186 | ry = rp[1] 187 | 188 | left_bound_point = left_boundary.line_segment.point.add() 189 | left_bound_point.x = lp[0] 190 | left_bound_point.y = lp[1] 191 | left_bound_point.z = points[i][2] 192 | left_lane_x.append(lp[0]) 193 | left_lane_y.append(lp[1]) 194 | 195 | l_dist += math.sqrt(math.pow(lp[0] - lx, 2) + math.pow(lp[1] - ly, 2)) 196 | lx = lp[0] 197 | ly = lp[1] 198 | 199 | # plt.plot(rp[0], rp[1], 'ro') 200 | # plt.plot(lp[0], lp[1], 'bo') 201 | 202 | prevrx, prevry, prevlx, prevly = rp[0], rp[1], lp[0], lp[1] 203 | 204 | #### 205 | 206 | 207 | 208 | cx = central_point.x 209 | cy = central_point.y 210 | 211 | if i < length - 1: 212 | self.left_poly.append(np.array(lp)) 213 | self.right_poly.append(np.array(rp)) 214 | 215 | # Get distance from lane start 216 | if i > 0: 217 | line = LineString(points[:i + 1]) 218 | dist = line.length 219 | else: 220 | dist = 0 221 | 222 | left_sample = self.lane.left_sample.add() 223 | left_sample.s = dist 224 | left_sample.width = width / 2.0 225 | 226 | right_sample = self.lane.right_sample.add() 227 | right_sample.s = dist 228 | right_sample.width = width / 2.0 229 | 230 | central_curve.length = c_dist 231 | left_boundary.length = l_dist 232 | right_boundary.length = r_dist 233 | 234 | self._polygon = np.array(self.left_poly + list(reversed(self.right_poly))) 235 | z = np.zeros(len(left_lane_x)) 236 | left_bound_point = np.array(list(zip(left_lane_x, left_lane_y, z))) 237 | right_bound_point= np.array(list(zip(right_lane_x, right_lane_y, z))) 238 | return left_lane_x, right_lane_x, left_lane_y, right_lane_y,left_bound_point,right_bound_point 239 | 240 | def justGetMeTheLanes(self, points, width, thresh): 241 | length = len(points) 242 | left_lane_x = [] 243 | right_lane_x = [] 244 | left_lane_y = [] 245 | right_lane_y = [] 246 | for i in range(length): 247 | if i > 1: 248 | p = Point(points[i-1]) 249 | p2 = Point(points[i]) 250 | if i < length - 1: 251 | p = Point(points[i]) 252 | p2 = Point(points[i + 1]) 253 | else: 254 | p = Point(points[i - 1]) 255 | p2 = Point(points[i]) 256 | distance = width / 2.0 257 | lp, rp = self.convert(p, p2, distance, use_first=(i != length - 1)) 258 | 259 | if(i > 0 and abs(lp[0] - prevlx) < thresh and abs(lp[1] - prevly) < thresh): 260 | if(i > 0 and abs(rp[0] - prevrx) < thresh and abs(rp[1] - prevry) < thresh): 261 | continue 262 | else: 263 | right_lane_x.append(rp[0]) 264 | right_lane_y.append(rp[1]) 265 | else: 266 | if(i > 0 and abs(rp[0] - prevrx) < thresh and abs(rp[1] - prevry) < thresh): 267 | continue 268 | else: 269 | right_lane_x.append(rp[0]) 270 | right_lane_y.append(rp[1]) 271 | left_lane_x.append(lp[0]) 272 | left_lane_y.append(lp[1]) 273 | prevrx, prevry, prevlx, prevly = rp[0], rp[1], lp[0], lp[1] 274 | return left_lane_x, right_lane_x, left_lane_y, right_lane_y 275 | 276 | def convert(self, p, p2, distance, use_first=True):#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 277 | delta_y = p2.y - p.y 278 | delta_x = p2.x - p.x 279 | 280 | if use_first: 281 | point = p 282 | else: 283 | point = p2 284 | 285 | left_angle = math.atan2(delta_y, delta_x) + math.pi / 2.0 286 | right_angle = math.atan2(delta_y, delta_x) - math.pi / 2.0 287 | 288 | lp = [] 289 | lp.append(point.x + (math.cos(left_angle) * distance)) 290 | lp.append(point.y + (math.sin(left_angle) * distance)) 291 | 292 | rp = [] 293 | rp.append(point.x + (math.cos(right_angle) * distance)) 294 | rp.append(point.y + (math.sin(right_angle) * distance)) 295 | return lp, rp 296 | 297 | def add(self, points, speed_limit, lane_turn, lane_type, direction, width, left_points,right_points,thresh): 298 | 299 | self.set_length(points) 300 | self.set_speed_limit(speed_limit) 301 | self.set_turn(lane_turn) 302 | self.set_type(lane_type) 303 | self.set_direction(direction) 304 | print(points) 305 | path = LineString(points) 306 | p = path.interpolate(0) 307 | p2 = path.interpolate(0.5) 308 | distance = width / 2.0 309 | lp, rp = self.convert(p, p2, distance) 310 | 311 | central_curve = self.add_central_curve(points[0][0], points[0][1], points[0][2], 0) 312 | #left_boundary = self.add_left_lane_boundary(lp[0], lp[1], points[0][2], 0) 313 | #right_boundary = self.add_right_lane_boundary(rp[0], rp[1], points[0][2], 0) 314 | 315 | left_boundary = self.add_left_lane_boundary(left_points[0][0], left_points[0][1], 0, 0) 316 | right_boundary = self.add_right_lane_boundary(right_points[0][0], right_points[0][1], 0, 0) 317 | left_lane_x = [] 318 | right_lane_x = [] 319 | left_lane_y = [] 320 | right_lane_y = [] 321 | 322 | left_lane_x, right_lane_x, left_lane_y, right_lane_y,lb_points,rb_points = self.lane_sampling(points, width, left_boundary, right_boundary, central_curve,left_points,right_points,thresh,False) 323 | print(left_lane_x) 324 | print(left_lane_y) 325 | print("Point add") 326 | return left_lane_x, right_lane_x, left_lane_y, right_lane_y,lb_points,rb_points 327 | 328 | class Road(RoadObject): 329 | 330 | def __init__(self, id, map): 331 | super(Road, self).__init__(id) 332 | self.road = map.road.add() 333 | self.road.id.id = str(id) 334 | self.road.type=2 335 | 336 | def getID(self): 337 | return self._id 338 | 339 | def add_section(self, id): 340 | self.section = self.road.section.add() 341 | self.section.id.id = str(id) 342 | 343 | def add_lanes_to_section(self, lanes): 344 | self.section.lane_id.add().id = str(lanes) 345 | 346 | def add_junction(self, id): 347 | self.road.junction_id.id = str(id) 348 | 349 | def add_road_boundary(self, points, type, heading): 350 | edge = self.section.boundary.outer_polygon.edge.add() 351 | edge.type = type 352 | segment = edge.curve.segment.add() 353 | length = 0 354 | prevX, prevY,_ = points[0] 355 | for point in points[0:]: 356 | p = segment.line_segment.point.add() 357 | p.x, p.y,_ = point 358 | length += math.sqrt(math.pow(p.x - prevX, 2) + math.pow(p.y - prevY, 2)) 359 | prevX = p.x 360 | prevY = p.y 361 | 362 | 363 | def add(self, lane, section_id, junction_ids, lane_ids, heading): 364 | self.add_section(section_id) 365 | for j in junction_ids: 366 | self.add_junction(j) 367 | self.add_lanes_to_section(lane_ids) 368 | lx = lane.left_poly[0][0] 369 | ly = lane.left_poly[0][1] 370 | self.add_road_boundary(lane.left_poly, map_road_pb2.BoundaryEdge.LEFT_BOUNDARY, heading) 371 | rx = lane.right_poly[0][0] 372 | ry = lane.right_poly[0][1] 373 | self.add_road_boundary(lane.right_poly, map_road_pb2.BoundaryEdge.RIGHT_BOUNDARY, heading) 374 | 375 | class Signal(RoadObject): 376 | def __init__(self,id,map): 377 | super(Signal,self).__init__(id) 378 | self.signal=map.signal.add() 379 | self.signal.id.id=id 380 | self.signal.type=5 381 | self._id=id 382 | def get_polygon(self): 383 | return self.signal.boundary 384 | 385 | def get_id(self): 386 | return self._id 387 | 388 | def addBoundary(self,pointLight,pointsStoLane): 389 | boundary=self.signal.boundary.point.add() 390 | boundary.x=pointLight[0] 391 | boundary.y=pointLight[1] 392 | boundary=self.signal.boundary.point.add() 393 | boundary.x=pointLight[0] 394 | boundary.y=pointsStoLane[1][1] 395 | boundary=self.signal.boundary.point.add() 396 | boundary.x=pointsStoLane[1][0] 397 | boundary.y=pointsStoLane[1][1] 398 | boundary=self.signal.boundary.point.add() 399 | boundary.x=pointsStoLane[0][0] 400 | boundary.y=pointsStoLane[0][1] 401 | 402 | 403 | def addsubsignal(self,point): 404 | subsignal=self.signal.subsignal.add() 405 | subsignal.id.id="0" 406 | subsignal.type=2 407 | subsignal.location.x=point[0] 408 | subsignal.location.y=point[1]*-1 409 | subsignal.location.z=8.11499977 410 | subsignal=self.signal.subsignal.add() 411 | subsignal.id.id="1" 412 | subsignal.type=2 413 | subsignal.location.x=point[0] 414 | subsignal.location.y=point[1]*-1 415 | subsignal.location.z=7.292500 416 | subsignal=self.signal.subsignal.add() 417 | subsignal.location.x=point[0] 418 | subsignal.location.y=point[1]*-1 419 | subsignal.location.z=6.47 420 | subsignal.id.id="2" 421 | subsignal.type=2 422 | 423 | 424 | def add_overlap(self, id): 425 | self.signal.overlap_id.add().id = str(id) 426 | def addStopLine(self,points): 427 | stop_lane=self.signal.stop_line.add() 428 | line_segment=stop_lane.segment.add() 429 | 430 | for point in points: 431 | curvePoint=line_segment.line_segment.point.add() 432 | curvePoint.x=point[0] 433 | curvePoint.y=point[1] 434 | curvePoint.z=0 435 | 436 | class Overlap(RoadObject): 437 | 438 | def __init__(self, id, map): 439 | super(Overlap, self).__init__(id) 440 | self.overlap = map.overlap.add() 441 | self.overlap.id.id = id 442 | self._id=id 443 | 444 | 445 | def get_id(self): 446 | return self._id 447 | 448 | 449 | def _complete_info(self, info, dist): 450 | info.start_s = dist 451 | info.end_s = dist+1.699 452 | info.is_merge = False 453 | 454 | def addLane(self, idLane,dist): 455 | object1 = self.overlap.object.add() 456 | object1.id.id = idLane 457 | object1.lane_overlap_info.SetInParent() 458 | self._complete_info(object1.lane_overlap_info, dist) 459 | def addStopLine(self,idStopLane): 460 | stopLaneOverlap=self.overlap.object.add() 461 | stopLaneOverlap.id.id=idStopLane 462 | stopLaneOverlap.stop_sign_overlap_info.SetInParent() 463 | 464 | 465 | 466 | 467 | def addSignal(self,signal): 468 | signalOverlap = self.overlap.object.add() 469 | signalOverlap.id.id = signal 470 | 471 | signalOverlap.signal_overlap_info.SetInParent() 472 | 473 | class Junction(RoadObject): 474 | 475 | def __init__(self, id, map): 476 | super(Junction, self).__init__(id) 477 | self.junction = map.junction.add() 478 | self.junction.id.id = id 479 | 480 | def get_id(self): 481 | return self._id 482 | 483 | def get_polygon(self): 484 | return self._polygon 485 | 486 | def add_overlap(self, id): 487 | self.junction.overlap_id.add().id = str(id) 488 | 489 | def add(self, junc_poly): 490 | self._polygon = np.array(junc_poly) 491 | 492 | for vertex in junc_poly: 493 | point = self.junction.polygon.point.add() 494 | point.x, point.y = vertex 495 | 496 | class StopLane(RoadObject): 497 | def __init__(self, id, map): 498 | self.stop_sign = map.stop_sign.add() 499 | self.stop_lane=self.stop_sign.stop_line.add() 500 | self.stop_sign.id.id = id 501 | self.stop_sign.type=2 502 | self._id=id 503 | 504 | def add_overlap(self, id): 505 | self.stop_sign.overlap_id.add().id = str(id) 506 | def add_central_curve(self, points): 507 | 508 | central_curve = self.stop_lane.segment.add() 509 | central_curve.heading = 1 510 | central_curve.start_position.x = float(points[0][0]) 511 | central_curve.start_position.y = float(points[0][1]) 512 | central_curve.start_position.z = 0 513 | central_curve.s = 0 514 | 515 | for point in points: 516 | curvePoint=central_curve.line_segment.point.add() 517 | curvePoint.x= float(point[0]) 518 | curvePoint.y= float(point[1]) 519 | curvePoint.z=0 520 | 521 | 522 | return central_curve 523 | -------------------------------------------------------------------------------- /Canvas.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtCore import QDir, Qt,QSize,QSettings,pyqtSignal,QPointF,pyqtSignal 2 | from PyQt5.QtGui import QImage, QPainter, QPalette, QPixmap, QPen,QFont,QCursor 3 | from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QLabel,QToolBar, 4 | QMainWindow, QMenu, QMessageBox, QScrollArea, QSizePolicy,QWidget,QVBoxLayout,QTreeView) 5 | from PyQt5.QtPrintSupport import QPrintDialog, QPrinter 6 | 7 | from osgeo import gdal 8 | from PIL import Image, ImageQt 9 | import random 10 | import numpy as np 11 | import time 12 | from decimal import Decimal 13 | from Objects.Shape import Shape 14 | from Objects.Lane import Shape 15 | import math 16 | from Lib import distance 17 | import pyclipper 18 | CURSOR_DEFAULT = Qt.ArrowCursor 19 | CURSOR_POINT = Qt.PointingHandCursor 20 | CURSOR_DRAW = Qt.CrossCursor 21 | CURSOR_MOVE = Qt.ClosedHandCursor 22 | CURSOR_GRAB = Qt.OpenHandCursor 23 | CURSOR_TRAJECTORY_CREATION=Qt.PointingHandCursor 24 | 25 | import matplotlib.pyplot as plt 26 | from shapely.geometry.polygon import LinearRing 27 | 28 | 29 | class Canvas(QWidget): 30 | zoomRequest = pyqtSignal(int) 31 | scrollRequest = pyqtSignal(int, int) 32 | selectionChanged = pyqtSignal(bool) 33 | DOTTED,SOLID=range(2) 34 | 35 | def __init__(self,np_array,newWidth,newHeight,resizeFactorWidth,resizeFactorHeight,geotiffScale): 36 | super(Canvas, self).__init__() 37 | im8 = Image.fromarray(np_array) 38 | imQt = QImage(ImageQt.ImageQt(im8)) 39 | 40 | self.current=None 41 | self.shapes={} 42 | self.geotiffScale=geotiffScale 43 | self.resizeFactorWidth=resizeFactorWidth 44 | self.resizeFactorHeight=resizeFactorHeight 45 | self.PixMap=QPixmap.fromImage(imQt).scaled(newWidth, newHeight) 46 | self.drawing=False 47 | self.scaleFactor=1 48 | self.LaneUsingTrajectory=False 49 | self.currentLeft=None 50 | self.currentRight=None 51 | self._painter = QPainter() 52 | self.hVertex=None 53 | self.font_size=11 54 | self.selectedShape=None 55 | self.selectedShapeCopy=None 56 | self.currentImage=None 57 | self.epsilon=11 58 | self.Ruler=None 59 | self.Preview=None 60 | self.Trajectory=None 61 | self.visible = {} 62 | self.draggableIndex=None 63 | self.draggablePoint=None 64 | self._hideBackround = False 65 | self.hideBackround = False 66 | self.hShape=None 67 | self.update() 68 | self.repaint() 69 | 70 | self.imageSignal = QImage("./static/signal.png") 71 | self.imageStopSign=QImage("./static/stop.png") 72 | self.imageStopSignSmall=QImage("./static/stopSmall.png") 73 | mainLayout = QVBoxLayout() 74 | 75 | 76 | toolbar = QToolBar() 77 | mainLayout.addWidget(toolbar) 78 | 79 | self.deletePoint = toolbar.addAction("Delete Point", self.DeletePointFunc) 80 | self.deleteLane = toolbar.addAction("Delete Object", self.DeleteLaneFunc) 81 | self.deleteStopSign=toolbar.addAction("Detele Stop sign",self.DeleteStopSignFunc) 82 | self.AddFlag=toolbar.addAction("Add Flag",self.AddFlagFunc) 83 | self.AddTurnLeft=toolbar.addAction("Add Turn Left",self.AddTurnLeftFunc) 84 | self.AddTurnRight=toolbar.addAction("Add Turn Rught",self.AddTurnRightFunc) 85 | self.SetDottedBorder=toolbar.addAction("Set Dotted Border",self.SetDottedBorderFunc) 86 | self.SetSolidBorder=toolbar.addAction("Set Solid Border",self.SetSolidBorderFunc) 87 | self.popMenu = QMenu(self) 88 | self.popMenu.addAction(self.deletePoint) 89 | self.popMenu.addAction(self.deleteLane) 90 | self.popMenu.addAction(self.deleteStopSign) 91 | self.popMenu.addAction(self.AddFlag) 92 | self.popMenu.addAction(self.AddTurnLeft) 93 | self.popMenu.addAction(self.AddTurnRight) 94 | self.popMenu.addAction(self.SetDottedBorder) 95 | self.popMenu.addAction(self.SetSolidBorder) 96 | 97 | self.rightClickPos=-1 98 | 99 | 100 | def AddTurnLeftFunc(self): 101 | for key,shape in self.shapes.items(): 102 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 103 | if index is not None: 104 | shape.turn=2 105 | 106 | def AddTurnRightFunc(self): 107 | for key,shape in self.shapes.items(): 108 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 109 | if index is not None: 110 | shape.turn=3 111 | 112 | def AddFlagFunc(self): 113 | for key,shape in self.shapes.items(): 114 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 115 | if index is not None: 116 | shape.LaneChange=False 117 | 118 | def DeleteStopSignFunc(self): 119 | for key,shape in self.shapes.items(): 120 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 121 | if index is not None and shape.isStopSign: 122 | shape.isStopSign=False 123 | self.update() 124 | break 125 | 126 | def DeletePointFunc(self): 127 | for key,shape in self.shapes.items(): 128 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 129 | if index is not None: 130 | borderLeft=key.find("Left") 131 | borderRight=key.find("Right") 132 | if borderLeft!=-1: 133 | label=key[:borderLeft] 134 | del self.shapes[label+"Right"].points[index:index+1] 135 | elif borderRight!=-1: 136 | label=key[:borderRight] 137 | del self.shapes[label+"Left"].points[index:index+1] 138 | del self.shapes[key].points[index:index+1] 139 | break 140 | self.update() 141 | def SetDottedBorderFunc(self): 142 | for key,shape in self.shapes.items(): 143 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 144 | if index is not None: 145 | shape.type=Shape.DOTTED_WHITE 146 | 147 | 148 | def SetSolidBorderFunc(self): 149 | for key,shape in self.shapes.items(): 150 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 151 | if index is not None: 152 | shape.type=Shape.SOLID_WHITE 153 | 154 | 155 | def DeleteLaneFunc(self): 156 | key1=0 157 | for key,shape in self.shapes.items(): 158 | index = shape.nearestVertex(self.rightClickPos, self.epsilon/self.scaleFactor) 159 | if index is not None: 160 | borderLeft=key.find("Left") 161 | borderRight=key.find("Right") 162 | lane=key.find("lane") 163 | st=key.find("stoplane") 164 | if borderLeft!=-1: 165 | label=key[:borderLeft] 166 | del self.shapes[label+"Left"] 167 | del self.shapes[label] 168 | del self.shapes[label+"Right"] 169 | elif borderRight!=-1: 170 | label=key[:borderRight] 171 | del self.shapes[label+"Right"] 172 | del self.shapes[label] 173 | del self.shapes[label+"Left"] 174 | elif lane!=-1 and st==-1: 175 | del self.shapes[key+"Right"] 176 | del self.shapes[key+"Left"] 177 | del self.shapes[key] 178 | else: 179 | del self.shapes[key] 180 | break 181 | 182 | self.draggableIndex=None 183 | self.draggablePoint=None 184 | self.update() 185 | def addPoints(self,shape): 186 | isAdded=False 187 | for i in range(0,len(shape.points)-1): 188 | print(self.distance_between(shape.points[i],shape.points[i+1])) 189 | if self.distance_between(shape.points[i],shape.points[i+1])>70: 190 | x=(shape.points[i].x()+shape.points[i+1].x())/2 191 | y=(shape.points[i].y()+shape.points[i+1].y())/2 192 | newPoint=QPointF(x,y) 193 | shape.points.insert(i+1,newPoint) 194 | isAdded=True 195 | if isAdded: 196 | self.addPoints(shape) 197 | 198 | 199 | def getBezierCurve (self,arr=None): 200 | isPrew=True 201 | if arr is None: 202 | isPrew=False 203 | arr=self.current.points 204 | 205 | step = 20 206 | res=[] 207 | res.append(self.current.points[0]) 208 | step=int((float(step)/self.distance_between(arr[0],arr[2]))) 209 | if step==0: 210 | step=1 211 | 212 | for t in range(0, 20 , step): 213 | k=float(t/20) 214 | 215 | res.append(QPointF(0,0)) 216 | for i in range(0, len(arr), 1): 217 | b = self.getBezierBasis(i, len(arr) - 1, k) 218 | res[-1].setX(res[-1].x()+arr[i].x() * b) 219 | res[-1].setY(res[-1].y()+arr[i].y() * b) 220 | res.append(self.current.points[-1]) 221 | if not isPrew: 222 | self.current.points=res 223 | self.update() 224 | return self.current.points 225 | else: 226 | return res 227 | 228 | def getBezierBasis(self,i, n, t): 229 | def f(n): 230 | if n <= 1: 231 | return 1 232 | else: 233 | return n*f(n-1) 234 | return (f(n) / (f(i) * f(n - i))) * (t**i) * ((1 - t)**(n - i)) 235 | def distance_between(self,p1,p2): 236 | return math.sqrt(math.pow(p2.x()-p1.x(),2)+math.pow(p2.y()-p1.y(),2)) 237 | def FindEdgeLanes(self,point): 238 | newpoint=QPointF(0,0) 239 | distance=1000 240 | isStart=False 241 | Id="" 242 | for el,shape in self.shapes.items(): 243 | if el.find("Left")==-1 and el.find("Right")==-1 and el.find("lane")!=-1: 244 | distFirst=self.distance_between(shape.points[0],point) 245 | distLast=self.distance_between(shape.points[-1],point) 246 | if distFirst150: 267 | return -1,-1 268 | else: 269 | return [newpointTwo,Id,secpoint] 270 | 271 | def drawPolyline(self): 272 | painter = QPainter() 273 | painter.begin() 274 | pen = QPen(Qt.red) 275 | pen.setWidth(200) 276 | painter.setPen(pen) 277 | painter.setRenderHint(QPainter.Antialiasing, True) 278 | painter.drawPoint(300, 300) 279 | painter.drawLine(100, 100, 4000, 4000) 280 | painter.end() 281 | def GetCurveBezier(self): 282 | pass 283 | def SetStopSign(self): 284 | pass 285 | def drawBorders(self): 286 | pass 287 | def setScale(self,scale): 288 | self.scaleFactor=scale 289 | for key,shape in self.shapes.items(): 290 | shape.scale=scale 291 | 292 | def mouseMoveEvent(self, ev): 293 | pos=ev.pos()/self.scaleFactor 294 | 295 | 296 | for key,shape in self.shapes.items(): 297 | index = shape.nearestVertex(pos, self.epsilon/self.scaleFactor) 298 | if index is None and self.draggableIndex==key: 299 | index = shape.nearestVertex(pos, self.epsilon/self.scaleFactor*3) 300 | if index!=self.draggablePoint: 301 | index=None 302 | if self.draggableIndex is not None and key!=self.draggableIndex: 303 | continue 304 | if index is not None: 305 | if index!= self.draggablePoint and self.draggablePoint is not None: 306 | index=self.draggablePoint 307 | self.drag(index,shape,key) 308 | break 309 | else: 310 | self.drawing=True 311 | self.draggableIndex=None 312 | self.draggablePoint=None 313 | 314 | else: # Nothing found, clear highlights, reset state. 315 | if self.hShape: 316 | self.hShape.highlightClear() 317 | self.update() 318 | self.hVertex, self.hShape = None, None 319 | 320 | 321 | # Polygon/Vertex moving. 322 | if Qt.LeftButton & ev.buttons(): 323 | if self.selectedVertex(): 324 | self.boundedMoveVertex(pos) 325 | self.repaint() 326 | 327 | return 328 | 329 | def drag(self,index,shape,key): 330 | 331 | self.drawing=False 332 | if self.selectedVertex(): 333 | self.hShape.highlightClear() 334 | self.hVertex, self.hShape = index, shape 335 | self.draggableIndex=key 336 | self.draggablePoint=index 337 | shape.highlightVertex(index, shape.MOVE_VERTEX) 338 | self.overrideCursor(CURSOR_POINT) 339 | self.setToolTip("Click & drag to move point") 340 | self.setStatusTip(self.toolTip()) 341 | self.update() 342 | def FindClosestPoint(self,pos): 343 | point=min(self.Trajectory, key=lambda x:self.distance_between(x,pos)) 344 | 345 | if self.distance_between(point,pos)<6: 346 | return point 347 | else: 348 | return None 349 | 350 | 351 | 352 | def boundedMoveVertex(self, pos): 353 | index, shape = self.hVertex, self.hShape 354 | point = shape[index] 355 | shiftPos = (pos - point) 356 | shape.moveVertexBy(index, shiftPos) 357 | 358 | def convert(self, p, p2, distanceX,distanceY, use_first=True): 359 | delta_y = p2.y() - p.y() 360 | delta_x = p2.x() - p.x() 361 | if use_first: 362 | point = p 363 | else: 364 | point = p2 365 | 366 | left_angle = math.atan2(delta_y, delta_x) + math.pi / 2.0 367 | right_angle = math.atan2(delta_y, delta_x) - math.pi / 2.0 368 | 369 | lp =QPointF((point.x() + (math.cos(left_angle) * distanceX)),(point.y() + (math.sin(left_angle) * distanceY))) 370 | 371 | rp = QPointF((point.x() + (math.cos(right_angle) * distanceX)),(point.y() + (math.sin(right_angle) * distanceY))) 372 | 373 | return lp, rp 374 | def signToStopLane(self,idStopLane): 375 | if idStopLane!=" ": 376 | self.shapes[idStopLane].isStopSign=True 377 | self.update() 378 | 379 | def createBorder(self,width): 380 | offsetX=float((Decimal(width/2)/Decimal(self.geotiffScale)/self.resizeFactorWidth)) 381 | offsetY=float(Decimal(width/2)/Decimal(self.geotiffScale)/self.resizeFactorHeight) 382 | 383 | if self.currentLeft is None: 384 | self.currentLeft=Shape() 385 | self.currentRight=Shape() 386 | for i in range(1,len(self.current.points)): 387 | pos=self.current.points[i] 388 | pos2=self.current.points[i-1] 389 | lp,rp=self.convert(pos2, pos, offsetX,offsetY, use_first=(i != len(self.current.points) - 1)) 390 | self.currentRight.addPoint(rp) 391 | self.currentLeft.addPoint(lp) 392 | if len(self.current.points)==2: 393 | pos=self.current.points[0] 394 | pos2=self.current.points[1] 395 | lp,rp=self.convert(pos2, pos, offsetX,offsetY, use_first=(i != len(self.current.points) - 1)) 396 | self.currentRight.addPoint(lp) 397 | self.currentLeft.addPoint(rp) 398 | 399 | return self.currentLeft,self.currentRight 400 | def intersectionLanes(self,stopLane,lane): 401 | stPoints=[[stopLane.points[0].x(),stopLane.points[0].y()],[stopLane.points[1].x(),stopLane.points[1].y()]] 402 | for i in range(1,len(lane.points)): 403 | fragment=[[lane.points[i-1].x(),lane.points[i-1].y()],[lane.points[i].x(),lane.points[i].y()]] 404 | xdiff = (fragment[i-1][0]- fragment[i][0], stPoints[0][0]- stPoints[1][0]) 405 | ydiff = (fragment[i-1][1] - fragment[i][1], stPoints[0][1] - stPoints[1][1]) #Typo was here 406 | 407 | def det(a, b): 408 | return a[0] * b[1] - a[1] * b[0] 409 | 410 | div = det(xdiff, ydiff) 411 | if div == 0: 412 | return None 413 | 414 | d = (det(*fragment), det(*stPoints)) 415 | x = det(d, xdiff) / div 416 | y = det(d, ydiff) / div 417 | return QPointF(x, y) 418 | def AddPointsBeetween(self,pointStart,pointFinish): 419 | try: 420 | indexStart=self.Trajectory.points.index(pointStart) 421 | except: 422 | pointStart=self.FindClosestPoint(pointStart) 423 | indexStart=self.Trajectory.points.index(pointStart) 424 | try: 425 | indexFinish=self.Trajectory.points.index(pointFinish) 426 | except: 427 | pointFinish=self.FindClosestPoint(pointFinish) 428 | indexFinish=self.Trajectory.points.index(pointFinish) 429 | return self.Trajectory.points[indexStart:indexFinish] 430 | def setHiding(self, enable=True): 431 | self._hideBackround = self.hideBackround if enable else False 432 | def mousePressEvent(self, event): 433 | 434 | pos=event.pos()/self.scaleFactor 435 | 436 | 437 | if event.button() == Qt.LeftButton: 438 | if self.Ruler is not None : 439 | if len(self.Ruler.points)>=2: 440 | self.Ruler.points=[] 441 | self.Ruler.addPoint(pos) 442 | 443 | elif self.drawing: 444 | if self.LaneUsingTrajectory==True: 445 | point=self.FindClosestPoint(pos) 446 | 447 | if point is not None: 448 | if len(self.current.points)==0 or len(self.current.points)>1: 449 | self.current.points.clear() 450 | self.current.addPoint(point) 451 | 452 | else: 453 | self.current.points=self.AddPointsBeetween(self.current.points[0],point) 454 | 455 | 456 | elif self.current is not None and self.current.shape_type==self.current.LANE: 457 | self.current.addPoint(pos) 458 | elif self.current is not None and self.current.shape_type==self.current.JUNCTION: 459 | if len(self.current.points)<3: 460 | self.current.addPoint(pos) 461 | else: 462 | self.setToolTip("Only three points") 463 | #Error 464 | #self.finalise() 465 | elif self.current is not None and self.current.shape_type==self.current.STOPLANE: 466 | if len(self.current.points)<2: 467 | self.current.addPoint(pos) 468 | else: 469 | self.setToolTip("Only two points") 470 | elif self.currentImage is not None and self.currentImage.shape_type==self.currentImage.SIGNAL: 471 | if len(self.currentImage.points)==0: 472 | self.currentImage.addPoint(pos) 473 | 474 | 475 | 476 | self.repaint() 477 | self.update() 478 | pass 479 | else: 480 | self.prevPoint = pos 481 | self.repaint() 482 | 483 | 484 | 485 | self.repaint() 486 | self.lastPoint = event.pos() 487 | self.update() 488 | 489 | def mouseReleaseEvent(self, event): 490 | pos=event.pos()/self.scaleFactor 491 | if event.button() == Qt.LeftButton: 492 | pass 493 | if event.button()==Qt.RightButton: 494 | cursor =QCursor() 495 | self.rightClickPos=pos 496 | self.popMenu.exec_(cursor.pos()) 497 | 498 | def paintEvent(self, event): 499 | 500 | if not self.PixMap: 501 | return super(Canvas, self).paintEvent(event) 502 | 503 | 504 | p = self._painter 505 | p.begin(self) 506 | p.setFont(QFont('Times', self.font_size, QFont.Bold)) 507 | p.setRenderHint(QPainter.Antialiasing) 508 | p.setRenderHint(QPainter.HighQualityAntialiasing) 509 | p.setRenderHint(QPainter.SmoothPixmapTransform) 510 | 511 | p.scale(self.scaleFactor, self.scaleFactor) 512 | p.drawPixmap(0, 0, self.PixMap) 513 | 514 | 515 | # painter.setPen(QPen(Qt.red, 30, Qt.SolidLine)) 516 | #painter.drawLine(self.lastPoint/self.scaleFactor, event.pos()/self.scaleFactor) 517 | #painter.setRenderHint(QPainter.Antialiasing) 518 | #painter.setRenderHint(QPainter.HighQualityAntialiasing) 519 | #painter.setRenderHint(QPainter.SmoothPixmapTransform) 520 | # self.current.paint(painter) 521 | if self.Preview is not None: 522 | self.Preview.paint(p) 523 | if self.Trajectory is not None: 524 | self.Trajectory.paint(p) 525 | if self.Ruler is not None and len(self.Ruler.points)>0: 526 | self.Ruler.scale=self.scaleFactor 527 | if len(self.Ruler.points)==2: 528 | x1=float(Decimal(self.Ruler.points[0].x())*Decimal(self.geotiffScale)*self.resizeFactorWidth) 529 | y1=float(Decimal(self.Ruler.points[0].y())*Decimal(self.geotiffScale)*self.resizeFactorHeight) 530 | x2=float(Decimal(self.Ruler.points[1].x())*Decimal(self.geotiffScale)*self.resizeFactorWidth) 531 | y2=float(Decimal(self.Ruler.points[1].y())*Decimal(self.geotiffScale)*self.resizeFactorHeight) 532 | distance=str(round(float(self.distance_between(QPointF(x1,y1),QPointF(x2,y2))),2)) 533 | else: 534 | distance="0" 535 | self.Ruler.paint(p,distance=distance) 536 | if self.current is not None: 537 | self.current.scale = self.scaleFactor 538 | if self.currentLeft is not None: 539 | self.currentLeft.scale = self.scaleFactor 540 | if self.currentRight is not None: 541 | self.currentRight.scale = self.scaleFactor 542 | 543 | for key,shape in self.shapes.items(): 544 | if len(shape.points)!=0: 545 | if key.find("signal")!=-1: 546 | shape.paint(p,self.imageSignal.scaled(15/self.scaleFactor, 40/self.scaleFactor, Qt.KeepAspectRatio)) 547 | if shape.isStopSign: 548 | if 40/self.scaleFactor<10: 549 | shape.paint(p,self.imageStopSignSmall) 550 | else: 551 | shape.paint(p,self.imageStopSign.scaled(40/self.scaleFactor, 40/self.scaleFactor)) 552 | 553 | else: 554 | shape.paint(p) 555 | 556 | p.end() 557 | def sizeHint(self): 558 | return self.minimumSizeHint() 559 | 560 | def minimumSizeHint(self): 561 | if self.PixMap: 562 | res=(self.scaleFactor * (self.PixMap.size())) 563 | 564 | return res 565 | return super(Canvas, self).minimumSizeHint() 566 | 567 | 568 | def isVisible(self, shape): 569 | return self.visible.get(shape, True) 570 | def setShapeVisible(self, shape, value): 571 | self.visible[shape] = value 572 | self.repaint() 573 | def setDrawing(self,mode): 574 | self.drawing=mode 575 | def selectedVertex(self): 576 | return self.hVertex is not None 577 | def overrideCursor(self, cursor): 578 | self.restoreCursor() 579 | self._cursor = cursor 580 | if not self.LaneUsingTrajectory: 581 | QApplication.setOverrideCursor(cursor) 582 | def restoreCursor(self): 583 | if not self.LaneUsingTrajectory: 584 | QApplication.restoreOverrideCursor() 585 | --------------------------------------------------------------------------------