首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GeoTIFF软件生成

GeoTIFF软件生成
EN

Stack Overflow用户
提问于 2018-06-23 06:55:24
回答 1查看 148关注 0票数 1

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

在网上快速搜索只给了我反向问题(如何在python中使用gdal打开geotiff图像?)的答案。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 07:39:01

所以我会用python的GDAL来完成这个任务(您也可以使用雷斯特里欧,它是gdal的一个很好的包装器,用于文件栅格文件处理)

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

然后创建tif数据集gtiffDriver.Create()。在这里,您可以提供文件名、图像中列和行数的维度、带数(在这里1)和数据类型。这里我说了float32,但是字节、int16等也可以工作,这取决于您的数据(您可以用heigh_data_array.dtype检查它)

接下来,您应该设置地理转换,这是关于角坐标和像素分辨率的信息,您应该设置正在使用的投影。这是用dataset.SetGeoTransformdataset.SetProjection完成的。我认为,这些是如何产生的,不属于这个问题的范围。如果你不需要,我想你甚至可以跳过那部分。

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

你的代码应该是这样的。在这里,我使用以some_为前缀的变量应该由您提供的约定。

代码语言:javascript
复制
    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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50998732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档