python - 从 geotiff 图像计算纬度和经度

标签 python matplotlib scipy gdal geotiff

如何从将 geotiff 图像分成常规 block (例如 50 x 50 像素)的图像中计算每个 block 的平均纬度和平均经度。

输入数据只是图像,例如从以下位置下载:http://eoimages.gsfc.nasa.gov/images/imagerecords/57000/57752/land_shallow_topo_2048.tif

可以使用 gdal 将其打开到 python 中,如下所示:

import gdal
geotiff = gdal.Open ('land_shallow_topo_2048.tif')
colum_numbers,row_numbers,band_numbers=geotiff.RasterXSize,
                                       geotiff.RasterYSize,geotiff.RasterCount
print (colum_numbers,row_numbers,band_numbers)
2048 1024 3

最佳答案

看看这个问题:Obtain Latitude and Longitude from a GeoTIFF File

由于您的图像已经采用经纬度坐标,因此以下值应采用经纬度坐标:

gt = geotiff.GetGeoTransform()
minx = gt[0]
miny = gt[3] + width*gt[4] + height*gt[5] 
maxx = gt[0] + width*gt[1] + height*gt[2]
maxy = gt[3]

现在像素的大小是:

latPxSz = (maxy - miny) / row_numbers
lonPxSz = (maxx - minx) / column_numbers

距离角点 i 个框行和 j 个框列的 50x50 框的中心是:

boxCenterLat = (i + 0.5) * 50 * latPxSz + miny
boxCenterLon = (j + 0.5) * 50 * lonPxSz + minx

如果您使用其他坐标系,则可以通过对其他类似问题进行转换来获得类似的结果。

关于python - 从 geotiff 图像计算纬度和经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370269/

相关文章:

python - 使用 scipysolve_bvp 求解边值问题(扩散 react 方程)

python - 图像处理方法

python - 求解隐式 ODE(微分代数方程 DAE)

python - 如果该行中的所有值都是假的,Pandas 会删除该行

python - 在 matplotlib 中注释子图可将图形缩放到最大轴

python - matplotlib.pyplot/pylab 在 isinteractive() 时不更新图,使用 ipython -pylab

python - 使用 python 绘制曲线而不是条形图

python - 从 scipy 矩阵中删除行

python - 如何在 Django 管理的数据库中找到每个项目的最新行?

python - python 如何知道需要通过 api.py 接口(interface) requests 模块?