diff options
author | Alex Zolotarev <alex@maps.me> | 2015-09-11 08:10:01 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 03:04:36 +0300 |
commit | 2295214260548a3aeb59e5ee8c0c4042b19a6a26 (patch) | |
tree | 50f8e722fea26d3a8a6b8f49a36438d1d24e2819 /docs/feature_structure.txt | |
parent | c536dc76ca6522b41a4758676fa40996e707b74b (diff) |
Renamed/moved old stuff.
Diffstat (limited to 'docs/feature_structure.txt')
-rw-r--r-- | docs/feature_structure.txt | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/docs/feature_structure.txt b/docs/feature_structure.txt new file mode 100644 index 0000000000..e882d27e89 --- /dev/null +++ b/docs/feature_structure.txt @@ -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 по кол-ву байт + +Для линейного объекта они представляют собой массив точек. +Для площадного представляют собой следующие последовательности: +- количество точек с стрипе +- сам стрип (массив точек) |