forked from organicmaps/organicmaps
Feature format specification.
This commit is contained in:
parent
86f85373c5
commit
05450b06ed
1 changed files with 43 additions and 0 deletions
43
docs/feature structure.txt
Normal file
43
docs/feature structure.txt
Normal file
|
@ -0,0 +1,43 @@
|
|||
1-й байт:
|
||||
0. кол-во типов (1-8, пишем 0-7, 3 бита)
|
||||
3. имя
|
||||
4. слой
|
||||
5. точка
|
||||
6. линия
|
||||
7. площадной
|
||||
|
||||
2-й и 3-й байт (только для линейного и\или площадного объекта):
|
||||
* 4 бита кол-ва внутренних точек для линейного объекта:
|
||||
- 0 - геометрия вынесена, идем читать маску смещений и смещения;
|
||||
- 2 - 0 байт на маску упрощения;
|
||||
- 3-6 - 1 байт на маску упрощения;
|
||||
- 7-10 - 2 бму;
|
||||
- 11-14 - 3 бму;
|
||||
* 4 бита кол-ва внутренних треугольников для площадного объекта:
|
||||
- 0 - геометрия вынесена, идем читать маску смещений и смещения;
|
||||
- >0 - кол-во треугольников одного стрипа (для нескольких стрипов геометрия выносится);
|
||||
|
||||
* по 4 бита для маски смещений для линейного и площадного объекта.
|
||||
Маска смещений опряделяет наличие вынесенной геометрии для i-го масштабного ряда (из 4-х по соотв. биту).
|
||||
|
||||
2-й и 3-й байт актуально могут быть расположены в одном байте, когда объект одного типа или геометрия не вынесена.
|
||||
Реально это будет 2 байта когда объект сразу линейный и площадной и у него вынесена геометрия.
|
||||
|
||||
Следующие байты:
|
||||
* пишем имя, слой, точка
|
||||
* пишем геометрию ...
|
||||
- маска упрощения для линейного объекта (1-3 байта):
|
||||
Маска упрощения в 1 байт кодирует видимость 4-х точек в 4-х масштабных рядах (по 2 бита), т.е.
|
||||
равна значению масштабного ряда, с которого точка уже видна.
|
||||
- массив точек геометрии (треугольников стрипа) по извесному количеству VarInt64
|
||||
* ... или пишем массив смещений на вынесенную геометрию (количество берем из маски смещений)
|
||||
|
||||
|
||||
Вынесенная геометрия для масштаба представляет собой блок:
|
||||
- размер геометрии в байтах
|
||||
- сериализованные VarInt64 по кол-ву байт
|
||||
|
||||
Для линейного объекта они представляют собой массив точек.
|
||||
Для площадного представляют собой следующие последовательности:
|
||||
- количество точек с стрипе
|
||||
- сам стрип (массив точек)
|
Loading…
Add table
Reference in a new issue