GeoTIFF软件生成

时间:2018-06-23 06:55:25

标签: gdal geotiff

我有一些关于一组点的高度的数据(例如,来自Google Elevation API)。有一项任务是将这些数据保存为GeoTIFF格式,然后在osgEarth(GDAL)中使用。如何才能做到这一点?哪种语言都没关系。

在Internet上进行快速搜索只会给我一个反问(How do I open geotiff images with gdal in python?)的答案

我将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

因此,我将使用python中的GDAL进行此操作(您也可以使用rasterio,它是gdal的不错包装,用于文件栅格文件处理)

您应该将数据放入一个numpy数组中,让我们将其称为some_nparray

然后创建tif数据集gtiffDriver.Create()。在这里,您可以提供文件名,图像的列数和行数,带数(此处为1)和数据类型的尺寸。在这里我说的是float32,但是byte,int16等也可以工作,具体取决于您的数据(您可以使用heigh_data_array.dtype对其进行检查)

接下来,您应该设置geotransform,它是有关角坐标和像素分辨率的信息,并且应该设置要使用的投影。这是通过dataset.SetGeoTransformdataset.SetProjection完成的。我认为,如何创建这些内容不在此问题的范围内。如果您不需要它,我想您甚至可以跳过该部分。

最后使用WriteArray将数组写入文件,然后关闭文件。

您的代码应如下所示。在这里,我使用约定,您应该提供以 some _ 为前缀的变量。

    from osgeo import gdal

    height_data_array = some_nparray

    gtiffDriver = gdal.GetDriverByName('GTiff')

    dataset = gtiffDriver.Create('result.tif', 
                                 height_data_array.shape[1], 
                                 height_data_array.shape[0], 
                                 1, 
                                 gdal.GDT_Float32)

    dataset.SetGeoTransform(some_geotrans)
    dataset.SetProjection(some_projection)

    dataset.GetRasterBand(1).WriteArray(height_data_array)
    dataset = None