降雨量分布图的制作
如何做出中国气象局发布的降雨量分布图

流程如下
1. 准备自己的降雨数据(点数据,格网数据),在使用前需要对无效数据进行清洗
2. 对数据进行插值分析(推荐克吕金插值)
3. 提取等值面
4. 将每个面的最小值当做面内的雨量值
5. 融合等值面
6. 裁剪等值面范围到自己所需的目标区域
7. 对裁剪后的区域按照标准的雨量分级()进行分级展示,形成分级结果,然后将分级结果叠加到地图上
8. 将需要的其他地图元素(图例,鹰眼图等)加到地图上后,将地图导出为图片即可
针对以上流程有以下补充说明
- 插值方法很多,为啥推荐克吕金插值
克里金插值法在气象、水文、地质等领域被广泛采用,核心原因在于它具备“空间最优无偏估计”能力。这意味着它不仅考虑了已知点的数值大小,还通过协方差函数建模了空间自相关性——即“距离越近的点,其属性值越相似”。对于降雨这种具有明显空间连续性和区域聚集性的自然现象,克里金能更真实地还原雨带的梯度变化和暴雨中心位置。相比之下,反距离权重法虽然计算快,但容易在站点稀疏区产生“牛眼效应”;样条插值则可能过度平滑,丢失局部极值。而克里金通过变差函数拟合,能自适应调整空间结构,尤其适合这种需要精确表达“100~250mm”强降水区的业务场景。 - 将每个面的最小值(dMinZValue)当做面内的雨量值的疑惑
本质上是“等值面分级赋值”的标准操作。当你从连续的插值栅格中提取等值面时,每个面代表的是一个“雨量区间”,比如“50~100mm”。此时,dMinZValue(即该面的最小Z值)就是这个区间的下限值,用它作为该面的统一赋值,是为了保证:
- 语义一致性:所有落在“50100mm”区域内的点,都被赋予“50mm”这个基准值,便于后续按标准雨量等级(如010, 10~25, 25~50...)进行符号化渲染。
- 避免歧义:如果用平均值或最大值,可能导致相邻面之间出现“跳跃”或“重叠”,破坏等值面的拓扑连续性。
- 符合行业规范:中央气象台、水利部门发布的降雨实况图,均采用“区间下限+颜色填充”的方式,确保公众和专业人员能快速识别雨强等级
- 以上流程主要实在处理降雨量分布的图层 ,如果还需要其他如水系等图层的话,直接叠加到一起即可
以上可以使用超图的SuperMap iObjects Java 11.1.1组件进行出图,在这里主要记录下map出图的方法
无窗口(Headless)环境下,使用 com.supermap.mapping.Map 将地图导出为图片
用 outputMapToFile 一次性指定 DPI + 范围
map.open(mapXml);
map.setImageSize(new Dimension(1024, 768));
map.refresh();
Rectangle2D targetBounds = resultDatasetClip.getBounds();
boolean exportSuccess = map.outputMapToFile(
outputImagePath,
ImageType.PNG, // 格式
96, // DPI(可根据需要调整,如 150、300)
targetBounds, // 输出空间范围
true // 背景透明
);
无窗口导出地图为图片是主要是需要设置导出地图的范围,有时地图的范围并不是业务所需的实际范围,故需要一个精准的范围来限制导出的视图范围。

浙公网安备 33010602011771号