python根据经纬度坐标提取具体像元值

文章目录


前言

在进行遥感定量反演建模之前,往往需要根据经纬度坐标点得到此位置的具体像元值。于是我就写了一个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的具体像元值,阁下需要的话拿去参考。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值