【发布时间】:2015-12-04 16:31:37
【问题描述】:
我想从 NASA SRTM 数据集 (http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/) 中获取某个纬度/经度对的高度。
作为初学者,我想从 HGT 文件中获取所有高度:
int totalPx = 1201; //3 degree
char buffer[2];
for (int i=0; i<totalPx; i++)
{
for (int j=0; j<totalPx; j++)
{
int pos = (i * totalPx + j) * 2;
m_openedFile.seek(pos); //m_openedFile is a Qt QFile
m_openedFile.read(buffer, 2);
short h = 0 | (buffer[0] << 8) | (buffer[1] << 0);
if (h < 0)
printf("%d", h);
}
}
这似乎适用于某些坐标(例如,高度值看起来很合理),但也有许多负高度值。如何正确读取 SRTM/HGT 文件?
问候,
【问题讨论】:
-
会不会低于海平面?
-
试试
buffer[0] | (buffer[1] << 8)。 -
感谢您为我指明正确的方向。问题是签名的字符。
ùnsigned char buffer[2];工作。
标签: c++ c file binaryfiles