.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;