当前位置: 首页 > news >正文

使用python批量计算栅格像元值(像元总值等)

1. 单个栅格像元数值计算

import rasterio
from rasterio import plot
import numpy as np
from scipy.stats import mode# 打开TIF文件
with rasterio.open('path.tiff') as src:# 读取栅格数据data = src.read(1)  # 只读取第一个band# 计算总像元值total_pixel_value = np.sum(data)# 计算最大值max_value = np.max(data)# 计算最小值min_value = np.min(data)# 计算平均值mean_value = np.mean(data)# 计算中位数median_value = np.median(data)# 计算众数mode_value, _ = mode(data, axis=None)# 计算均方根误差(RMSE)# 假设你有一个参考值或者你想使用所有像元的平方和的平均值来计算RMSE# 这里我们使用整个数据集的平方和的平均值来近似计算RMSErmse = np.sqrt(np.mean(data**2))# 打印结果print(f"总像元值: {total_pixel_value}")print(f"最大值: {max_value}")print(f"最小值: {min_value}")print(f"平均值: {mean_value}")print(f"中位数: {median_value}")print(f"众数: {mode_value}")print(f"均方根误差 (RMSE): {rmse}")

2. 批量计算并写入csv

import rasterio
from rasterio import plot
import numpy as np
from scipy.stats import mode
import os
import csv# 指定要处理的TIF文件所在的目录
tif_directory = 'path_to_your_tif_directory'# 指定输出CSV文件的路径
output_csv_file = 'output.csv'# 定义要写入CSV文件的列名
column_names = ['Filename', 'Total Pixel Value', 'Max Value', 'Min Value', 'Mean Value', 'Median Value', 'Mode Value', 'RMSE']# 打开CSV文件进行写入
with open(output_csv_file, mode='w', newline='', encoding='utf-8') as csv_file:writer = csv.writer(csv_file)# 写入列名writer.writerow(column_names)# 遍历TIF文件列表for tif_file in os.listdir(tif_directory):if tif_file.endswith('.tiff'):# 构建完整的文件路径file_path = os.path.join(tif_directory, tif_file)# 打开TIF文件with rasterio.open(file_path) as src:# 读取栅格数据data = src.read(1)  # 只读取第一个band# 计算总像元值total_pixel_value = np.sum(data)# 计算最大值max_value = np.max(data)# 计算最小值min_value = np.min(data)# 计算平均值mean_value = np.mean(data)# 计算中位数median_value = np.median(data)# 计算众数mode_value, _ = mode(data, axis=None)# 计算均方根误差(RMSE) # 这里我们使用整个数据集的平方和的平均值来近似计算RMSErmse = np.sqrt(np.mean(data**2))# 写入CSV文件writer.writerow([tif_file, total_pixel_value, max_value, min_value, mean_value, median_value, mode_value, rmse])print(f"统计数据已写入 {output_csv_file}")

说明:在计算tif栅格像元值的时候需要注意tif的数值类型,整数还是浮点。
在计算6位数值时,python会自动转成8位byte,这会影响计算结果。


感谢阅读

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vulhub spring 远程命令执行漏洞(CVE-2016-4977)
  • 【ArcGIS Pro第一期】界面简介
  • Python开发学习之Python和Excel的数据实现互通
  • Vue 向标签中传入 this
  • 【Linux】进程控制(一)
  • 简单实用的php全新实物商城系统
  • 使用Ansible进行自动化运维
  • 期货赫兹量化-种群优化算法:进化策略,(μ,λ)-ES 和 (μ+λ)-ES
  • Mysql-数据库课程设计图书管理系统
  • HTML5中canvas绘图基础详解
  • strlen函数模拟实现(嵌套函数调用)
  • Elasticsearch倒排索引
  • 资料分析系统课-刘文超老师
  • ImportError: cannot import name ‘DglNodePropPredDataset‘ from ‘ogb.nodepropp
  • 超时重试与风险学习
  • Asm.js的简单介绍
  • gulp 教程
  • iOS 系统授权开发
  • jquery ajax学习笔记
  • JS题目及答案整理
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Spark RDD学习: aggregate函数
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 我建了一个叫Hello World的项目
  • 云大使推广中的常见热门问题
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (04)odoo视图操作
  • (二)PySpark3:SparkSQL编程
  • (附源码)php投票系统 毕业设计 121500
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (接口封装)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core跨平台微服务学习资源
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net分布式压力测试工具(Beetle.DT)
  • .NET微信公众号开发-2.0创建自定义菜单
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .NET值类型变量“活”在哪?
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .stream().map与.stream().flatMap的使用
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [24年新算法]NRBO-XGBoost回归+交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)