【问题标题】:GeoTIFF software generationGeoTIFF 软件生成
【发布时间】:2018-06-23 06:55:24
【问题描述】:

我有一些关于一组点高度的数据(例如,来自 Google Elevation API)。有一项任务是以 GeoTIFF 格式保存这些数据,然后在 osgEarth (GDAL) 中使用。如何才能做到这一点?用什么语言并不重要。

在网上快速搜索了一下,只给了我反向问题的答案(How do I open geotiff images with gdal in python?

如果有任何帮助,我将不胜感激。

【问题讨论】:

    标签: gdal geotiff


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多