前言
在进行遥感定量反演建模之前,往往需要根据经纬度坐标点得到此位置的具体像元值。于是我就写了一个python程序来实现此功能,见下文。
使用步骤
1.引入库
代码如下:
import pandas as pd
from osgeo import gdal
2.处理代码
代码如下:
def read_tif(path):
"""读取tif影像"""
dataset = gdal.Open(path)
# 栅格矩阵的列数
im_width = dataset.RasterXSize
# 栅格矩阵的行数
im_height = dataset.RasterYSize
# 波段数
im_bands = dataset.RasterCount
im_geotrans = dataset.GetGeoTransform() # 获取仿射矩阵信息
im_proj = dataset.GetProjection() # 获取投影信息
arr = dataset.ReadAsArray()
del dataset
return im_width, im_height, im_geotrans, im_proj, arr
# 注意:
# 其中excel中有两列,分别为经度和纬度;tif必须是地理坐标系(为经纬度)
tif_path = r''
excel_path = r''
df = pd.read_excel(excel_path)
im_width, im_height, im_geotrans, im_proj, ARR = read_tif(tif_path)
LI = []
for i in range(df.shape[0]):
jd = df['经度'].values[i]
wd = df['纬度'].values[i]
i_ = int((wd - im_geotrans[3])/im_geotrans[3])
j_ = int((jd - im_geotrans[0])/im_geotrans[1])
L1_x = list(ARR[:,i_,j_])
LI.append(L1_x)
DF = pd.DataFrame(LI, column=['band' + str(i) for i in range(1, ARR.shape[0])])
总结
本文实现了根据经纬度提取tif的具体像元值,阁下需要的话拿去参考。