0

我有一个我试图在 Mapbox Studio 中显示的 GeoTIFF 文件,但它在反子午线(日期线)处显示有一条空白垂直线,并且光栅没有按应有的方式延伸到两极。GeoTIFF 文件是在 Python 中从 1440x721 的 RGB numpy 数组波段创建的,维度范围从 -180 到 180 度经度和 90 到 -90 度纬度。GeoTIFF 在 QGIS 中显示良好。

这是创建文件的代码片段:

driver = gdal.GetDriverByName("GTiff")
ds_out = driver.Create('gfs.t12z.pgrb2.0p25.spd_rgb_10.f012_EPSG_GRIB.tif', 1440, 721, 3, 
gdal.GDT_Byte)
ds_out.SetGeoTransform([-180.125, 0.25, 0, 90.125, 0, -0.25])
ds_out.SetProjection('GEOGCS["Coordinate System imported from GRIB file",DATUM["unknown",SPHEROID["Sphere",6371229,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]')
ds_out.GetRasterBand(1).WriteArray(red)
ds_out.GetRasterBand(2).WriteArray(green)
ds_out.GetRasterBand(3).WriteArray(blue)
ds_out.FlushCache()
ds_out = None

这是在 Mac OSX Preview 中显示的 GeoTIFF 图像:

在 Mac OSX Preview 中显示的 GeoTIFF 屏幕截图

以下是它在 Mapbox Studio 中的显示方式的两个视图:

Mapbox Studio 中显示的 GeoTIFF 屏幕截图已缩小

Mapbox Studio 中显示的 GeoTIFF 屏幕截图已放大

在上传到 Mapbox Studio 之前,我还尝试使用 gdalwarp 将投影更改为 EPSG:3857,但它仍然显示相同。

4

1 回答 1

1

我解决了这个问题。我将数组插值到 EPSG:3857 坐标系中,并将输出文件的投影设置为 EPSG:3857:

driver = gdal.GetDriverByName("GTiff")
ds_out = driver.Create('gfs.t12z.pgrb2.0p25.spd_rgb_10.f012_EPSG_3857.tif', 
x_size, x_size, 3, gdal.GDT_Byte)
cell_dim = 20037508.34 / 720.0
ds_out.SetGeoTransform([-20037508.34, cell_dim, 0, 20037508.34, 0, -cell_dim])
spatialReference = osr.SpatialReference()
spatialReference.ImportFromEPSG(3857)
ds_out.SetProjection(spatialReference.ExportToWkt())
ds_out.GetRasterBand(1).WriteArray(red)
ds_out.GetRasterBand(2).WriteArray(green)
ds_out.GetRasterBand(3).WriteArray(blue)
ds_out.FlushCache()
ds_out = None
ds_in = None
于 2020-04-30T23:44:39.643 回答