mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-06 12:34:24 +00:00
Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run: git remote add om-historic [om-historic.git repo url] git fetch --tags om-historic git replace squashed-history historic-commits
This commit is contained in:
46
docs/feature_structure.txt
Normal file
46
docs/feature_structure.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
1-й байт:
|
||||
0. кол-во типов (1-8, пишем 0-7, 3 бита)
|
||||
3. имя
|
||||
4. слой
|
||||
5, 6. - тип геометрии (точка = 00, линия = 01, площадной = 10)
|
||||
7. бит присутствия дополнительной информации:
|
||||
- точка - ранг (1 байт как логарифм населения по основанию 1.1);
|
||||
- линейный - № дороги (строка);
|
||||
- площадной - № дома (строка, оптимизированная для хранения двузначного числа);
|
||||
|
||||
* пишем типы, имя, слой, дополнительную информацию, точку (для точечного типа)
|
||||
|
||||
1 или 2 байта следующего заголовка (только для линейного и\или площадного объекта):
|
||||
* 4 бита кол-ва внутренних точек для линейного объекта:
|
||||
- 0 - геометрия вынесена, идем читать маску смещений и смещения;
|
||||
- 2 - 0 байт на маску упрощения;
|
||||
- 3-6 - 1 байт на маску упрощения;
|
||||
- 7-10 - 2 бму;
|
||||
- 11-14 - 3 бму;
|
||||
* 4 бита кол-ва внутренних треугольников для площадного объекта:
|
||||
- 0 - геометрия вынесена, идем читать маску смещений и смещения;
|
||||
- >0 - кол-во треугольников одного стрипа (для нескольких стрипов геометрия выносится);
|
||||
|
||||
* по 4 бита для маски смещений для линейного и площадного объекта.
|
||||
Маска смещений опряделяет наличие вынесенной геометрии для i-го масштабного ряда (из 4-х по соотв. биту).
|
||||
|
||||
Эти 2 байта актуально могут быть расположены в одном, когда объект одного типа или геометрия не вынесена.
|
||||
Реально это будет 2 байта когда объект сразу линейный и площадной и у него вынесена геометрия.
|
||||
|
||||
Следующие байты:
|
||||
* пишем геометрию ...
|
||||
- маска упрощения для линейного объекта (1-3 байта):
|
||||
Маска упрощения в 1 байт кодирует видимость 4-х точек в 4-х масштабных рядах (по 2 бита), т.е.
|
||||
равна значению масштабного ряда, с которого точка уже видна.
|
||||
- массив точек геометрии (треугольников стрипа) по извесному количеству VarInt64
|
||||
* ... или пишем массив смещений на вынесенную геометрию (количество берем из маски смещений)
|
||||
|
||||
|
||||
Вынесенная геометрия для масштаба представляет собой блок:
|
||||
- размер геометрии в байтах
|
||||
- сериализованные VarInt64 по кол-ву байт
|
||||
|
||||
Для линейного объекта они представляют собой массив точек.
|
||||
Для площадного представляют собой следующие последовательности:
|
||||
- количество точек с стрипе
|
||||
- сам стрип (массив точек)
|
||||
Reference in New Issue
Block a user