1 数据下载

可以在中国科技资源共享网中进行下载1km分辨率逐月降水量数据集。

2 数据说明

该数据为.nc格式,里面有latlontimepre四个数据块,其中latlon是[H, W]形状的矩阵,每一个像素代表该像素对应坐标的经纬度;time有12个,分别为1-12月;pre是对应的降水数据块,形状为[12, H, W],代表某个像素12个月的降雨量。

3 数据处理

我们需要的是获取一些经纬度点的12个月降雨量,因此可以使用Python的netCDF4进行读取,然后进行处理,代码如下:

import numpy as np
import netCDF4 as ncclass WaterReader:def __init__(self, nc_path):self.src = nc.Dataset(nc_path)self.data = np.asarray(self.src["pre"])self.rang = self._get_range()self.lon_step = (self.rang[1] - self.rang[0]) / len(self.src["lon"])self.lat_step = (self.rang[3] - self.rang[2]) / len(self.src["lat"])def _get_range(self):return (np.min(self.src["lon"]),np.max(self.src["lon"]),np.min(self.src["lat"]),np.max(self.src["lat"]))def _get_rowcol_by_lonlat(self, lon, lat):lon_min, lon_max, lat_min, lat_max = self.rangif lon < lon_min or lon > lon_max or lat < lat_min or lat > lat_max:raise ValueError("lon or lat is out of range")lon_index = int((lon - lon_min) / self.lon_step)lat_index = int((lat_max - lat) / self.lat_step)return lon_index, lat_indexdef get_water(self, lon, lat):lon_index, lat_index = self._get_rowcol_by_lonlat(lon, lat)return self.data[:, lat_index, lon_index]if __name__ == "__main__":wr = WaterReader("pre_2021.nc")print(wr.get_water(104.4214641, 33.731619))

其中关键在于通过_get_rowcol_by_lonlat将输入的经纬度对应找到图上最近的像元,然后通过该像元的行列号找到降水量。这里还可以插找距离最近的四个像元,通过线性插值的方法得到该点的12个月降水量。

如果需要批量处理的话,写成循环就好了。

使用Python从逐月降水量数据中获取某位置的全年降水量相关推荐

  1. 如何才能在大数据中获取价值

    从数据中获取价值都是一个挑战,不管你所在的行业和企业规模如何.然而,在早期阶段,这一挑战与可用数据量没多大关系.如果对数据处理过程和数据值提取的结构设计不合理,那么至少按照现在的标准,企业有数据和没数 ...

  2. 【python】使用python脚本将LFW数据中1672组同一个人多张照片拷贝出来

    使用python脚本将LFW数据中1672组同一个人多张照片拷贝出来 dataCleaning4multiple.py 源码如下: import os, random, shutil import s ...

  3. 大数据时代:9种从大数据中获取商业价值的方法

    很多大数据都是来自一些新的来源,这代表客户或合作伙伴互动的新渠道.和任何新的数据来源一样,大数据值得探索.通过数据探索,你可以了解一些之前所不知道的商业模式和事实真相. 关于管理大数据的调查显示,89 ...

  4. MySQL中数组内的JSON数据中获取值

    MySQL中JSON数据获取值 1.MySQL中JSON数据中获取值 数据源: {"observeTruth": "111","preventHume ...

  5. python 打印当前行号_python中获取当前位置所在的行号和函数名(转)

    http://www.vimer.cn/2010/12/%E5%9C%A8python%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7 ...

  6. JavaScript 中获取光标位置

    1.概念和原理 DOM中并没有直接获取光标位置的方法,那么我们只能间接来获取光标位置.DOM支持获取光标选中的范围,我们可以以此为切入点,来获取或定位光标的位置,当选取范围起始点和结束点一样时,就是光 ...

  7. python怎么索引txt数据中第四行_python-在熊猫数据框中按行计数编制索引

    我有一个带有两个元素的层次结构索引的"熊猫"数据框(" month"和" item_id").每行表示特定月份的特定项目,并具有用于关注多个 ...

  8. python查找指定字符所在行号_在python中获取当前位置所在的行号和函数名

    对于python,这几天一直有两个问题在困扰我: 1.python中没办法直接取得当前的行号和函数名.这是有人在论坛里提出的问题,底下一群人只是在猜测python为什么不像__file__一样提供__ ...

  9. python运用在大数据中精准生活_大数据分析技术在生活中的广泛应用

    段雯琼++薛然++任亚丽 摘 要 文章介绍了大数据技术的即时性.准确性和预测性,并将大数据技术与公共交通.医药领域.移动通信网络优化相结合,从而方便了人们的生活,提高了人们的生活质量. [关键词]大数 ...

最新文章

  1. VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
  2. 宏定义define的使用
  3. c语言1 2 3 10000,在网上看到一个求2的10000次方的方法,有个地方看不懂,求大佬...
  4. CodeForces - 727D T-shirts Distribution(贪心)
  5. 函数接口– Java 8中java.util.function包中的函数接口
  6. 普通人能用华为P30拍出银河么?这是我们在北京实拍的结果
  7. android 4.0 蓝牙分析之二
  8. Address already in use: bind 端口被占用的解决办法
  9. Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化
  10. 揭秘黑客攻击内幕和20个黑客相关术语
  11. SoundPool工具类
  12. html转换成pdf后变模糊,使用html2canvas.js和jspdf.js把网页转换成 pdf 不清晰怎么解决...
  13. 2021-11-07-防火墙添加安全策略
  14. mysql er图注释_powerdesigner 生成mysql带注释的ER图
  15. 红米Note3刷机教程(升级安卓9)
  16. scrapy--Rule()与LinkExtractor()函数理解
  17. 微软TTS语音引擎编程入门
  18. python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)...
  19. (个人学习)资金托管与资金存管的区别
  20. 计算机网络原理 [第一章] 概述

热门文章

  1. 三个成语等于两个月的学习感悟
  2. QLExpress 系列入门教程-02-QLExpress java 语法,java 对象操作
  3. DFS算法(含步骤总结)
  4. 知识体系之Redis
  5. 一个完整的python文件即是一个模块_用python玩转数据|基本语法
  6. 构建进程终止异常: “C:\Program Files\Java\jdk1.8.0_333\bin\java.exe“ -Xmx700m -……
  7. Win7运行窗口的打开方法
  8. 用友YoSuite以高效增长的力量,助力春耕按下生产“快进键”
  9. IDEA同一窗口打开多个项目
  10. redisTemplate Hash 使用方法