1. gdal读取TIFF

使用10米的u和v分量数据。u为正,表示西风,从西边吹来的风。v为正,表示南风,从南边吹来的风。

方法一:

# 读取TIFF
u_component_of_wind_10m_ = gdal.Open("./output_data/wind_speed.tif")
# u_component_of_wind_10m_ = gdal.Open("./data/u_component_of_wind_10m.tif")
u_component_of_wind_10m__col = u_component_of_wind_10m_.RasterXSize  # 列数 宽 经度范围
u_component_of_wind_10m__row = u_component_of_wind_10m_.RasterYSize  # 行数
print(u_component_of_wind_10m__col)
print(u_component_of_wind_10m__row)
# 获取TIFF波段数量
u_component_of_wind_10m__bands_count = u_component_of_wind_10m_.RasterCount
print(u_component_of_wind_10m__bands_count)# 转为numpy格式获取栅格像元值
u_component_of_wind_10m__data = u_component_of_wind_10m_.ReadAsArray()
print(u_component_of_wind_10m__data)# 读取投影
u_component_of_wind_10m__proj = u_component_of_wind_10m_.GetProjection()
print(u_component_of_wind_10m__proj)# 获取投影转换信息
u_component_of_wind_10m__geo = u_component_of_wind_10m_.GetGeoTransform()
print(u_component_of_wind_10m__geo)

方法二:

u_component_of_wind_10m = "./data/u_component_of_wind_10m.tif"
v_component_of_wind_10m = "./data/v_component_of_wind_10m.tif"# 获取TIFF信息
def readtif(filepath):dataset = gdal.Open(filepath)col = dataset.RasterXSize  # 获取TIFF的行列数row = dataset.RasterYSizegeotrans = dataset.GetGeoTransform()  # 获取投影转换信息仿射变换proj = dataset.GetProjection()  # 获取地图投影信息data = dataset.ReadAsArray()  # 获取栅格像元值# return [datasat,col, row, geotrans, proj, data]return dataset, data

2. 计算风速

# 定义一个函数将UV分量转换成风速和风向
def transUV(u, v):data_u = units.Quantity(u, 'm/s')data_v = units.Quantity(v, 'm/s')# data_dir = mpcalc.wind_direction(data_u, data_v)  # 风向data_speed = mpcalc.wind_speed(data_u, data_v, )  # 风速return np.array(data_speed)

3. gdal对风速重分类


# 计算获取风速的像素值
u_datasat, u_data = readtif(u_component_of_wind_10m)
v_datasat, v_data = readtif(v_component_of_wind_10m)
wind_speed_data = transUV(u_data, v_data)
print("wind_speed_data:\n", wind_speed_data)# 风速重分类
re_wind_speed = wind_speed_data
re_wind_speed[17.2 < re_wind_speed] = 31
re_wind_speed[(14.0 < re_wind_speed) & (re_wind_speed <= 17.2)] = 27
re_wind_speed[(10.9 < re_wind_speed) & (re_wind_speed <= 14.0)] = 23
re_wind_speed[(8.1 < re_wind_speed) & (re_wind_speed <= 10.9)] = 19
re_wind_speed[(5.6 < re_wind_speed) & (re_wind_speed <= 8.1)] = 15
re_wind_speed[(3.5 < re_wind_speed) & (re_wind_speed <= 5.6)] = 12
re_wind_speed[(1.5 < re_wind_speed) & (re_wind_speed <= 3.5)] = 8
re_wind_speed[re_wind_speed <= 1.5] = 4
print("re_wind_speed:\n", re_wind_speed)

4. gdal输出影像

# 输出影像
def wirte_tiff(dataset, im_data, path):im_proj = dataset.GetProjection()im_geo = dataset.GetGeoTransform()if len(im_data) == 3:im_bands, im_height, im_width = im_data.shapeelse:im_height, im_width = im_data.shapeim_bands = 1driver = gdal.GetDriverByName('GTiff')new_dataset = driver.Create(path, im_width, im_height, im_bands, gdal.GDT_Float64)if new_dataset is not None:new_dataset.SetGeoTransform(im_geo)new_dataset.SetProjection(im_proj)if im_bands == 1:new_dataset.GetRasterBand(1).WriteArray(im_data)else:for i in range(im_bands):new_dataset.GetRasterBand(i + 1).WriteArray(im_data[i])del new_dataset# 输出风速tiff数据
output_path = r"./output_data/wind_speed.tif"
wirte_tiff(u_datasat, wind_speed_data, output_path)

导出tiff在arcgis或envi查看即可

gdal读取TIFF数据计算风速相关推荐

  1. GDAL使用DEM数据计算山体阴影(Hillshade)

    零.        前言 说起Hillshade,其实就是模拟太阳光照射地形所引起的明暗对比,然后来对地形图进行渲染,使之看起来具有立体效果的一种方式,常用于地图的渲染,如表1所示,具体的可以参考文献 ...

  2. GDAL使用DEM数据计算地形指数

    零.        前言 本文是接上文<GDAL使用DEM数据计算坡度坡向>,还是一篇关于DEM计算地形指数的一篇文章.这里所要计算的地形指数主要包括以下三个指数:地形耐用指数(Terra ...

  3. python读取csv求平均数_python列表切片读取csv数据计算导购客单价.py

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. """ python列表切片读取csv数据计算导购客单价.p ...

  4. python读取fnl数据计算200-800km范围内的区域平均、散度、涡度实现grads函数

    之前的气象数据如从NCEP中下载的FNL数据一般都是采用Grads处理,但Grads的代码语言比较繁杂,而且一般只用来处理气象数据,所以逐渐都不维护了.作为新生代的python,可以用来解决很多,因此 ...

  5. Python遥感图像处理应用篇(十四):GDAL 读取多光谱数据为二维数组并存入csv文件

    1.使用数据 之前写过一遍文章是采用Arcgis读取多光谱数据为csv文件的,相对来说有一些麻烦,本文有个更简单一点的方法,使用python直接读取. 本文使用Landsat05数据,采用GEE下载的 ...

  6. python读取tiff数据_opencv-python读取tiff影像,并展示

    pencv-python可以读取各类图片,然后对图像进行处理,结合矩阵操作,可以非常方便的对图像进行各类操作,下面就展示一个简单的demo,用opencv-python读取图像并展示出来.Opencv ...

  7. GDAL使用DEM数据计算坡度坡向

    零.        前言 之前写过一个3×3的通用模板算子函数的博客<基于GDAL的一个通用的3×3模板函数>,网址:http://blog.csdn.net/liminlu0314/ar ...

  8. 【C++】GDAL读取HDF数据

    (45条消息) VS2019c++配置GDAL和HDF库新手入门_程程gg酱的博客-CSDN博客_gdal vs2019 (45条消息) 使用GDAL获取HDF等数据集中的图像_箜_Kong的博客-C ...

  9. 利用GDAL(python)读取Landsat8数据

    本人编写了一个利用GDAL读取Landsat8数据的代码,现在已经拥有了读取.真彩色.假彩色显示等功能.准备日后再进行扩展. 注意:路径是相对路径,使用需自行修改. 这个代码是将压缩包解压出来的数据的 ...

最新文章

  1. K8S - Kubernetes简介
  2. 我用python10年后,我发现学python必看这三本书!
  3. 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅消费
  4. 【GitLab】gitlab上配置webhook后,点击测试报错:Requests to the local network are not allowed...
  5. 模块说和神经网络学说_教师招聘中常见的5种脑机能学说
  6. endnote 参考文献加序号_EndNote在Word中插入文献不能自动生成编号 - 解决方案
  7. 域计算机开机默认用户,怎么实现让域账户开机自动登陆
  8. Windows VS c++复制文件到网络共享文件夹的实现
  9. bootstrap 滚动 进度条_bootstrap动态进度条怎么搞
  10. OpenCV 画圆circle、画椭圆ellipse
  11. type python django models_Python菜鸟之路:Django ModelForm的使用
  12. 如何使用fiddler 4进行手机模拟器抓包详细教程
  13. GBA模拟器 v1.8官方简体中文版
  14. 广东法院公开裁判文书超350万份
  15. checkbox全选、清除、反选
  16. 恭喜小S小姐姐落户买房
  17. 燃尽图 (Burn up and Burn down Chart)—介绍
  18. gnu stubs arch linux,编译Nachos源代码时出现错误“gnu/stubs-32.h:No such file or directory”...
  19. eclipse的常用操作
  20. std::shared_ptr 详解

热门文章

  1. 低功耗蓝牙(BLE)-- Architecture篇
  2. 2021年Cloudera公司的CDH与HDP均无法下载
  3. 结合人工智能、机器学习等热门科研技术的生物医药研发,进入发展新阶段。
  4. 红光光浴真的有用吗?#大健康#红光光浴#红光#种光光学
  5. Excel数据的分类汇总
  6. 8-Arm PEG-DBCO分子量决定外观性状,用于修饰生物分子
  7. 记录安装、配置并入门使用appium的过程
  8. php 5.3 版本for mac下载,PHP for Mac下载
  9. 纵横网络靶场社区 大工UDP协议
  10. 咸鱼带你学MySQL—MySQL的介绍