我有一些关于一组点的高度的数据(例如,来自Google海拔API)。有一项任务是以GeoTIFF格式保存此数据,然后在osgEarth中使用。这是如何做到的呢?用哪种语言并不重要。
在网上快速搜索只给了我反向问题(如何在python中使用gdal打开geotiff图像?)的答案。
如有任何帮助,我将不胜感激。
发布于 2018-06-26 07:39:01
所以我会用python的GDAL来完成这个任务(您也可以使用雷斯特里欧,它是gdal的一个很好的包装器,用于文件栅格文件处理)
您应该将数据放入一个numpy数组中,让我们将其命名为some_nparray。
然后创建tif数据集gtiffDriver.Create()。在这里,您可以提供文件名、图像中列和行数的维度、带数(在这里1)和数据类型。这里我说了float32,但是字节、int16等也可以工作,这取决于您的数据(您可以用heigh_data_array.dtype检查它)
接下来,您应该设置地理转换,这是关于角坐标和像素分辨率的信息,您应该设置正在使用的投影。这是用dataset.SetGeoTransform和dataset.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 = Nonehttps://stackoverflow.com/questions/50998732
复制相似问题