Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Zolotarev <alex@maps.me>2015-09-11 08:10:01 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 03:04:36 +0300
commit2295214260548a3aeb59e5ee8c0c4042b19a6a26 (patch)
tree50f8e722fea26d3a8a6b8f49a36438d1d24e2819 /docs/feature_structure.txt
parentc536dc76ca6522b41a4758676fa40996e707b74b (diff)
Renamed/moved old stuff.
Diffstat (limited to 'docs/feature_structure.txt')
-rw-r--r--docs/feature_structure.txt46
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 по кол-ву байт
+
+Для линейного объекта они представляют собой массив точек.
+Для площадного представляют собой следующие последовательности:
+- количество точек с стрипе
+- сам стрип (массив точек)