python 已知经纬度获取影像DN值或位置

基本上就是一个经纬度转影像坐标的一个操作

之前我用

xOrigin = geotransform[0] #-180
yOrigin = geotransform[3]  #90

这两个读取出来的分别就是经度和纬度,但是读取极投影为3413的影像时,读取出来的时投影坐标,因此在程序中多做了一步变换

from osgeo import gdal
import os
import pandas as pd
from datetime import datetime, timedelta
import rasterio
from rasterio.enums import Resampling
from rasterio.transform import from_origin
import numpy as np
# import rasterio
from rasterio.transform import from_origin
from shapely.geometry import Point
 
def get_location_data(lon,lat,tif_files):
    size=625 #12.5km中心半径
    f=tif_files
    # print(f)
    tif_name = os.path.basename(f).split('_')[0]
    raster: gdal.Dataset = gdal.Open(f)
    geotransform = raster.GetGeoTransform()
    #获取栅格影像的左上角起始坐标,像元大小
    xOrigin = geotransform[0] #-180
    yOrigin = geotransform[3]  #90
    pixelWidth = geotransform[1]
    pixelHeight = geotransform[5]
    print(pixelWidth,pixelHeight)
    from pyproj import Proj
    # 首先定义要转换的投影坐标系
    proj1 = Proj("epsg:3413")  
    # coord_x = lon
    # coord_y = lat
    coord_x,coord_y = proj1(lon,lat)
    #主要思路就是计算该坐标与该tif起始坐标差了多少行和列
    loc_x = int((float(coord_x) - xOrigin) / pixelWidth)
    loc_y = int((float(coord_y) - yOrigin) / pixelHeight)
    # print(loc_y)
    #知道了多少行和列,就直接读这个行列对应数像元的数值大小,并把读到的数值追加到data这个空数组里面
    # with rasterio.open(f) as src:
    # # 获取图像的地理转换信息
    #     transform = src.transform
    #     # 创建经纬度点的Shapely几何对象
    #     point = Point(lon, lat)
    
    #     # 将经纬度点转换为图像坐标
    #     lon, lat = point.x, point.y  # 重新赋值,确保点在图像范围内
    #     loc_x, loc_y = ~transform * (lon, lat)  # 逆变换,获取图像坐标
    
    
    
    
    num_columns = raster.RasterXSize
    num_rows = raster.RasterYSize
    if loc_x<0 or loc_y<0 or loc_x>=num_columns or loc_y>=num_rows:
        return '999',999
    
    data_value = raster.GetRasterBand(1).ReadAsArray(loc_x, loc_y, 1, 1)[0, 0]
    return data_value

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是一只白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值