66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
# ================================================================
|
|
# services/data/app/external/models/madrid_models.py
|
|
# ================================================================
|
|
"""
|
|
Data structures, enums, and dataclasses for Madrid traffic system
|
|
"""
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from enum import Enum
|
|
from typing import Optional
|
|
|
|
|
|
class TrafficServiceLevel(Enum):
|
|
"""Madrid traffic service levels"""
|
|
FLUID = 0
|
|
DENSE = 1
|
|
CONGESTED = 2
|
|
BLOCKED = 3
|
|
|
|
|
|
class CongestionLevel(Enum):
|
|
"""Standardized congestion levels"""
|
|
LOW = "low"
|
|
MEDIUM = "medium"
|
|
HIGH = "high"
|
|
BLOCKED = "blocked"
|
|
|
|
|
|
@dataclass
|
|
class MeasurementPoint:
|
|
"""Madrid measurement point data structure"""
|
|
id: str
|
|
latitude: float
|
|
longitude: float
|
|
distance: float
|
|
name: str
|
|
type: str
|
|
|
|
|
|
@dataclass
|
|
class TrafficRecord:
|
|
"""Standardized traffic record with pedestrian inference"""
|
|
date: datetime
|
|
traffic_volume: int
|
|
occupation_percentage: int
|
|
load_percentage: int
|
|
average_speed: int
|
|
congestion_level: str
|
|
pedestrian_count: int
|
|
measurement_point_id: str
|
|
measurement_point_name: str
|
|
road_type: str
|
|
source: str
|
|
district: Optional[str] = None
|
|
|
|
# Madrid-specific data
|
|
intensidad_raw: Optional[int] = None
|
|
ocupacion_raw: Optional[int] = None
|
|
carga_raw: Optional[int] = None
|
|
vmed_raw: Optional[int] = None
|
|
|
|
# Pedestrian inference metadata
|
|
pedestrian_multiplier: Optional[float] = None
|
|
time_pattern_factor: Optional[float] = None
|
|
district_factor: Optional[float] = None |