如何访问在C ++ .HGT SRTM文件? [英] How do I access .HGT SRTM files in C++?

查看:456
本文介绍了如何访问在C ++ .HGT SRTM文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是与该文件的一个很好的说明这一议题的类似的问题:

如何阅读NASA .hgt二进制文件

我是相当新的编程和一般我迄今所作的努力是非常有限的。我的最终目标是访问高程数据,并存储在一个二维数组为方便。我一直试图在同一时间读取该文件2个字节,因为已经建议,但我不知道下一步该怎么做。以下是我到目前为止有:

 的#include<&iostream的GT;
    #包括LT&;&的fstream GT;    使用命名空间std;    诠释的main()
    {
        :: ifstream的大小pos_type;
        字符* memblock;        ifstream的文件(N34W119.hgt的ios ::在| IOS ::二进制| IOS :: ATE);        如果(file.is_open())
        {
            大小= 2;
            memblock =新的char [大小]            file.seekg(0,内部监督办公室::求);            file.read(memblock,大小);            //我不知道下一步该怎么做
            file.close();
        }
        返回0;
    }

感谢您的帮助!


解决方案

  // SRTM_version 1201或3601
INT高[SRTM_version] [SRTM_version];
对于(INT R = 0;为r SRTM_version; R ++){
   对于(INT C = 0;℃下SRTM_verision; C ++){
      高度[R] [C] =(memblock [0]<< 8)| memblock [1];
   }
}

Here is a similar question on the topic with a good description of the file:

how to read NASA .hgt binary files

I am fairly new to programming in general and my efforts thus far have been very limited. My ultimate goal is to access the elevation data and store it in a 2D array for easy access. I have been trying to read the file 2 bytes at a time, as has been suggested, but I don't know what to do next. Here is what I've got so far:

    #include <iostream>
    #include <fstream>

    using namespace std;

    int main () 
    {
        ifstream::pos_type size;
        char * memblock;

        ifstream file ("N34W119.hgt", ios::in|ios::binary|ios::ate);

        if (file.is_open())
        {
            size = 2; 
            memblock = new char [size];

            file.seekg (0, ios::beg);

            file.read (memblock, size);

            //I don't know what to do next




            file.close();
        }
        return 0;
    }

Thanks for any help!

解决方案

// SRTM_version 1201 or 3601 
int height[SRTM_version][SRTM_version]; 
for ( int r = 0; r < SRTM_version ; r++ ) {
   for ( int c = 0 ; c < SRTM_verision; c++ ) {
      height[r][c] = (memblock[0] << 8) | memblock[1];  
   }
}

这篇关于如何访问在C ++ .HGT SRTM文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆