如何访问在C ++ .HGT SRTM文件? [英] How do I access .HGT SRTM files in C++?
本文介绍了如何访问在C ++ .HGT SRTM文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面是与该文件的一个很好的说明这一议题的类似的问题:
我是相当新的编程和一般我迄今所作的努力是非常有限的。我的最终目标是访问高程数据,并存储在一个二维数组为方便。我一直试图在同一时间读取该文件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屋!
查看全文