• HGT高程数据文件格式解析


    .hgt文件

      存储在航天飞机雷达地形测绘任务( SRTM )格式的GIS数据文件,包含在美国航空航天局的太空任务拍摄的全球高程数据,最多可包含一个角秒的分辨率,用于分析地球的地形地貌和地形生成图像。

    在原始SRTM数据集由于空间任务的限制一些数据可能丢失,这些区域被称为“空隙”,通过内插方法确定“空隙”的高程值。例如,美国国家地理空间情报局(NGA )创作的“版本2”和“ 2.1版”的数据集,其中包括修改过的数据。因此,一些下载的HGT文件可能包括插数据。
    HGT文件被命名为经度和纬度坐标。例如, N00W177.hgt包含纬度一度( 00-01北)和经度的一度( 177-178西)的数据。

      

      HGT文件以16位有符号整数的二进制字节流存储,直接存储高程数据,没有文件头和压缩处理,每两个字节以空格分隔;文件大小固定2.75M,2,884,802 bytes ( = 1201 x 1201 x 2),读取时,一次读取3个char,前两个char分别存储了高程数据16位Int的前8位和后8位,按Big Endian高位存储;

    数据矩阵大小为1201*1201,无效值为:-32768。

    经纬度范围由hgt文件名称确定,如N34W119.hgt,表示北纬34-35,西经118-119的高程数据,S26W050.hgt表示南纬25-26,西经49-50的高程数据,数字为从南到北的最小,从西到东的最小。

     1 //关键代码 
     2 FILE *fd;
     3 char temp[20] = {0};
     4 int max = -32768;
     5 int min = 32768;
     6     fd = fopen("/home/user/data/S26W050.hgt", "r");
     7     while(!feof(fd)){
     8         fgets(temp, 3, fd);
     9         int ele = (temp[0] << 8) | ((temp[1]) & 0x00ff);
    10 
    11         if(ele > max)
    12             max = ele;
    13         if(ele < min)
    14             min = ele;
    15     }
    16     fclose(fd);
    17     std::cout << "MAX: " << max << "    MIN:" << min << "    rowNum:" << rowNum << std::endl;
  • 相关阅读:
    Web前端开发——HTML概述
    Web前端开发——概述
    [nowCoder] 两个不等长数组求第K大数
    [nowCoder] 两个长度相同有序数组的中位数
    [nowCoder] 完全二叉树结点数
    [nowCoder] 子数组最大乘积
    [nowCoder] 局部最小值位置
    [LeetCode] Binary Tree Right Side View
    [C/CPP系列知识] Type difference of character literals 和 bool in C and C++
    [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++
  • 原文地址:https://www.cnblogs.com/HandyLi/p/13275124.html
Copyright © 2020-2023  润新知