syntax = "proto3"; package graphicData; option java_package = "club.joylink.bjrtss.ats.verify.protos"; option java_outer_classname = "LayoutGraphicsProto"; option go_package = "./ats/verify/protos/graphicData"; message RtssGraphicStorage { Canvas canvas = 1; // repeated Link links = 2; // repeated IscsFan iscsFans = 3; repeated Platform Platforms = 4; repeated Station stations = 5; // repeated Rect rects = 6; // repeated Train train = 7; repeated Signal signals = 8; repeated Turnout turnouts = 9; repeated Section section = 10; // repeated Polygon polygons = 11; repeated TrainWindow trainWindows = 12; repeated AxleCounting axleCountings = 13; repeated Separator separators = 14; repeated SectionLink sectionLinks = 15; repeated AxleCountingSection axleCountingSections = 16; repeated LogicSection logicSections = 17; repeated StopPosition stopPositions = 18; repeated SpksSwitch spksSwitchs = 19; repeated EsbButton esbButtons = 20; // 紧急关闭按钮 repeated GatedBox gateBoxs = 21; // 站台开门/关门/发车按钮整合控制箱 repeated Transponder transponders = 22; // 应答器 repeated Slope slopes = 23; // 坡度 repeated CalculateLink CalculateLink = 24; // 计算link信息 repeated SlopeKiloMarker slopeKiloMarker = 25; //坡度公里标 repeated CurvatureKiloMarker curvatureKiloMarker = 26; //曲度公里标 repeated Curvature curvatures = 27; // 曲度 repeated TrackSection trackSections = 28; //轨道区段 repeated TrackLogicSection trackLogicSections = 29; //轨道逻辑区段 } message Canvas { // 画布宽 int32 width = 1; // 画布高 int32 height = 2; // 背景色 string backgroundColor = 3; // 视口变换 Transform viewportTransform = 4; } message Point { // x坐标 float x = 1; // y坐标 float y = 2; } //变换 message Transform { // 位移 Point position = 1; // 缩放 Point scale = 2; // 旋转弧度 float rotation = 3; // 歪斜 Point skew = 4; } //子元素变换 message ChildTransform { // 子元素名称 string name = 1; // 子元素变换 Transform transform = 2; } // 公共属性 message CommonInfo { string id = 1; string graphicType = 2; Transform transform = 3; repeated ChildTransform childTransforms = 4; } // message Link { // CommonInfo common = 1; // string code = 2; // bool curve = 3; // 是否曲线 // int32 segmentsCount = 4; // 曲线分段数 // int32 lineWidth = 5; // 线宽 // string lineColor = 6; // 线色 // repeated Point points = 7; // 点坐标列表 // } // message Rect { // CommonInfo common = 1; // string code = 2; // int32 lineWidth = 3; // 线宽 // string lineColor = 4; // 线色 // float width = 5; //宽度 // float height = 6; //高度 // int32 radius = 7; //圆角半径 // Point point = 8; // 画第一个点的坐标 // } // message Polygon { // CommonInfo common = 1; // string code = 2; // int32 lineWidth = 3; // 线宽 // string lineColor = 4; // 线色 // repeated Point points = 5; // 点坐标列表 // } message Platform { CommonInfo common = 1; string code = 2; bool hasdoor = 3; // 是否有屏蔽门 string direction = 4; // 行驶方向--屏蔽门上下 int32 index = 5; //索引 int32 refStationIndex = 6; //关联车站索引 } message Station { CommonInfo common = 1; string code = 2; // bool hasControl = 3; // 是否有控制 bool concentrationStations = 4; //是否集中站 // string kilometerCode = 5; //公里标 KilometerSystem kilometerSystem = 6; //公里标 int32 index = 7; } message TrainWindow { CommonInfo common = 1; string code = 2; string sectionId = 3; } message AxleCounting { enum TypeDetectionPoint { AxleCounting = 0; SectionBoundary = 1; } CommonInfo common = 1; string code = 2; // 名称 KilometerSystem kilometerSystem = 3; //公里标 repeated RelatedRef axleCountingRef = 4; // 计轴关联的非岔区物理区段和道岔,设备id和端口 int32 index = 5; //计轴的索引编号 //bool invent = 6; //是否虚拟计轴--一般是最末端 TypeDetectionPoint type = 7; //检测点的类型:计轴、区段边界 } // message Train { // CommonInfo common = 1; // string code = 2; // } // message IscsFan { // CommonInfo common = 1; // string code = 2; // } message Turnout { //(后端不关注) enum SwitchMachineType { Unknown = 0; ZDJ9_Single = 1; ZDJ9_Double = 2; } CommonInfo common = 1; string code = 2; repeated Point pointA = 6; // A端坐标列表 repeated Point pointB = 7; // B端坐标列表 repeated Point pointC = 8; // C端坐标列表 RelatedRef paRef = 9; // 道岔A端关联的设备 RelatedRef pbRef = 10; // 道岔B端关联的设备 RelatedRef pcRef = 11; // 道岔C端关联的设备 // KilometerSystem kilometerSystem = 12; // 道岔公里标 repeated KilometerSystem kilometerSystem = 13; // 道岔公里标 int32 index = 14; //索引 string paTrackSectionId = 15; // A端轨道区段id string pbTrackSectionId = 16; // B端轨道区段id string pcTrackSectionId = 17; // C端轨道区段id SwitchMachineType switchMachineType = 18; // 转辙机类型 } /** 左右行 **/ enum Direction { LEFT = 0; RIGHT = 1; } message KilometerSystem { int64 kilometer = 1; //公里标mm string coordinateSystem = 2; //坐标系 Direction direction = 3; //左右行 } message Signal { CommonInfo common = 1; string code = 2; bool mirror = 3; // int64 kilometer = 4; // string coordinateSystem = 5; KilometerSystem kilometerSystem = 6; int32 index = 7; //索引 RelatedRef refDev = 8; //关联设备(区段/道岔) } /** 物理区段(包含岔区和非岔区) */ message Section { enum SectionType { Physical = 0; TurnoutPhysical = 2; } CommonInfo common = 1; string code = 2; // 编号 repeated Point points = 3; // 点列表 RelatedRef paRef = 4; // 区段A端关联的设备(非岔区)(后端不关注) RelatedRef pbRef = 5; // 区段B端关联的设备(非岔区)(后端不关注) SectionType sectionType = 6; // 区段类型 repeated string axleCountings = 7; // 区段对应的计轴 int32 index = 8; // 索引 string trackSectionId = 9; // 下属轨道区段id bool isCurve = 10; // 是否曲线 int32 segmentsCount = 12; // 曲线分段数 } //关联设备 message RelatedRef { enum DeviceType { Section = 0; Turnout = 1; TrainWindow = 2; AxleCounting = 3; SectionLink = 4; } enum DevicePort { A = 0; B = 1; C = 2; } DeviceType deviceType = 1; //关联的设备类型 string id = 2; //关联的设备ID DevicePort devicePort = 3; //关联的设备端口 } //计轴区段与道岔的位置关系 message TurnoutPosRef { string id = 1; //道岔的ID int32 position = 2; //道岔的正反为,0是定位,1是反位 } message Separator { // 分隔符 CommonInfo common = 1; string code = 2; string separatorType = 3; } message Transponder { // 应答器 CommonInfo common = 1; string code = 2; int32 transponderType = 3; int32 index = 4; // 索引编号 KilometerSystem kilometerSystem = 5; //公里标 RelatedRef TransponderRef = 6; //关联关系 } message SimpleRef { enum DeviceType { Turnout = 0; AxleCounting = 1; } DeviceType deviceType = 1; string id = 2; } message SectionLink { CommonInfo common = 1; string code = 2; repeated Point points = 3; bool up = 4; // 是否上行 SimpleRef aSimRef = 5; // SectionLink A端连接设备(构建关系 AxleCounting/Turnout) //端点 SimpleRef bSimRef = 6; // SectionLink B端连接设备(构建关系 AxleCounting/Turnout) //端点 RelatedRef aRef = 7; // SectionLink A端连接设备(端口关系 SectionLink/Turnout) RelatedRef bRef = 8; // SectionLink B端连接设备(端口关系 // SectionLink/Turnout) int32 index = 9; // 索引编号 } message AxleCountingSection { // 计轴区段 CommonInfo common = 1; string code = 2; // 名称 repeated Point points = 3; RelatedRef paRef = 4; // 计轴区段A端关联的计轴 RelatedRef pbRef = 5; // 计轴区段B端关联的计轴 repeated TurnoutPosRef turnoutPos = 6; //关联道岔的正反位--0是定位,1是反位 int32 index = 7; //计轴区段的索引编号 } message LogicSection { // 逻辑区段 CommonInfo common = 1; string code = 2; // 名称 repeated Point points = 3; string axleSectionId = 4; // 关联的计轴区段Id int32 index = 5; // 索引编号 string turnoutId = 6; // 关联的岔芯对应的道岔id,此时该逻辑区段为该道岔C端关联的轨道link } message TrackSection { //轨道区段 enum TrackSectionType { NORMAL = 0; //非岔区 FORK = 1; //岔区 } CommonInfo common = 1; repeated Point points = 2; string code = 3; //名称 int32 index = 4; //索引 TrackSectionType type = 5; //类型 string destinationCode = 6; //目的地码 repeated string trackLogicSection = 7; //下属的逻辑区段id(非岔区) // //关联的物理设备id(物理区段/道岔)由另一端(物理区段/道岔处理) bool isCurve = 8; // 是否曲线 int32 segmentsCount = 9; // 曲线分段数 } message TrackLogicSection { //轨道逻辑区段 CommonInfo common = 1; repeated Point points = 2; string code = 3; //名称 int32 length = 4; //长度(mm) } message StopPosition { enum CoachNum { Four = 0; Six = 1; Eight = 2; } CommonInfo common = 1; string code = 2; bool flip = 3; // 是否翻转(前端显示) CoachNum coachNum = 4; //编组数量 int32 index = 5; //索引 KilometerSystem kilometerSystem = 6; RelatedRef refDev = 7; // 关联设备(区段) } message SpksSwitch { CommonInfo common = 1; string code = 2; bool flip = 3; // 是否翻转(前端显示) int32 index = 4; //索引 int32 refStand = 5; //关联站台索引 repeated string refSections = 6; // 关联物理区段id } message EsbButton { CommonInfo common = 1; string code = 2; bool flip = 3; // 是否翻转(前端显示) int32 index = 4; //索引 int32 refStand = 5; // 关联站台索引 } message GatedBox { CommonInfo common = 1; string code = 2; bool flip = 3; // 是否翻转(前端显示) int32 index = 4; //索引 } /** 坡度公里标 */ message SlopeKiloMarker { CommonInfo common = 1; string code = 2; repeated KilometerSystem kilometerSystem = 4; //公里标数据 } /** 曲度公里标 */ message CurvatureKiloMarker { CommonInfo common = 1; string code = 2; repeated KilometerSystem kilometerSystem = 4; //公里标数据 } message Slope { CommonInfo common = 1; repeated Point points = 2; sint32 slopeNumber = 3; //坡度的值--正负代表上下坡 repeated string refDeviceId = 4; // 坡度关联的(坡度公里标) } message Curvature { CommonInfo common = 1; repeated Point points = 2; sint32 curvatureNumber = 3; //曲线的半径--正代表外侧;负代表内侧 repeated string refDeviceId = 4; // 曲线关联的(曲度公里标) } // 计算link结构 message CalculateLink { CommonInfo common = 1; repeated Point points = 2; int32 length = 3; //长度,mm RelatedRef aRelatedRef = 4; // A端(最小端)关联的端点 (道岔端点) RelatedRef bRelatedRef = 5; // B端(最大端)关联的端点 (道岔端点) repeated DevicePosition devicePositions = 6; //设备在link上的位置 int32 index = 7; // link唯一标识 message DevicePosition { int32 offset = 1; string deviceId = 2; string deviceType = 3; } }