我正在嘗試讀取存儲在HGT文件中的海拔數據。據我所知,他們可以讀作二進制文件。如何讀取C++中的HGT文件
我發現這個線程:
How do I access .HGT SRTM files in C++?
基礎上的帖子,我的示例代碼:
#include <iostream>
#include <fstream>
int main(int argc, const char * argv[])
{
std::ifstream::pos_type size;
char * memblock;
std::ifstream file ("N45W066.hgt", std::ios::in|std::ios::binary|std::ios::ate);
if (file.is_open())
{
size = 2;
memblock = new char [size];
file.seekg(0, std::ios::beg);
file.read(memblock, size);
int srtm_ver = 1201;
int height[1201][1021];
for (int i = 0; i<srtm_ver; ++i){
for (int j = 0; j < srtm_ver; ++j) {
height[i][j] = (memblock[0] << 8 | memblock[1]);
std::cout<<height[i][j]<<" ";
}
std::cout<<std::endl;
}
}
return 0;
}
第一次運行後,它給了我一串零,並沒有什麼else:| hgt文件很好,我用一個可以讀取幾種類型的地圖文件的應用程序進行測試,它包含我需要的高程數據。
您只從文件中讀取總共2個字節。您需要爲陣列中的每個位置讀取2個字節。數組大小的第二維中也有一個錯字。 – 2013-04-30 10:33:19
我在猜測同樣的事情,但你能幫我解讀整個文件嗎?或如何讀取特定的線/像素位置? – 2013-04-30 10:35:27