You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python绘制网格化地图并实现降雨数据分配与存储

新加坡网格化降雨地图实现方案(Python)

完全可以用Python实现你提出的所有需求,以下是具体的实现思路和工具推荐:

1. 生成指定分辨率的新加坡网格地图

  • 先确定新加坡的地理范围:可以用geopandas加载新加坡官方的行政区划数据(比如SHP文件),或者直接用大致经纬度范围(北纬1.1°至1.4°,东经103.6°至104.0°)
  • 坐标转换是关键:因为要按米为单位划分网格,建议把WGS84(经纬度)转换为新加坡本地投影坐标系SVY21(EPSG:3414),这个坐标系以米为单位,直接计算网格间隔更方便,用pyproj就能完成转换
  • 生成网格:用numpy计算网格的行列数,再生成每个网格的中心点或多边形,最后存为geopandas.GeoDataFrame格式,方便后续处理

2. 最近邻插值分配降雨数据并可视化

  • 预处理降雨站数据:确保降雨站的坐标和网格用同一投影坐标系,同时整理好每日降雨的时间序列数据
  • 最近邻查询:用scipy.spatial.cKDTree把所有降雨站的坐标建成KD树,然后对每个网格中心点快速找到最近的降雨站,把对应的降雨值赋值给网格
  • 颜色编码:用matplotlib或plotly给网格上色,比如用viridis色系根据降雨值从低到高渐变,就能生成类似示例图的可视化效果

3. 存储每日网格化数据到数组

  • 先算好总天数:1980年1月1日到2021年12月31日一共15340天左右
  • 初始化多维数组:用numpy创建一个形状为(总天数, 网格行数, 网格列数)的数组,用来存储每日的网格降雨值
  • 循环处理每日数据:对每一天的降雨数据执行最近邻插值,把结果填充到数组对应位置,最后用numpy.savez或者h5py存成二进制文件,既节省空间又方便后续读取

必备Python库

  • geopandas:处理地理数据、生成网格
  • pyproj:坐标系统转换
  • scipy:KD树实现高效最近邻查询
  • numpy:数组存储和数值计算
  • pandas:处理时间序列降雨数据
  • matplotlib/plotly:可视化颜色编码

示例效果参考

新加坡网格化降雨地图

内容的提问来源于stack exchange,提问作者Saqif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:04:43