澄清:我不知何故遗漏了关键方面:不使用os.system或子流程——只使用python API。
我正在尝试转换NOAA-GTX偏移网格的一部分,以便进行垂直基准转换,但并没有完全遵循如何使用python在GDAL中实现这一点。我想要一个网格(在本例中是一个水深属性网格,但它可能是一个geotif)并将其用作我想要做的模板。如果我能做得好,我有一种感觉,这将大大帮助人们利用这类数据。
这就是我所拥有的,绝对不起作用的东西。当我在生成的目标数据集(dst_ds)上运行gdalinfo时,它与源网格包不匹配。from osgeo import gdal, osr
bag = gdal.Open(bag_filename)
gtx = gdal.Open(gtx_filename)
bag_srs = osr.SpatialReference()
bag_srs.ImportFromWkt(bag.GetProjection())
vrt = gdal.AutoCreateWarpedVRT(gtx, None, bag_srs.ExportToWkt(), gdal.GRA_Bilinear, 0.125)
dst_ds = gdal.GetDriverByName('GTiff').Create(out_filename, bag.RasterXSize, bag.RasterYSize,
1, gdalconst.GDT_Float32)
dst_ds.SetProjection(bag_srs.ExportToWkt())
dst_ds.SetGeoTransform(vrt.GetGeoTransform())
def warp_progress(pct, message, user_data):
return 1
gdal.ReprojectImage(gtx, dst_ds, None, None, gdal.GRA_NearestNeighbour, 0, 0.125, warp_progress, None)
示例文件(但它们重叠但位于不同投影中的任意两个网格都可以):
命令行相当于我要做的:gdalwarp -tr 2 -2 -te 369179 4773093 372861 4775259 -of VRT -t_srs EPSG:2960 \
MENHMAgome01_8301/mllw.gtx mllw-2960-crop-resample.vrt
gdal_translate mllw-2960-crop-resample.{vrt,tif}