Тема: Геодата
Показать сообщение отдельно
Старый 25.05.2010, 02:28   #4
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Prixmegently, тебя формат хранения геодаты птса или явы интересует?, они несколько разные (а у меня в боте 3й формат для ускоренной загрузки)

но у вех форматов общее что один регион (22_22 например в котором гиран) в игровых размерностях имет размер 32768х32768, этот регион поделён на 256х256 квадратиков размером 128х128 которые в свою очередь могут быть поделены (при неровной поверхности) ещё на 8х8 квадратиков 16х16.

формат используемый явой я пока не смотрел а на офе примерно такой:
18 байт хз чего, уже не помню, я не использую;
далее идёт матрица 256х256 блоков (записана столбцами, то есть блоки идут в порядке [0,0], [0,1] и т.д.);
первые 2 байта определяют тип блока (точнее количество высот в нём):
1. если они равны нулю то этот блок имеет фиксированную высоту, один слой и полностью проходим во всех направлениях, следующие 2 байта - SmallInt число определяющее высоту этого блока.
2. если они равны 64 то в этом блоке 64 квадратика (8х8) записанных в виде 64 высот, на каждую опять таки 2 байта, но тут высоты умножены на 2, а 4 младших бита определяют проходимость квадратика (возможность выйти из квадрата в направлениях N, S, W, E)
3. ну и наконец если число побольше 64 то мы имеем дело с многослойным блоком, делиться он однако опять таки на 64 квадратика, но на этот раз у каждого может быть более одной высоты (заданной как в предыдущем случае, то есть умноженная на два и имеет биты проходимости). Короче для чтения всего блока после чтения типа блока входим в цикл чтения квадратиков, которых 8 строк по 8 столбцов:
а) читаем два байта - это число слоёв/высот для текущего квадратика
б) читаем высоты количество которых только что узнали (как вы догадались опять таки 2 байта - SmallInt число)

Воть собсно и всё, сори что малость в кашу слил но чтот спать охота...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 5 спасибками от: