xkor, в каком формате храниш геодату в памяти?
Я использовал структуру в виде:
RGeoLayer = record
height: Smallint;
N, S, W, E: boolean;
end;
RGeoCell = record
layers: array of RGeoLayer;
end;
RGeoBlock = record
blockType: word;
cells: array of array of RGeoCell;
end;
var
blocks: array [0..255, 0..255] of RGeoBlock;
после загрузки блока с Гираном и окрестностями этот массив в памяти занял около 65МБ, это при том что если блок имеет фиксированную высоту (1 случай) я размерность массивов RGeoLayer и RGeoCell выставляю равной еденице. Неужели так много "потребляет" вспомогательная информация о размерностях массива?
Yegor, мой формат похож на офовский и явовский, но позволяет и хранить в компактном виде и загружать в программу моментально, просто загружаю файл в MemoryStream, и могу получить Z для любой точки региона ничего не распаковывая и не перебирая предыдущие точки.
в начале файла массив THeightTable = array[Byte,Byte] of Integer, в каждом элементе которого храниться либо высота простого блока 8х8, либо смещение массива высот этого блока и инфа многослойный ли он.
для геодаты гирана размер гдет 6 мегабайт получается, ну то есть примерна стока же сколько файл офф геодаты.
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Yegor, да я не занимался этим сгодик так что как был волновой так и стался, да и собсно не вижу смысла его менять, маршрут с площади гирана до любого выхода из города просчитывается гдет за 100мсек что вполне приелимо.
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Вот для прикола сделал вывод геодаты в 3D на OpenGL, пока что криво и обработан только первый слой. Думаю в боте по такому принципу можно сделать неплохую карту.
Вот для прикола сделал вывод геодаты в 3D на OpenGL, пока что криво и обработан только первый слой. Думаю в боте по такому принципу можно сделать неплохую карту.