Major changes: - New frontend (platform/web/): Vite + React 18 + TypeScript + Tailwind - 4-module navigation: 数据送标 / 模型管理 / 车队管理 / 系统管理 - Data catalog with charts (DMS/ADAS/Lane 3-tab view) - Quality review workflow (标注质检): Good/Fine/Bad scoring with auto-advance - Audit enhancements: batch operations, rejection categories, Feishu notifications - Operation audit log (操作日志) - World model simulation studio (仿真工坊) - Dataset version management with snapshots and diff - ADAS 7-class dataset integration (138K images organized + compressed) - User management with Feishu integration and pagination - CRUD/search/filter on all pages, card layout redesign - PIL-optimized image overlay rendering - Auto-snapshot on build, in_review workflow stage - Removed embedded algorithm code (now in workspace)
22 lines
714 B
Python
22 lines
714 B
Python
"""Fleet geo helpers."""
|
|
from __future__ import annotations
|
|
|
|
import math
|
|
|
|
EARTH_RADIUS_KM = 6371.0
|
|
|
|
|
|
def haversine_km(lat1: float, lng1: float, lat2: float, lng2: float) -> float:
|
|
rlat1, rlng1, rlat2, rlng2 = map(math.radians, (lat1, lng1, lat2, lng2))
|
|
dlat = rlat2 - rlat1
|
|
dlng = rlng2 - rlng1
|
|
a = math.sin(dlat / 2) ** 2 + math.cos(rlat1) * math.cos(rlat2) * math.sin(dlng / 2) ** 2
|
|
return 2 * EARTH_RADIUS_KM * math.asin(math.sqrt(a))
|
|
|
|
|
|
def simplify_coords(coords: list[list[float]], max_points: int = 2000) -> list[list[float]]:
|
|
if len(coords) <= max_points:
|
|
return coords
|
|
step = max(1, len(coords) // max_points)
|
|
return [coords[i] for i in range(0, len(coords), step)]
|