PERSIANN 降雨数据使用教程

2023-05-16

一、前言

PERSIANN,“使用人工神经网络从遥感信息中估算降水”,是一种基于卫星的降水检索算法,可提供近乎实时的降雨信息。

该算法使用来自全球地球同步卫星的红外 (IR) 卫星数据作为降水信息的主要来源。 红外图像的降水基于云顶温度和降水率之间的统计关系。 然后使用低地球轨道卫星(例如,热带降雨测量任务微波成像仪、特殊传感器微波成像仪、高级微波扫描辐射计-地球观测系统)提供的卫星微波数据校准基于红外线的降水估计。 校准技术依赖于一种自适应训练算法,该算法在微波观测可用时(大约每隔 3 小时)更新检索参数。

PERSIANN 数据可以二进制格式获取。 这种格式不同于我们之前看到的geotif、netCDF和HDF。 因此,需要一种不同的方法来提取数据

二、数据下载

转到 ftp 站点并下载 2000 年 3 月的数据。

ftp://persiann.eng.uci.edu/pub/PERSIANN/tar_6hr/

提取并解压文件夹 d:/persiann/ 中的文件.

当使用 tar 提取然后解压缩时,6 小时文件将具有以下名称:raw6hrYYDOYHS.bin

YY : 2 位数年份,从 00 开始表示 2000

DOY:一年中的某一天

HS:6小时累计周期的起始时间,(0,6,12,18)

例如,文件 raw6hr0512518.bin 表示 2005 年 5 月 5 日 18 到 24 之间累积的降水量

数据以 C 样式以行为中心的格式存储。 第一个值以 49.875、0.125 为中心,第二个值以 49.875、0.375 为中心,最后两个值以:-49.875、359.625 和 -49.875、359.875 为中心

数据采用来自 SUN 系统(大端)的 4 字节二进制浮点数。从二进制文件中提取二进制数据需要执行以下步骤。 它基本上逐行扫描数据并将数据放入矩阵中。

三、数据处理

(1)在 d:\training1\scripts\ 中创建脚本 script5a.py 并运行下面的代码。

# import libraries
import matplotlib.pyplot as plt
import numpy as np
from struct import unpack
from osgeo import gdal
 
# inputfile
BinaryFile = "/path/to/raw6hr0006100.bin" # '3B42_daily.2009.05.31.7.bin'. Make sure you adjust the location.
 
# open binary file
f = open(BinaryFile, "rb")
 
# set file dimensions
xs = 1440
ys = 400
 
# set number of bytes in file
NumbytesFile = xs * ys
 
# number of columns in row
NumElementxRecord = -xs
 
# create empty array to put data in
myarr = []
 
# loop trough the binary file row by row
for PositionByte in range(NumbytesFile,0, NumElementxRecord):
 
        Record = ''
 
        # the dataset starts at 0 degrees, use 720 to convert to -180 degrees
        for c in range (PositionByte-720, PositionByte, 1):
                f.seek(c * 4)
                DataElement = unpack('>f', f.read(4))
                Record = Record  + str("%.2f" % DataElement + ' ')
 
        # 0 - 180 degrees
        for c in range (PositionByte-1440 , PositionByte-720, 1):
                f.seek(c * 4)
                DataElement = unpack('>f', f.read(4))
                Record = Record  + str("%.2f" % DataElement + ' ')
 
        # add data to array
        myarr.append(Record[:-1].split(" "))
 
# close binary file
f.close()
 
# Array to numpy float
myarr = np.array(myarr).astype('float')
 
# mirror array
myarr = myarr[::-1]
 
# show data
plt.imshow(myarr)
plt.clim(0,10)
plt.show()

如果出现带有降雨的图像,则您已成功将二进制数据导入到 numpy 数组中。

(2)在 d:\training1\scripts\ 中创建脚本 script5b.py 并运行下面的代码。 确保更正输入和输出路径。

# import libraries
import matplotlib.pyplot as plt
import numpy as np
from struct import unpack
from osgeo import gdal
from osgeo import osr
 
# inputfile
BinaryFile = "/path/to/raw6hr0006100.bin" # '3B42_daily.2009.05.31.7.bin'
 
# open binary file
f = open(BinaryFile, "rb")
 
# set file dimensions
xs = 1440
ys = 400
 
# set number of bytes in file
NumbytesFile = xs * ys
 
# number of columns in row
NumElementxRecord = -xs
 
# create empty array to put data in
myarr = []
 
# loop trough the binary file row by row
for PositionByte in range(NumbytesFile,0, NumElementxRecord):
 
        Record = ''
 
        # the dataset starts at 0 degrees, use 720 to convert to -180 degrees
        for c in range (PositionByte-720, PositionByte, 1):
                f.seek(c * 4)
                DataElement = unpack('>f', f.read(4))
                Record = Record  + str("%.2f" % DataElement + ' ')
 
        # 0 - 180 degrees
        for c in range (PositionByte-1440 , PositionByte-720, 1):
                f.seek(c * 4)
                DataElement = unpack('>f', f.read(4))
                Record = Record  + str("%.2f" % DataElement + ' ')
 
        # add data to array
        myarr.append(Record[:-1].split(" "))
 
# close binary file
f.close()
 
# Array to numpy float
myarr = np.array(myarr).astype('float')
 
# set values < 0 to nodata
myarr[myarr < 0] = -9999
 
# mirror array
myarr = myarr[::-1]
 
# define output name
outname = "/path/to/persian.tif"
 
# set coordinates
originy = 50
originx  = -180
pixelsize = 0.25
transform= (originx, pixelsize, 0.0, originy, 0.0, -pixelsize)
driver = gdal.GetDriverByName( 'GTiff' )
 
# set projection
target = osr.SpatialReference()
target.ImportFromEPSG(4326)
 
## write dataset to disk
outputDataset = driver.Create(outname, xs,ys, 1,gdal.GDT_Float32)
outputDataset.SetGeoTransform(transform)
outputDataset.SetProjection(target.ExportToWkt())
outputDataset.GetRasterBand(1).WriteArray(myarr)
outputDataset.GetRasterBand(1).SetNoDataValue(-9999)
outputDataset = None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PERSIANN 降雨数据使用教程 的相关文章

  • 26. GD32F103C8T6入门教程-CAN外设回环测试

    1 基础知识 相关stm32CAN外设 外设特征 3个发送邮箱 2个深度为3个邮箱的接收FIFO 自动重传 自动唤醒 发送 接收时间戳 最大速率1Mbps 3种工作模式 睡眠模式 可以检车总线状态自动唤醒 初始化工作模式 如果需要对 CAN
  • stm32 操作W25Q256 W25Q16 spi flash

    硬件连接 本函数库来自正点原子官方 xff0c 本人稍作修改和添加注释 W25Q16 2M Byte W25Q256 32M Byte spi 配置 2022 7 27 经过测试 华邦的 W25Q256JV 32M 字节 容量的spi fl
  • ESP32学习笔记20-dac

    20 DAC 20 1概述 ESP32 有两个 8 位数模转换器 DAC 通道 分别连接到 GPIO25 通道 1 和 GPIO26 通道 2 每个 DAC 通道可以将数字值 0 255 转换成模拟电压 0 Vref out voltage
  • ESP32学习笔记21-esp32启动流程

    24 esp32启动流程 第一 xff0c 第二阶段启动流程 第三阶段的详细流程
  • ESP32学习笔记22-TWAI-CAN

    22 TWAI CAN 22 1概述 22 1 1参考博客 ESP32 基于自带控制器实现CAN总线通信 上 知乎 zhihu com ESP32 基于自带控制器实现CAN总线通信 下 知乎 zhihu com 22 1 2 ESP32 T
  • Python str和bytes的相互转换

    str0 61 39 abc 39 a 61 bytes str0 39 utf 8 39 print type str0 str0 print type a a print 39 39 c 61 bytes 97 98 99 100 pr
  • wxpython 基本的控件 (按钮)

    在wxPython 中有很多不同类型的按钮 这一节 xff0c 我们将讨论文本按钮 位图按钮 开关按钮 xff08 toggle buttons xff09 和通用 xff08 generic xff09 按钮 如何生成一个按钮 xff1f
  • FreeRTOS系列|处理器利用率

    处理器利用率 1 处理器利用率统计的作用 处理器利用率其实就是系统运行的程序占用的CPU资源 xff0c 表示机器在某段时间程序运行的情况 xff0c 如果这段时间中 xff0c 程序一直在占用CPU的使用权 xff0c 那么可以认为CPU
  • QT 多线程使用QTcpSocket

    本人亲测使用moveToThread xff08 xff09 的方式可以 xff1b 不存在报错 xff0c 警告 include 34 widget h 34 include 34 ui widget h 34 Widget Widget
  • ESP8266天猫精灵接入流程

    Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey对应的设备若需要更换接入的设备类型 xf
  • 存储器的分类

    目录 01 ROM 02 非易失性RAM 2 1原理 2 2发展 2 3 摩尔定律 03 易失性RAM 3 1原理 3 2发展 3 3总结 04 总结 储器类型有很多 xff0c 常见的有ROM xff08 Read onlymemory只
  • RT - thread学习(一)

    目录 一 RT thread介绍 二 RT thread移植 首先我们先在官网获取 编辑 对无关的文件进行剪裁 剪裁后的内核文件移植到sdk文件 配置内核文件 一 RT thread介绍 rt thread是国产的一款开源的实时操作系统 这
  • 机器学习基本概念

    文章目录 深度学习和机器学习NLP xff08 Natural language processing xff09 Confusion Matrix 混淆矩阵ROC xff08 Receiver Operator Characteristi
  • ROS Kinetic中OpenCV使用

    ROS Kinetic中OpenCV使用 本文主要记录了ROS Kinetic中OpenCV的使用 xff0c Kinetic完全安装中本身自带了Opencv3 3 1 xff0c 因此在ROS中可以直接用ROS自带的Opencv3 3 1
  • ROS下gazebo不能加载willowgarage世界

    在打开gazebo ros打开williowgarage的时候 xff0c 能够找到willowgarage world的文件 xff0c 但是gazebo不能够加载这个模型 xff0c 主要原因是gazebo的model里面并没有mode
  • Mac OS下安装串口调试工具minicom

    最近在做一个Mac下的ssh调试工具 xff0c 但是出现了一点问题 后来发现居然Mac下有串口调试工具可以用 xff0c 所以果断换串口了 xff0c 是普通PL2303芯片的usb转串口线 接下来说下简单的安装步骤吧 我是勤劳的搬砖工
  • Eclipse等IDE配置Anaconda/Python3开发环境(win10_x64)

    分诊台 正所谓 洞庭揽物 xff0c 各有所怀 xff0c 博客点击 xff0c 也是各有所需 为了能让读者节约时间 xff0c 本小百姓 xff0c 写博客时尽力将博客内容各部分内容解耦 xff0c 但仍保持一定的连贯性 xff0c 并参
  • Linux(树莓派)系统中判断WiFi是否连接上路由器的方法

    之前 xff08 https blog csdn net u010299133 article details 105823339 xff09 介绍过在Linux系统中使用wpa supplicant连接到指定的WiFi路由器的方法 xff

随机推荐

  • FreeRTOS系列|任务相关API函数

    任务相关API函数 1 任务相关API函数 FreeRTOS中有很多与任务相关的API函数 xff0c 大多数是辅助函数 下表是这些与任务相关的API函数功能和描述简介 函数名功能描述uxTaskPriorityGet 查询某个任务的优先级
  • 无人机通信协议:MavLink协议使用

    mavlink的数据封装的结构体以及封装解析的函数都在mavlink代码库中的头文件中 主要的结构体 xff1a E mavlink mavlink include v1 0 mavlink types h MAVPACKED typede
  • 【计算机视觉】Lecture 16:平面单应变换

    动机 xff1a 在平面上的点 回顾 xff1a 正向投影 世界坐标系到相机坐标系的变换 透视矩阵方程 xff08 相机坐标系到成像坐标系 xff09 成像坐标系到像素坐标系 从成像坐标 xff08 x xff0c y xff09 到像素坐
  • 【计算机视觉】Lecture 20:八点法

    提醒 本质 基础矩阵 本质矩阵和基础矩阵都是 3x3 的矩阵 xff0c 用于 编码 两个视图的对极几何 动机 xff1a 给定一张图像中的一个点 xff0c 乘以本质 基础矩阵将告诉我们在第二个视图中沿着哪个极线搜索 本质 基础矩阵总结
  • 【计算机视觉】Lecture 23:光流估计

    流估计 主要概念 xff1a 亮度08好恒定方程 孔径问题 Lucas Kanade算法 回顾 xff1a 由于自身运动产生的场 流 xff08 Flow xff09 xff1a 旋转分量不依赖于场景结构 平移分量随场景 Z 值的变化而变化
  • 【计算机视觉】Lecture 24:视频变化检测

    视频基础 每秒30帧 每一幅图像的处理时间不会太多 因此 xff0c 实时算法往往非常简单 视频图像的主要特征之一是帧间的时间一致性 在1 30秒内帧间变化不大 xff01 检测移动的对象 假设 xff1a 移动的对象是非常重要的 xff0
  • Eigen中基本和常用函数

    Eigen 中矩阵的定义 span class token macro property span class token directive keyword include span span class token string lt
  • 基于四元数的存在外点Wahba问题的可证明最优解

    论文地址 论文视频 文章导读 为什么这次要解读这篇文章 xff1f 因为上次文章 xff08 详见 TEASER 快速且可证明的点云配准算法和代码解读 xff09 旋转求解部分就是用本文中的方法 xff0c 所以本文算是TEASER方法的前
  • 极端外点率下鲁棒配准的多项式时间解

    论文地址 论文视频 文章导读 为什么要解读这篇文章 xff1f 因为之前接连介绍该作者的两个工作 xff0c TEASER 快速且可证明的点云配准算法和代码解读 和 基于四元数的存在外点Wahba问题的可证明最优解 xff0c 前者的未知有
  • 基于拉格朗日对偶的凸全局三维配准

    论文地址 文章导读 最近自己的工作有借鉴这篇文章中用到的拉格朗日对偶 xff0c 然后就细读了文章的内容并且分析了对应的代码 拉格朗日对偶属于凸优化的范畴 xff0c 详细的定义和理论可以在 Convex optimization 一书中进
  • PX4的软件在环仿真

    一 Linux ROS Nodes单机仿真 1 安装ROS Kinetic xff08 参考http wiki ros org kinetic Installation Ubuntu xff09 1 1 添加软件源 sudo sh c ec
  • 让STM32CubeMX带你飞,菜鸟秒变STM32高手

    让STM32CubeMX带你飞 xff0c 菜鸟秒变STM32高手 STM32CubeMX是ST意法半导体近几年来大力推荐的STM32芯片图形化配置工具 xff0c 允许用户使用图形化向导生成C 初始化代码 xff0c 可以大大减轻开发工作
  • Release file for http://xxx/ubuntu/dists/bionic-updates/InRelease is not valid yet报错解决

    参考 https blog 51cto com 5437315 2420097 中说明的原因 原因 xff1a 系统时间与网络时间 xff08 仓库 xff09 的不同导致更新错误 按照这个原因解释 xff0c 我查看了自己虚拟机内ubun
  • 如何在keil官网上下载 STM32包 pack

    https www 360kuai com pc 990a8ec633cf2109c cota 61 4 amp tj url 61 xz amp sign 61 360 57c3bbd1 amp refer scene 61 so 1
  • Makefile学习笔记系列1:一个简单的Makefile

    开启Makefile系列学习前 xff0c 先来个简单的 xff0c 没有子目录结构的例子 xff0c 只有一个makefile文件 目录结构 xff1a Makefile代码 xff1a XX 61 g 43 43 CFLAGS 61 g
  • PID控制算法的C语言实现

    PID控制算法的C语言实现一 PID算法原理 最近两天在考虑一般控制算法的C语言实现问题 xff0c 发现网络上尚没有一套完整的比较体系的讲解 于是总结了几天 xff0c 整理一套思路分享给大家 在工业应用中PID及其衍生算法是应用最广泛的
  • pageCache

    写在前面 在开始正式的讨论前 xff0c 我先抛出几个问题 xff1a 谈到磁盘时 xff0c 常说的HDD磁盘和SSD磁盘最大的区别是什么 xff1f 这些差异会影响我们的系统设计吗 xff1f 单线程写文件有点慢 xff0c 那多开几个
  • 基于Python高光谱遥感影像处理实例

    前言 在写波段配准相关代码时经常需要用到tif影像的波段合成和分解 xff0c 虽然可以用ENVI才处理 xff0c 但是每次都要打开再设置一些参数有些麻烦 xff0c 所以本着 独立自主 自力更生 的原则就写了些脚本来处理这个需求 又写了
  • 基于SIFT的图像Matlab拼接教程

    前言 图像拼接技术 xff0c 将普通图像或视频图像进行无缝拼接 xff0c 得到超宽视角甚至360度的全景图 xff0c 这样就可以用普通数码相机实现场面宏大的景物拍摄 利用计算机进行匹配 xff0c 将多幅具有重叠关系的图像拼合成为一幅
  • PERSIANN 降雨数据使用教程

    一 前言 PERSIANN xff0c 使用人工神经网络从遥感信息中估算降水 xff0c 是一种基于卫星的降水检索算法 xff0c 可提供近乎实时的降雨信息 该算法使用来自全球地球同步卫星的红外 IR 卫星数据作为降水信息的主要来源 红外图