首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GDAL获取栅格数据各个像素对应的经纬度(Python版)

GDAL获取栅格数据各个像素对应的经纬度(Python版)

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-22 11:04:14
5.4K0
发布2019-01-22 11:04:14
举报

这里要使用的一个比较重要的函数是GetGeoTransform函数,GDAL官网的API中对GetGeoTransform的解释如下: CPLErr GDALDataset::GetGeoTransform ( double * padfTransform ) virtual Fetch the affine transformation coefficients.

Fetches the coefficients for transforming between pixel/line (P,L) raster space, and projection coordinates (Xp,Yp) space.

Xp = padfTransform[0] + P*padfTransform[1] + L*padfTransform[2];
Yp = padfTransform[3] + P*padfTransform[4] + L*padfTransform[5];

In a north up image, padfTransform[1] is the pixel width, and padfTransform[5] is the pixel height. The upper left corner of the upper left pixel is at position (padfTransform[0],padfTransform[3]).

The default transform is (0,1,0,0,0,1) and should be returned even when a CE_Failure error is returned, such as for formats that don’t support transformation to projection coordinates.

This method does the same thing as the C GDALGetGeoTransform() function.

Parameters padfTransform an existing six double buffer into which the transformation will be placed. Returns CE_None on success, or CE_Failure if no transform can be fetched. Reimplemented in GDALProxyPoolDataset, VRTDataset, GDALPamDataset, GDALProxyDataset, and GDALGeorefPamDataset.


我们将使用如下公式进行坐标的计算:

 Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)
 Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)
from osgeo import gdal

gdal.AllRegister()

filePath = '/home/theone/Data/GreatKhingan/DEM/Slope_GreatKhingan_500m.tif'
dataset = gdal.Open(filePath)

adfGeoTransform = dataset.GetGeoTransform()

# 左上角地理坐标
print(adfGeoTransform[0])
print(adfGeoTransform[3])

nXSize = dataset.RasterXSize #列数
nYSize = dataset.RasterYSize #行数

arrSlope = [] # 用于存储每个像素的(X,Y)坐标
for i in range(nYSize):
    row = []
    for j in range(nXSize):
        px = adfGeoTransform[0] + i * adfGeoTransform[1] + j * adfGeoTransform[2]
        py = adfGeoTransform[3] + i * adfGeoTransform[4] + j * adfGeoTransform[5]
        col = [px, py]
        row.append(col)
    arrSlope.append(row)

print(len(arrSlope))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年03月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档