使用Python从逐月降水量数据中获取某位置的全年降水量
1 数据下载
可以在中国科技资源共享网中进行下载1km分辨率逐月降水量数据集。
2 数据说明
该数据为.nc
格式,里面有lat
、lon
、time
和pre
四个数据块,其中lat
、lon
是[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从逐月降水量数据中获取某位置的全年降水量相关推荐
- 如何才能在大数据中获取价值
从数据中获取价值都是一个挑战,不管你所在的行业和企业规模如何.然而,在早期阶段,这一挑战与可用数据量没多大关系.如果对数据处理过程和数据值提取的结构设计不合理,那么至少按照现在的标准,企业有数据和没数 ...
- 【python】使用python脚本将LFW数据中1672组同一个人多张照片拷贝出来
使用python脚本将LFW数据中1672组同一个人多张照片拷贝出来 dataCleaning4multiple.py 源码如下: import os, random, shutil import s ...
- 大数据时代:9种从大数据中获取商业价值的方法
很多大数据都是来自一些新的来源,这代表客户或合作伙伴互动的新渠道.和任何新的数据来源一样,大数据值得探索.通过数据探索,你可以了解一些之前所不知道的商业模式和事实真相. 关于管理大数据的调查显示,89 ...
- MySQL中数组内的JSON数据中获取值
MySQL中JSON数据获取值 1.MySQL中JSON数据中获取值 数据源: {"observeTruth": "111","preventHume ...
- 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 ...
- JavaScript 中获取光标位置
1.概念和原理 DOM中并没有直接获取光标位置的方法,那么我们只能间接来获取光标位置.DOM支持获取光标选中的范围,我们可以以此为切入点,来获取或定位光标的位置,当选取范围起始点和结束点一样时,就是光 ...
- python怎么索引txt数据中第四行_python-在熊猫数据框中按行计数编制索引
我有一个带有两个元素的层次结构索引的"熊猫"数据框(" month"和" item_id").每行表示特定月份的特定项目,并具有用于关注多个 ...
- python查找指定字符所在行号_在python中获取当前位置所在的行号和函数名
对于python,这几天一直有两个问题在困扰我: 1.python中没办法直接取得当前的行号和函数名.这是有人在论坛里提出的问题,底下一群人只是在猜测python为什么不像__file__一样提供__ ...
- python运用在大数据中精准生活_大数据分析技术在生活中的广泛应用
段雯琼++薛然++任亚丽 摘 要 文章介绍了大数据技术的即时性.准确性和预测性,并将大数据技术与公共交通.医药领域.移动通信网络优化相结合,从而方便了人们的生活,提高了人们的生活质量. [关键词]大数 ...
最新文章
- VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
- 宏定义define的使用
- c语言1 2 3 10000,在网上看到一个求2的10000次方的方法,有个地方看不懂,求大佬...
- CodeForces - 727D T-shirts Distribution(贪心)
- 函数接口– Java 8中java.util.function包中的函数接口
- 普通人能用华为P30拍出银河么?这是我们在北京实拍的结果
- android 4.0 蓝牙分析之二
- Address already in use: bind 端口被占用的解决办法
- Atitit 发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化
- 揭秘黑客攻击内幕和20个黑客相关术语
- SoundPool工具类
- html转换成pdf后变模糊,使用html2canvas.js和jspdf.js把网页转换成 pdf 不清晰怎么解决...
- 2021-11-07-防火墙添加安全策略
- mysql er图注释_powerdesigner 生成mysql带注释的ER图
- 红米Note3刷机教程(升级安卓9)
- scrapy--Rule()与LinkExtractor()函数理解
- 微软TTS语音引擎编程入门
- python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)...
- (个人学习)资金托管与资金存管的区别
- 计算机网络原理 [第一章] 概述
热门文章
- 三个成语等于两个月的学习感悟
- QLExpress 系列入门教程-02-QLExpress java 语法,java 对象操作
- DFS算法(含步骤总结)
- 知识体系之Redis
- 一个完整的python文件即是一个模块_用python玩转数据|基本语法
- 构建进程终止异常: “C:\Program Files\Java\jdk1.8.0_333\bin\java.exe“ -Xmx700m -……
- Win7运行窗口的打开方法
- 用友YoSuite以高效增长的力量,助力春耕按下生产“快进键”
- IDEA同一窗口打开多个项目
- redisTemplate Hash 使用方法