用开源数据复盘一次防空拦截:装备参数别只看标称值
去年底想给一个战史小项目做点数据支撑,目标是复盘一次夜间防空拦截的过程记录。手头没有内部数据,只能用公开的航迹、雷达探测距离估算和装备公开参数拼。环境很普通:一台笔记本,Python 3.11,数据是几个公开航班/航迹网站的导出 CSV,约 12 万行,时间跨度 6 小时。
第一步是把航迹按 10 秒窗口重采样,统一成经纬度加高度:
import pandas as pd
df = pd.read_csv('tracks.csv', parse_dates=['ts'])
df = df.sort_values(['track_id','ts'])
df['ts'] = df['ts'].dt.round('10s')
g = df.groupby(['track_id','ts'], as_index=False).agg(
lat=('lat','mean'), lon=('lon','mean'), alt=('alt','mean'))
第二步才是关键:不要用装备的标称探测距离当半径画圆。我一开始就这么干,结果圆画得漂亮,结论全错。实际要换成“视线距离 + 地形遮蔽”的粗算:
import math
def horizon_km(h_radar, h_target):
# 4.12 是常用经验系数,单位米,结果公里
return 4.12 * (math.sqrt(h_radar) + math.sqrt(h_target))
再叠加一个简单的遮蔽判断:把公开 DEM 高程按两点连线采样,只要中间有高于视线的点,就认为该段不可见。12 万行跑下来不到一分钟。
为什么这样做:标称探测距离是在理想条件下的最大值,对低空目标几乎没意义。视线距离公式本身也很粗,但它的误差方向是可预期的——会高估,不会凭空造出探测能力。代价是每个目标点都要做一次地形采样,数据量再大十倍就得换更适合的空间索引,我这版没做,属于知道但没补的坑。
哪里会失效:一是地形数据精度不够,山谷里的遮蔽判断会偏乐观;二是公开航迹的时间戳本身有抖动,重采样到 10 秒窗口后,高速目标的位置误差能到几百米;三是我拿不到真实的雷达开机时间和阵地位置,只能用公开报道里的近似点,这一步的误差没法量化,结论只能当趋势看,不能当复盘结论。我自己踩过的最大的坑是把民航航迹当成了全部空情,忘了低空慢速小目标根本不在公开数据里。
现在这个脚本还留着,但我更想知道:你们做类似复盘时,地形遮蔽这一层是用 DEM 硬算,还是有更省事的近似办法?
0
赞同度 100% · 0 条评论 · 6 阅读
0 条评论
还没有评论,写下第一条。