高程值的二维数组生成tiff栅格文件格式

把一个含有高程值的二维数组保存为tiff栅格文件格式

在C#中,将含有高程值的二维数组(假设这些数组是从某种VCT格式或其他格式中获取的Grid数据)保存为带有坐标参考系统的TIFF栅格文件格式,你可以使用GDAL库。不过,需要注意的是,VCT本身并不是GDAL直接支持的一种格式,但我们可以假设你已经有了从VCT或其他格式中提取的高程数据和相应的坐标信息。

以下是一个简化的步骤和示例代码,说明如何使用GDAL在C#中将高程值的二维数组保存为带有坐标参考系统的TIFF文件:

安装GDAL.NET:首先,确保你的C#项目中已经安装了GDAL.NET NuGet包。
准备高程数据和坐标信息:你需要有一个二维数组来存储高程值,以及关于这些高程值如何映射到地理空间的信息(如坐标参考系统和地理变换)。
创建TIFF文件:使用GDAL的Driver来创建一个新的TIFF文件,并设置其坐标参考系统和地理变换。
写入高程数据:将高程数据写入TIFF文件的第一个波段。
保存并关闭文件。
以下是一个示例代码:

using OSGeo.GDAL;  
using OSGeo.OSR;  
using System;  
  
class Program  
{  
    static void Main(string[] args)  
    {  
        // 假设你有一个二维数组,代表高程值  
        float[,] heightData = new float[100, 100];  
        // ... 填充heightData数组 ...  
  
        // 坐标参考系统(CRS),这里以WGS 84为例  
        SpatialReference srs = new SpatialReference(null);  
        srs.ImportFromEPSG(4326); // WGS 84  
  
        // 创建TIFF文件  
        Driver driver = Gdal.GetDriverByName("GTiff");  
        string filename = "elevation.tif";  
        Dataset dataset = driver.CreateCopy(filename, null, 0, null, 100, 100, 1, DataType.GDT_Float32, null);  
  
        // 设置坐标参考系统  
        dataset.SetProjection(srs.ExportToWkt());  
  
        // 设置地理变换信息  
        // 假设每个像素代表1度(这只是一个示例,实际值应根据你的数据确定)  
        // 并且图像的左上角是(0, 90)(北极附近的某个点,注意Y坐标是向下的)  
        double[] adfGeoTransform = new double[6];  
        adfGeoTransform[0] = 0;    // 左上角x  
        adfGeoTransform[1] = 1;    // x像素大小  
        adfGeoTransform[2] = 0;    // x旋转(通常为0)  
        adfGeoTransform[3] = 90;   // 左上角y(注意:TIFF中的Y坐标是向下的)  
        adfGeoTransform[4] = 0;    // y旋转(通常为0)  
        adfGeoTransform[5] = -1;   // y像素大小(负值因为y坐标向下增加)  
        dataset.SetGeoTransform(adfGeoTransform);  
  
        // 写入高程数据到第一个波段  
        Band band = dataset.GetRasterBand(1);  
        band.WriteRaster(0, 0, 100, 100, heightData, 100, 100, 0, 0);  
  
        // 刷新并关闭Dataset  
        dataset.FlushCache();  
        dataset.Dispose();  
  
        Console.WriteLine("TIFF文件已保存,包含坐标参考系统。");  
    }  
}

注意:

上面的代码示例中,坐标变换信息(adfGeoTransform)和坐标参考系统(CRS)都是简化的。你需要根据你的实际数据来设置这些值。特别是,adfGeoTransform中的像素大小和偏移量应该反映你的高程数据的实际地理覆盖范围。
坐标参考系统(CRS)在这里被设置为WGS 84(EPSG:4326),但你应该使用与你的数据相匹配的CRS。
TIFF文件中的Y坐标是向下的,因此当你设置左上角Y坐标时,你需要注意这一点。
确保在不再需要Dataset对象时调用Dispose()方法来释放资源。

本blog地址:https://blog.csdn.net/hsg77

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 02:44:05       75 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 02:44:05       80 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 02:44:05       64 阅读
  4. Python语言-面向对象

    2024-07-17 02:44:05       75 阅读

热门阅读

  1. C#WPF DialogHost.Show 弹出对话框并返回数据

    2024-07-17 02:44:05       22 阅读
  2. QSFPDD光模块文档解析

    2024-07-17 02:44:05       22 阅读
  3. 【Python 项目】照片马赛克 - 3

    2024-07-17 02:44:05       25 阅读
  4. 如何衡量机器学习分类模型(python)

    2024-07-17 02:44:05       23 阅读
  5. Backend - Dockerfile 镜像档

    2024-07-17 02:44:05       25 阅读
  6. SQL进阶--条件分支

    2024-07-17 02:44:05       23 阅读
  7. workingset protection/detection on the anonymous LRU list

    2024-07-17 02:44:05       23 阅读
  8. WSGI 服务器教程:`write` 方法解析

    2024-07-17 02:44:05       24 阅读
  9. LeetCode 算法:组合总和 c++

    2024-07-17 02:44:05       24 阅读