首页 > 编程语言 >遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL

遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL

时间:2023-02-25 11:07:11浏览次数:50  
标签:栅格 python EXCEL write 栅格数据 sheet1 tif ds


大部分我们处理的降水、气温等栅格数据的格式是nc形式,需要我们将他转换成栅格数据并导入至Arcgis中,进行下一步操作。

遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL_arcgis


之后我们根据自己的研究区进行裁剪【Spatial Analyst 工具-提取分析-按掩膜提取】

遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL_栅格_02


下面我们将裁剪好的研究区进行栅格转点【转换工具-由栅格转出-栅格转点】

遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL_excel_03


遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL_arcgis_04


转好之后的数据我们就可以拿来用了,下面我们通过python代码实现快速的栅格属性导出至EXCEL表中。

代码如下:

from osgeo import ogr
import os, sys
from osgeo import gdal
from osgeo.gdalconst import *
import csv
import xlwt

inputSHP = r'E:\CN\RasterT_tif1.shp' #点数据文件
InputRasterFolder = r'E:\CN\train' #放栅格数据的文件夹
# 设置Excel编码
file = xlwt.Workbook('encoding = utf-8')
# 创建sheet工作表
sheet1 = file.add_sheet('sheet1', cell_overwrite_ok=True)
#改变工作空间
#############获取矢量点位的经纬度
#设置driver
driver = ogr.GetDriverByName('ESRI Shapefile')
#打开矢量
ds = driver.Open(inputSHP, 0)
#获取图层
layer = ds.GetLayer()

#获取要素及要素地理位置
xValues = []
yValues = []
feature = layer.GetNextFeature()
while feature:
geometry = feature.GetGeometryRef()
x = geometry.GetX()
y = geometry.GetY()
xValues.append(x)
yValues.append(y)
feature = layer.GetNextFeature()

#############获取点位所在像元的栅格值
#读取栅格
#获取注册类
#打开栅格数据

input_folder_list = os.listdir(InputRasterFolder) #读取文件夹里所有文件
tif_files = list() #创建一个只装tif格式的列表
for filename in input_folder_list: #遍历
if os.path.splitext(filename)[1] == '.tif': #不管文件名里面有多少个tif,都只认最后一个tif
tif_files.append(filename) #将文件夹里的tif文件加入只有tif的列表
print(tif_files)
sheet1.write(0, 0, "Lon") #excel表的第1列为经度
sheet1.write(0, 1, "Lat") #excel表的第2列为纬度

for i in range(0, len(tif_files)): #遍历tif
sheet1.write(0, i + 2, filename) #在表格第一行设置列名
ds = gdal.Open(InputRasterFolder + '\\' + tif_files[i], GA_ReadOnly)
#获取行列、波段
rows = ds.RasterYSize
cols = ds.RasterXSize
bands = ds.RasterCount
#获取放射变换信息
transform = ds.GetGeoTransform()
xOrigin = transform[0]
yOrigin = transform[3]
pixelWidth = transform[1]
pixelHeight = transform[5]
#
values = []
for j in range(len(xValues)): #遍历所有点
x = xValues[j]
y = yValues[j]
#获取点位所在栅格的位置
xOffset = int((x - xOrigin) / pixelWidth)
yOffset = int((y - yOrigin) / pixelHeight)
band = ds.GetRasterBand(1) #读取影像
data = band.ReadAsArray(xOffset, yOffset, 1,
1) #读出从(xoffset,yoffset)开始,大小为(xsize,ysize)的矩阵
value = data[0, 0] * 0.01 #乘以参数,这个根据自己的数据情况做出修改
#将数据经纬度和对应栅格数值写入excel表
sheet1.write(j + 1, 0, x) #第j+1行,第1列
sheet1.write(j + 1, 1, y) #第j+1行,第2列
sheet1.write(j + 1, i + 2, value)

file.save(r'E:\CN\RESULT\pointToraster.xls') #保存表格

print("OK")

遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL_excel_05


遥感数据机器学习的准备工作:python将栅格数据提取至EXCEL_excel_06


标签:栅格,python,EXCEL,write,栅格数据,sheet1,tif,ds
From: https://blog.51cto.com/u_14682436/6084939

相关文章

  • python命令行里\什么意思?
    代表一行没写完接着写的意思,否则按回车就直接执行了。比如运行monodepth2的时候写成这样:pythontrain.py--model_namestereo_model\--frame_ids0--use_stereo--spli......
  • Python练习--简单习题(也是一看就能够写出来的代码)
    Python计算列表数字的和数字范围内的所有偶数(append)移除列表中的多个元素(remove)如何实现对列表的去重如何对简单列表进行排序Python实现学生的排序11)......
  • win7安装python3
    win7安装python3python官网显示python3.9以上已不支持win7,所以找一下python3.8NotethatPython3.9+cannotbeusedonWindows7orearlier.python3.8提供安装包的......
  • Python常见面试题006 类方法、类实例方法、静态方法有何区别?
    006.Python中类方法、类实例方法、静态方法有何区别?全部放一个里面篇幅过大了,就拆分成1个个发布示例代码classHuman:def__init__(self,name):self.......
  • Python调用chatgpt api
    前提:要有chatgpt账号,不会注册的关注抖音:21402780125,有免费教程!! 要在Python中调用ChatGPTAPI,您可以使用以下步骤:首先,安装Python的HTTP客户端库,例如requests......
  • 【1】部署环境python+pycharm+JDK+SDK+node安装+appium安装+Appium-python-client安装
                                               安装SDK检查命令 adbdoctor......
  • 我的Python程序太慢了。如何加快速度?
    如果你的Python程序太慢,你可以按照下面给出的提示和技巧-抽象化避免过度抽象,尤其是在微小函数或方法的形式下。抽象往往会产生间接性,并迫使解释器工作更多。如果间接寻......
  • Python 异步: 等待有时间限制的协程(12)
    我们可以使用asyncio.wait_for()函数等待asyncio任务或协程超时完成。如果在任务完成之前超时已过,任务将被取消。1.什么是Asynciowait_for()asyncio.wait_for()......
  • Python 之 WSGI、uWSGI 和 uwsgi 介绍
    目录一、概述二、安装uwsgi模块1)配置pip源2)安装uwsgi模块三、示例演示(uWSGI+Nginx配置)1)安装nginx2)创建app.py文件3)创建uWSGI配置文件4)启动uWSGI5)配置Web服......
  • PythonGame-1 pygame
    为了引导小孩学习编程,选择他喜欢的我的世界素材1、安装python,目前最新版本python311.exehttps://www.python.org/https://www.python.org/ftp/python/3.11.2/python-3.1......