把地震目录塞进SQLite再查,比在线接口顺手的一次实测
上周想在家里那台旧笔记本上做点小分析:看某个区域近十年的地震时间分布。在线接口查一次几百条还行,想按任意时间窗反复筛就难受了,网络一断思路也断。于是我把 USGS 的 fdsnws 目录一次性拉下来,落到本地 SQLite。
喜欢把复杂的事说简单,不喜欢把简单的事说复杂。
上周想在家里那台旧笔记本上做点小分析:看某个区域近十年的地震时间分布。在线接口查一次几百条还行,想按任意时间窗反复筛就难受了,网络一断思路也断。于是我把 USGS 的 fdsnws 目录一次性拉下来,落到本地 SQLite。
前阵子想把手头一个二战火炮的小资料库补全,卡在弹种这一列。场景很小:一门 75mm 级别的旧炮,公开资料来自几个不同语种的百科条目、两本回忆录的转述,还有一份影印的弹药手册残页。数据量不大,几十条记录,但同一发炮弹在不同来源里出现了四种写法。
前阵子想给一个战史小站补一条旧式野战炮的条目,手头只有几份公开的装备手册扫描件和一篇战后总结。问题是:手册里的射程单位是码,总结里是米,还有一处写的是「约」多少。数据量不大,就三份资料、十几行参数,但对不上就没法录。
手头有一份约 12 万条的区域地震目录(CSV,字段:发震时刻、经纬度、深度、震级、震源位置精度),跑在 4 核 8G 的机器上,Python 3.11 + SQLite 3.40。需求很简单:给定一个台站坐标,筛出 50 公里内的所有事件,按震级降序,再按 10 公里深度分箱统计。第一版写得很快,结果错得也很快。
手上有一份 1970 年至今、约 12 万条事件的地震目录,字段只有时间、经纬度、震级、深度,CSV 大约 8MB,在笔记本上跑。想做的其实很简单:把震中按 0.1°×0.1° 的格子计数,出一张能一眼看出哪些区域事件密集的热力图。第一版直接上 matplotlib 的 hist2d,bins=360×180,出来的图中间一团黑,边缘全白,完全没法看。
去年整理某次边境作战的公开资料,手头攒了大概三十万字:战史摘录、装备参数表、参战老兵回忆的剪报扫描件转出来的文本,还有我自己标的时间线。格式很乱,txt、md、pdf 转出来的都有,中英混排,还夹着不少日文原始文献的译文。最开始用 grep 顶着,搜「同登」还行,搜「穿插 时间」这种多词组合就得反复管道,慢且容易漏。
去年帮一个住在老城区的朋友做应急包,他想在断网断基站的情况下还能看周边路网和避难点。手头只有一台退役的安卓手机(Android 9,2GB 内存),一张 32GB 卡。我最初想得很简单:装个离线地图 App 下个城市包就完了。实际做下去发现,城市包只覆盖到主干道,他住的那片巷子和社区避难点根本没标出来,得自己打包瓦片。
上个月帮朋友整理一份公开的实弹训练通报,数据来源是几段公开报道里提到的落点坐标和发射时间,一共 37 条记录,跨越两周。我本想直接用 QGIS 打点连线,结果第一版图出来,弹道像被风吹散的绳子,前后完全对不上。
去年底想给一个战史小项目做点数据支撑,目标是复盘一次夜间防空拦截的过程记录。手头没有内部数据,只能用公开的航迹、雷达探测距离估算和装备公开参数拼。环境很普通:一台笔记本,Python 3.11,数据是几个公开航班/航迹网站的导出 CSV,约 12 万行,时间跨度 6 小时。