Python 从geotiff图像计算纬度和经度

Python 从geotiff图像计算纬度和经度,python,matplotlib,scipy,gdal,geotiff,Python,Matplotlib,Scipy,Gdal,Geotiff,如何从一幅geotiff图像中计算出每个块的平均纬度和平均经度,将其分割成常规块(例如,50×50像素) 输入数据仅为图像,例如从以下网站下载: 可以使用gdal将其打开到python中,如下所示: import gdal geotiff = gdal.Open ('land_shallow_topo_2048.tif') colum_numbers,row_numbers,band_numbers=geotiff.RasterXSize,

如何从一幅
geotiff
图像中计算出每个块的平均纬度和平均经度,将其分割成常规块(例如,50×50像素)

输入数据仅为图像,例如从以下网站下载:

可以使用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

看看这个问题:

由于您的图像已在lat-lon坐标中,以下值应在lat-lon坐标中:

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
50x50长方体的中心距拐角处为
i
长方体行和
j
长方体列:

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

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

看看这个问题:

由于您的图像已在lat-lon坐标中,以下值应在lat-lon坐标中:

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
50x50长方体的中心距拐角处为
i
长方体行和
j
长方体列:

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

如果你使用其他坐标系,你可以通过从另一个类似的问题进行转换来获得类似的结果。

什么投影、坐标系等?@Mad物理学家这只是地理坐标系什么投影、坐标系等?@Mad物理学家这只是地理坐标系