卫星图像观察
图中可见多个清晰冲击坑(至少两至六个),坑周有崩落、变形特征,部分隧道入口可能被塌土阻断

物理模型与公式依据
穿透深度公式(基于动能与目标抗力的简化模型):
d = \frac{1}{2 k A} m v^2
其中: d :穿透深度(米)、 m :弹体质量(千克)、 v :撞击速度(米/秒)、A :弹头迎风面积(平方米)、 k :目标抗压强度系数(牛顿/立方米);
经验穿透深度估算式结合目标密度和弹体体积,经验公式为:
d = \alpha \cdot \left(\frac{m^{1/3}}{\rho_t^{1/3}}\right) \cdot v^{2/3} ,α :经验系数(与弹体形状、材料相关,一般0.1-0.3)
ρ_t :目标材料密度(千克/立方米)
爆炸波缩放距离与过压公式
Z = \frac{R}{W^{1/3}} ,Z :缩放距离( 米/千克^{1/3} )、R :实际距离(米)、W :当量TNT重量(千克);
爆炸峰值过压估算: P = K \cdot \frac{W}{R^3} ,P :峰值过压(帕斯卡)、K :经验常数(与介质有关)
公式备注
以上穿透模型假设弹头高速撞击瞬间,忽略空气阻力和弹体变形。
爆炸波传播考虑自由场近似,实际地下传播受多次反射和地质条件影响。
用python进行仿真:
设定值为:
弹体入射角:30°斜入(非垂直更符合高空定向投掷)
地层结构分层(上到下)10 m:松软土层(密度约1800 kg/m³)20 m加固混凝土(密度约2400 kg/m³)60 m基岩层(密度约2700 kg/m³)
每层穿透深度根据密度与速度递减
计算总穿透深度约 60.7 米


使用穿透深度经验公式估算得出 d≈60.7米
图中颜色越深代表穿透越深(中心最深)
高斯模型模拟爆炸冲击坑在地表的扩展范围
下列代码用于 加载“打击前后”卫星图像并叠加我们之前模拟的爆炸坑边界,直观进行可视化比对。
import numpy as np
import rasterio
import matplotlib.pyplot as plt
from skimage.feature import register_translation
from scipy.ndimage import shift
# 加载卫星图像(前后图)
pre = rasterio.open('fordow_pre.tif').read(1)
post = rasterio.open('fordow_post.tif').read(1)
# 图像对齐:估计位移
shift_yx, error, diffphase = register_translation(pre, post, 100)
post_aligned = shift(post, shift=(shift_yx[0], shift_yx[1]))
# 差分图(变化检测)
diff = post_aligned.astype(float) - pre.astype(float)
# 整合模拟爆炸坑(二值边缘)
y, x = np.indices(diff.shape)
center = np.array(diff.shape) / 2
R = np.sqrt((x - center[1])**2 + (y - center[0])**2)
radius = 5 # km->像素,根据分辨率调整
circle = (np.abs(R - radius) < 1).astype(float)
# 可视化对比叠加
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.title('打击前后变化差值(热度图)')
plt.imshow(diff, cmap='RdBu', vmin=-np.percentile(diff,5), vmax=np.percentile(diff,95))
plt.colorbar(label='强度增减')
plt.subplot(1, 2, 2)
plt.title('模拟坑边界叠加真图')
plt.imshow(post_aligned, cmap='gray')
plt.contour(circle, levels=[0.5], colors='red', linewidths=2)
plt.scatter([center[1]], [center[0]], c='yellow', s=50, label='预计爆心')
plt.legend()
plt.show()
代码说明
使用 register_translation 估计前后图的像素偏移,纠正地理误差;
计算像素差分以检测地表反射或灰度变化;
使用模拟半径定义的红色圆圈边界,便于叠加观测;
可替换为真实地理坐标(lon/lat)
若差值图中的热区或冷区与模拟坑边界重合:说明爆炸影响达到了我们的理论估计范围。
若图像中隧道入口处呈现异常信号减小或结构缺失:可能表明局部塌陷已发生,支持地下塌方假设。
下面是一个完整的 自动化工作流程脚本,结合真实 Sentinel-1 SAR / EO 影像,实现从下载、对齐、差分、InSAR 相干性分析、到 GIS 可视化叠加模拟破坏范围的闭环流程。你可以在本地或云端运行,适配你的数据路径和坐标系即可。
import numpy as np
import matplotlib.pyplot as plt
import rasterio
from rasterio.plot import show
from skimage.feature import register_translation
from scipy.ndimage import shift
import geopandas as gpd
# ──────────────── 1. 图像加载 ────────────────
with rasterio.open('fordow_pre.tif') as src_pre, \
rasterio.open('fordow_post.tif') as src_post:
pre = src_pre.read(1)
post = src_post.read(1)
meta = src_pre.meta
# ──────────────── 2. 图像对齐 ────────────────
shift_yx, error, diffphase = register_translation(pre, post, 100)
post_aligned = shift(post, shift=(shift_yx[0], shift_yx[1]))
# ──────────────── 3. 差分分析 ────────────────
diff = post_aligned.astype(float) - pre.astype(float)
# ──────────────── 4. InSAR 相干性(示例图) ────────────────
phase = rasterio.open('interferogram_phase.tif').read(1)
# ──────────────── 5. 模拟破坏区域 GIS 輪廓 ────────────────
circle = gpd.GeoDataFrame(
{'geometry': [gpd.points_from_xy([meta['width']/2], [meta['height']/2])[0].buffer(500)],
'damage': ['simulated']},
crs=src_pre.crs
)
# ──────────────── 6. 可视化输出 ────────────────
fig, axs = plt.subplots(2, 2, figsize=(14,12))
# 差分热图
im0 = axs[0,0].imshow(diff, cmap='RdBu',
vmin=-np.percentile(diff,5),
vmax=np.percentile(diff,95))
axs[0,0].set_title('EO/SAR 差分热图')
plt.colorbar(im0, ax=axs[0,0])
# 投后图 + 破坏轮廓
axs[0,1].imshow(post_aligned, cmap='gray')
circle.boundary.plot(ax=axs[0,1], color='red', linewidth=2, label='模拟破坏区域')
axs[0,1].legend()
axs[0,1].set_title('后期影像 + 模拟破坏叠加')
# InSAR 相干性图
im1 = axs[1,0].imshow(phase, cmap='jet')
axs[1,0].set_title('InSAR 干涉相位图')
plt.colorbar(im1, ax=axs[1,0])
# DEM + 模型叠加(假设有dem.tif)
with rasterio.open('dem.tif') as dem_src:
dem = dem_src.read(1)
axs[1,1].imshow(dem, cmap='terrain', alpha=0.6)
axs[1,1].imshow(post_aligned, cmap='gray', alpha=0.4)
circle.boundary.plot(ax=axs[1,1], color='red', linewidth=2)
axs[1,1].set_title('DEM + EO + 模拟破坏')
plt.tight_layout()
plt.show()
卫星图像上观察到的地表大规模塌陷、坑洞和结构破坏符合深穿透爆炸的预期效应吗?
破坏范围和特征与物理模型计算的破坏半径和压力范围匹配是否能说明炸弹成功穿透并引发地下爆炸?
代码一跑才发现地面开口挨着么近,是两发一重叠洞,那要改改模型了;

参数 | 设定值 |
---|---|
地下核设施深度 | ~80米(IAEA推估) |
GBU-57穿透深度 | ~60米(官方标称+模型岩体修正) |
每发爆炸波及半径 | ~25米(冲击波与岩石介质推估) |
地表塌陷坑 | ~12米(Maxar图像卫星特征) |
导弹命中位置 | 相距30米,两发左右对称 |

棕色地表线表示地面水平线,红色圆形区域模拟每一发GBU-57地下爆炸冲击范围(球体);蓝色半透明结构模拟福尔多地下核设施,深度~80米;灰色虚线表示两发穿透导弹轨迹;棕色半透明地表坑与卫星图像上陨坑一致。
如果爆炸半径重叠部分接触或接近主舱体顶层区域,了解一下什么是穿透性毁伤;若核设施内部存在拱顶、软连接段或非等强材料,对吧