forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   hgt файлы и построение на их основе рельефа (http://forum.boolean.name/showthread.php?t=12118)

voron 05.03.2010 10:55

hgt файлы и построение на их основе рельефа
 
Доброго времени суток.
Я строю трехмерную карту, т.е. с отображением рельефа местности.
Данные высот беру с SRTM3 из *.hgt файлов.

Данные распространяются квадратами размером 1х1 градус, при максимальном доступном разрешение 3 арксекунды такой квадрат является матрицей размером 1201х1201 элементов (пикселей). Один дополнительный ряд (нижний) и одна колонка (правая) являются дублирующим и повторяется на соседней матрице.

Данные являются простым 16 битным растром (без заголовка), значение пиксела является высотой над уровнем моря в данной точке, пиксела также может принимать значение -32768, что соответствует значению no data (нет данных). Референц-эллипсоид данных - WGS84.

Название квадрата соответствует координатам его левого нижнего угла.

Например:
n45e136 /45 гр. с.ш., 136 гр.в.д

Для примера я построил район г. Эльбрус

Считываю таким образом

file_height=ReadFile("N43E042.hgt")
height=ReadByte(file_height)
x=0
y=0
While Not Eof(file_height)
height=ReadShort(file_height);

If (x>299) And (y>399) And (x<300+100) And (y<400+360) Then
hx=x-300
hy=y-400
nomer_vertex=hy*(razmer_x+1)+hx
x_vertex=VertexX(relief_surf,nomer_vertex)
z_vertex=VertexZ(relief_surf,nomer_vertex)
VertexCoords relief_surf,nomer_vertex,x_vertex,height,z_vertex
EndIf

При использовании OZI Explorer 3D получается нормальная карта Эльбруса, у меня же какая-та череда ущелий и возвышений, что неудивительно, данные считываются, например для
x=const y=1400, 1720, 1211, 2042, 1600 и т.д.

Может кто работал с этими файлами, как правильно осуществить считывание высот из них?

Жека 05.03.2010 11:49

Ответ: hgt файлы и построение на их основе рельефа
 
Спасибо тебе, написанное выглядит мощным, я так хочу проникнуть в суть сказанного!
Цитата:

Сообщение от voron (Сообщение 140634)
как правильно осуществить считывание высот из них?

Как говаривали истинные капитаны: читать из файлов нужно в том порядке, в котором это предполагает структура читаемого файла.
Например, если записана "высота" в виде short'a со смещением в 500 байт от начала данных, то при чтении некоего short'a в позиции 500 тебе крайне желательно принять его за высоту.
А то, что файл hgt, а не wdt - редко играет хоть какую-то роль.

IGR 05.03.2010 12:51

Ответ: hgt файлы и построение на их основе рельефа
 
Когда то пытался построить карту Украины но не получилось !!

voron 05.03.2010 14:52

Re: hgt файлы и построение на их основе рельефа
 
Может кто строил уже. Описание формата я нашёл только такое (см. выше).

>А то, что файл hgt, а не wdt - редко играет хоть какую-то роль.

То, что hgt - это сразу бросается в глаза, как например jpg или b3d.

Randomize 08.03.2010 15:49

Ответ: hgt файлы и построение на их основе рельефа
 
Просветите неуча, вы о чём?

voron 09.03.2010 20:51

Re: hgt файлы и построение на их основе рельефа
 
Есть данные радарной съёмки по 80% земной поверхности. Я на их основе пытаюсь построить трёхмерное карту г. Эльбрус. Сам меш в принципе строится, но высоты я из файла считываю неправильно


Часовой пояс GMT +4, время: 19:00.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot