zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    1093 Count PAT's(25 分)
    1089 Insert or Merge(25 分)
    1088 Rational Arithmetic(20 分)
    1081 Rational Sum(20 分)
    1069 The Black Hole of Numbers(20 分)
    1059 Prime Factors(25 分)
    1050 String Subtraction (20)
    根据生日计算员工年龄
    动态获取当前日期和时间
    对计数结果进行4舍5入
  • 原文地址:https://www.cnblogs.com/HandyLi/p/13275124.html
Copyright © 2011-2022 走看看