| | |
| | | | pandas / GeoPandas / Shapely / scikit-learn | BSD 3-Clause 系列许可证 | |
| | | | PyProj | MIT;同时需遵守其随附 PROJ 数据/组件许可 | |
| | | | Matplotlib | Matplotlib License;随附字体等资产有各自许可证 | |
| | | | openpyxl 3.1.5 | MIT;仅用于读取用户提供的 XLSX 飞行日志 | |
| | | | Demo 数据 | 由本仓库脚本生成,无第三方数据集或模型权重 | |
| | | | 预训练模型/权重 | 无 | |
| | | |
| | | 以上是开发阶段记录,不等于已完成产品商用法务审查。 |
| | | |
| | | ## 真实单例:田墩飞行任务 19578 |
| | | |
| | | 用户提供的原始 XLSX、DJI WPMZ KMZ 和禁飞区 GeoJSON 保持在 `shared/data/raw/15-trajectory-analysis/tian-dun-demo-20260814/`,不会被脚本改写。使用以下命令生成可审计的处理输入,再运行单例分析: |
| | | |
| | | ```powershell |
| | | $py = '.\.venvs\15-trajectory-analysis\Scripts\python.exe' |
| | | & $py .\capabilities\15-trajectory-analysis\prepare_real_flight.py |
| | | & $py .\capabilities\15-trajectory-analysis\run_trajectory_analysis.py ` |
| | | --input .\shared\data\processed\15-trajectory-analysis\tian-dun-flight-19578\tian-dun-flight-19578.case.json ` |
| | | --output .\shared\outputs\15-trajectory-analysis\tian-dun-flight-19578 |
| | | ``` |
| | | |
| | | 预处理器会将 Excel 的本地无时区时间按 `Asia/Shanghai` 解释后转换为 UTC,提取 `waylines.wpml` 中的 10 个 WGS84 航点,并从 2,300 个禁飞区源要素中按飞行/航线周边 5 km 筛选、合并为一个局部区域。点状区域按原始 `radius` 转为米制缓冲区;源数据的 `no-fly` 被映射为规则输入 `restricted`,只用于技术空间评估。适飞区 Gzip 已验证为 46,518 个闭合坐标环的 `int32 / 1e7` 流,田墩周边筛出 2 个适飞面;它只用于可视化,不参与禁入规则判定。 |
| | | |
| | | 已验证的真实单例有 233 个观测点、1 条无人机轨迹,运行耗时 0.338 秒。输出报告 2 段偏航(77 秒、175 秒)和 1 个持续 464 秒的区域相交事件;没有停留或聚集事件。实飞点到计划线的最小/平均/最大距离为 0.0 / 221.0 / 540.8 m。两段偏航分别覆盖起飞接近计划线之前和自动返航/降落阶段,计划航线未表达这些飞行阶段,因此不能直接将其作为异常结论。区域相交仅代表与名为“三清山”的源区域(`no-fly-40001494`)发生空间相交,不是法规或运营违规认定。 |
| | | |
| | | 处理输入位于 `shared/data/processed/15-trajectory-analysis/tian-dun-flight-19578/`;结果位于 `shared/outputs/15-trajectory-analysis/tian-dun-flight-19578/tian-dun-flight-19578/`,包括轨迹、计划航线、禁飞区、适飞区和事件 GeoJSON,以及 `analysis.png`。本地控制台的“田墩实飞”案例可直接查看这些结果;地图以 ArcGIS 影像为底图,并可在 `apps/workbench-console/.env.local` 配置 `VITE_TIANDITU_TOKEN` 叠加天地图影像和注记。 |
| | | |
| | | ## 已知限制与下一步 |
| | | |
| | | - 2026-08-14 已归档一组用户提供的田墩真实原始资料至 `shared/data/raw/15-trajectory-analysis/tian-dun-demo-20260814/`:禁飞区 GeoJSON、适飞区 Gzip 二进制源文件、DJI WPMZ 航线 KMZ 与实际飞行 Excel。原文件保持未改名、未转换状态,当前尚未纳入分析结果。 |
| | | - `prepare_real_flight.py` 已支持此批 XLSX、KMZ、禁飞 GeoJSON 与适飞区 Gzip 的单例准备。适飞区的二进制几何已验证为闭合坐标环,但其发布日期、授权方和运营语义仍未独立核验,当前只用于可视化,不参与规则判断。当前区域规则只识别 `zone_type=restricted`,不能把 `no_fly` 标签直接等同为已验证的禁入事件。 |
| | | - 合成样本只能验证程序逻辑,不能证明真实场景准确率;目前没有可报告的真实误报率和漏报率。 |
| | | - 聚集要求时间戳对齐,GPS 漂移、采样频率和轨迹断点会直接影响结果。 |
| | | - 偏航依赖可信参考路线;禁入区依赖有效区域数据;不同人员、车辆、船舶和无人机需要分别标定阈值。 |
| | | - 下一步应先选 1 个正常、1 个困难的脱敏实测轨迹,人工标注事件,再评估误报、漏报和阈值,而不是直接跑大目录。 |
| | | - 若输入来自无人机视频,还需在此能力之前引入独立的多目标跟踪器,并验证 ID 切换问题。 |
| | | ## 控制台输入转换 |
| | | |
| | | 本地实验控制台支持直接上传用户常见的 `XLSX` 飞行日志、`KMZ` DJI WPMZ 航线、禁飞区 `GeoJSON`,以及可选适飞区 `Gzip`。服务端会在固定的轨迹虚拟环境中调用 `prepare_real_flight.py` 和 `run_trajectory_analysis.py`,把文件转换成 Demo 的 `case.json`、WGS84 轨迹和 GeoJSON 输出。适飞区缺省时仍可分析,地图只是不显示适飞区图层。 |
| | | |
| | | 每次运行使用新的 `trajectory-<UTC时间>-<随机串>` 编号,原始输入不会被覆盖;控制台案例库会自动扫描 `shared/outputs/15-trajectory-analysis`,行为标签在界面显示中文释义,结构化文件继续保存英文键值,便于程序处理。 |