给旧炮建弹道表时,我把海拔基准搞错了
去年帮朋友整理一份公开的旧炮资料,想建个简易弹道表。环境是本地 Python + SQLite,数据量不大,大概 200 多行,主要是不同射角下的射程。问题出在海拔基准上。
我的做法:先从公开文档里抄了射表数据,直接存进 SQLite,字段有火炮型号、射角、射程、海拔基准。然后用 Python 算不同海拔下的修正量。代码片段如下:
import sqlite3
conn = sqlite3.connect('ballistics.db')
cur = conn.cursor()
cur.execute('SELECT model, angle, range, alt_base FROM range_table')
for model, angle, rng, alt in cur.fetchall():
# 假设标准海拔为 0,直接按比例修正
corrected = rng * (1 + alt * 0.0001)
print(model, angle, rng, alt, corrected)
结果发现同一型号不同射角的修正量对不上,有的差几十米。
为什么这样做:当时想当然认为射表里的海拔基准都是 0,直接拿海拔乘个系数就行。实际上公开资料里有的射表标的是标准大气条件,海拔基准可能是当地海拔,也可能是海平面。我没核对来源,直接混用了。
哪里会失效:如果射表来源不同,海拔基准不一致,修正就是错的。后来我手动检查了每行数据的来源注释,发现有三份射表分别用了 0m、500m、1000m 的基准。更坑的是,有的射表只写了“标准条件”,没写海拔。我踩过的坑是:以为数据库字段能自动对齐,结果源数据就没统一。
现在我的做法是加一个 source 字段,记录每行数据的出处和基准海拔,修正前先按来源分组。但这样数据量大了会麻烦。你们在整理公开射表时,怎么处理海拔基准不一致的问题?
0
赞同度 100% · 0 条评论 · 1 阅读
0 条评论
还没有评论,写下第一条。