[英]How to get the value of lat long from a HDF file?
我正在尝试使用gdal从HDF 文件的子数据集中获取经度和纬度的值。 但我收到以下错误:
IndexError: index -62399 is out of bounds for axis 1 with size 4800
这是我的代码:
from osgeo import ogr, osr,gdal
hdf_file = gdal.Open("MOD13Q1.A2017321.h31v10.006.2017337222145.hdf")
subDatasets = hdf_file.GetSubDatasets()
val_dict = {}
#print subDatasets[0]
dataset = gdal.Open(subDatasets[1][0])
transf = dataset.GetGeoTransform()
success,transfInv = gdal.InvGeoTransform(transf)
ds = dataset.ReadAsArray()
#lon,lat = -17.586972, 139.158043
lat = -16.718853
lon = 142.645773
px, py = gdal.ApplyGeoTransform(transfInv, lon, lat)
value = ds[int(px),int(py)]
print value
谁能告诉我我在做什么错?
如果transf
数据集的地理变换( transf
),则可以看到坐标不是以纬度/经度(正弦)为单位。
因此,在应用地理变换以转换为像素坐标时,不应提供经度/纬度值。 这些值应与数据集在同一投影中。
例如,如果输入左上角的坐标,则结果将为(0,0):
mapx = transf[0]
mapy = transf[3]
px, py = gdal.ApplyGeoTransform(transfInv, mapx, mapy)
或对于右下角:
mapx = transf[0] + transf[1] * ds.shape[1]
mapy = transf[3] + transf[5] * ds.shape[0]
px, py = gdal.ApplyGeoTransform(transfInv, mapx, mapy)
结果为(4800,4800)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.