57 lines
2.0 KiB
Go
57 lines
2.0 KiB
Go
package catalogs
|
||||
|
|
|
|||
|
|
import (
|
|||
|
|
"encoding/json"
|
|||
|
|
"os"
|
|||
|
|
"path/filepath"
|
|||
|
|
"sync"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
var _ = json.RawMessage{}
|
|||
|
|
var _ = sync.Mutex{}
|
|||
|
|
var _ = os.ReadFile
|
|||
|
|
var _ = filepath.Join
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
// 一个路口(红绿灯)的相位表一行 —— 数据来自捐赠端 PrivateServerPor 的
|
|||
|
|
// Drmk.Server/Drmk.App/data/zonegraph_intersections.csv(171 行)。
|
|||
|
|
//
|
|||
|
|
//
|
|||
|
|
// ⛑⛑ 2026-10-02 移植自捐赠端 `Drmk.Core/ClientData/Client4229938/IntersectionTable.cs`
|
|||
|
|
// (逐字照搬解析逻辑,只把路径改成走 Paths.Intersections 配置)。
|
|||
|
|
// 为什么需要它:主线以前 init 的 Intersections 恒为 [],客户端
|
|||
|
|
// AetherIntersectionManager 建不出 IntersectionDataEntity ⇒ 不
|
|||
|
|
// RegisterTrafficLight ⇒ **灯柱从来没被接管 ⇒ 不亮**。有了这张表才能
|
|||
|
|
// ① init 里带上真路口、② 周期发 SyncAetherAIIntersectionUpdateDa(68819947) 切相位。
|
|||
|
|
// ⛑ lane id 同源性已验证:本表 PeriodOpenLanes 里的车道 id 在主线
|
|||
|
|
// vehicle_lanes.csv 里 **29/29 命中**(前 6 个路口抽样),距路口 16~26m
|
|||
|
|
// ⇒ 与主线车流用的是同一份 zonegraph。
|
|||
|
|
//
|
|||
|
|
type TrafficIntersection4229938 struct {
|
|||
|
|
ZoneIndex int32 `json:"zoneIndex"`
|
|||
|
|
X float32 `json:"x"`
|
|||
|
|
Y float32 `json:"y"`
|
|||
|
|
Z float32 `json:"z"`
|
|||
|
|
PeriodCount int32 `json:"periodCount"`
|
|||
|
|
CurrentPeriodIndex byte `json:"currentPeriodIndex"`
|
|||
|
|
NextPeriodIndex byte `json:"nextPeriodIndex"`
|
|||
|
|
RailPeriodIndex byte `json:"railPeriodIndex"`
|
|||
|
|
PeriodOpenLanes [][]int32 `json:"periodOpenLanes"`
|
|||
|
|
// 这个路口涉及的全部车道(各相位放行车道的并集)。
|
|||
|
|
AllLanes any `json:"allLanes"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
type IntersectionTable struct {
|
|||
|
|
Cache []TrafficIntersection4229938 `json:"cache"`
|
|||
|
|
All []TrafficIntersection4229938 `json:"all"`
|
|||
|
|
Count int32 `json:"count"`
|
|||
|
|
LaneOwner map[int32]int32 `json:"laneOwner"`
|
|||
|
|
ZoneMap map[int32]int32 `json:"zoneMap"`
|
|||
|
|
// 映射表命中了多少个路口(诊断用)。
|
|||
|
|
ZoneMapHits int32 `json:"zoneMapHits"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const (
|
|||
|
|
IntersectionTable_ZoneMapRelativePath string = "Drmk.Server/Drmk.App/data/intersection_zone_map.csv"
|
|||
|
|
)
|
|||
|
|
|