Python遥感开发之GDAL中按经纬度获取像元值

Python遥感开发之GDAL中按经纬度获取像元值

  • 1 ARCGIS中通过经纬度获取像元值
  • 2 使用代码获取像元值
  • 3 代码注意事项

前言:主要介绍通过经纬度使用GDAL获取遥感数据(tif)的像元值,会结合ARCGIS来说明使用GDAL获取像元值的一些注意事项。


1 ARCGIS中通过经纬度获取像元值

使用ARGSI中的工具输入经度:116.1921394和纬度:33.88007015 得到像元值为1
Python遥感开发之GDAL中按经纬度获取像元值_第1张图片

2 使用代码获取像元值

通过arcgis中的操作可以获取得到像元值,显然相当麻烦,这里介绍使用GDAL获取像元值,完整代码如下:

import os
from osgeo import gdal

def del_files(dir_path):
    for root, dirs, files in os.walk(dir_path, topdown=False):
        # 第一步:删除文件
        for name in files:
            os.remove(os.path.join(root, name))  # 删除文件
        # 第二步:删除空文件夹
        for name in dirs:
            os.rmdir(os.path.join(root, name)) # 删除一个空目录

def get_value_from_xy(file, minx, maxx, miny, maxy, temp):
    dataset = gdal.Open(file)
    outputSrtm = "./temp/temp"+temp #输出的临时缓存文件
    data = gdal.Translate(outputSrtm, srcDS = dataset, projWin=[minx, maxy, maxx, miny])
    data = data.ReadAsArray()
    data_list = data.flatten()#把数据一维展开
    return data_list

if __name__ == '__main__':
    x = 116.1921394 #经度
    y = 33.88007015 #纬度
    step = 0.001
    minx = x - step
    maxx = x + step
    miny = y - step
    maxy = y + step
    data_list = get_value_from_xy("HENAN_CLCD_v01_2021.tif", minx, maxx, miny, maxy, "clcd")
    print(data_list)
    del_files("./temp")

运行结果:
Python遥感开发之GDAL中按经纬度获取像元值_第2张图片

3 代码注意事项

其中代码中的step=0.001的时候,获取的直为[1],如果我们想以 经度:116.1921394和纬度:33.88007015 为中心获取周围几个的像元就要更改相应的step值,由于遥感影像的分辨率是250米,step=0.002时,获取四个像元值,更改后的完整代码如下:

import os
from osgeo import gdal

def del_files(dir_path):
    for root, dirs, files in os.walk(dir_path, topdown=False):
        # 第一步:删除文件
        for name in files:
            os.remove(os.path.join(root, name))  # 删除文件
        # 第二步:删除空文件夹
        for name in dirs:
            os.rmdir(os.path.join(root, name)) # 删除一个空目录

def get_value_from_xy(file, minx, maxx, miny, maxy, temp):
    dataset = gdal.Open(file)
    outputSrtm = "./temp/temp"+temp #输出的临时缓存文件
    data = gdal.Translate(outputSrtm, srcDS = dataset, projWin=[minx, maxy, maxx, miny])
    data = data.ReadAsArray()
    data_list = data.flatten()#把数据一维展开
    return data_list

if __name__ == '__main__':
    x = 116.1921394 #经度
    y = 33.88007015 #纬度
    # step = 0.001
    step = 0.002
    minx = x - step
    maxx = x + step
    miny = y - step
    maxy = y + step
    data_list = get_value_from_xy("HENAN_CLCD_v01_2021.tif", minx, maxx, miny, maxy, "clcd")
    print(data_list)
    del_files("./temp")

运行结果:
Python遥感开发之GDAL中按经纬度获取像元值_第3张图片

你可能感兴趣的:(Python图像遥感,GDAL开发,python遥感开发,python_gdal,GDAL经纬度值,经纬度获取像元值)