CollisionAvoidance/src/config/IntersectionConfig.h

43 lines
1.1 KiB
C++

#pragma once
#include <string>
#include <vector>
#include "types/BasicTypes.h"
struct IntersectionPosition {
double longitude;
double latitude;
double altitude;
};
// 路口安全区配置
struct SafetyZoneConfig {
double aircraftRadius; // 航空器安全区半径
double vehicleRadius; // 特勤车安全区半径
};
struct Intersection {
std::string id;
std::string name;
std::string trafficLightId;
IntersectionPosition position;
double width; // 路口宽度,单位:米
SafetyZoneConfig safetyZone; // 安全区配置
};
class IntersectionConfig {
public:
static IntersectionConfig load(const std::string& configFile);
// 根据红绿灯ID查找路口
const Intersection* findByTrafficLightId(const std::string& trafficLightId) const;
// 根据路口ID查找路口
const Intersection* findById(const std::string& intersectionId) const;
// 获取所有路口配置
const std::vector<Intersection>& getIntersections() const { return intersections_; }
private:
std::vector<Intersection> intersections_;
};