RU:Kosmos Layering

From OpenStreetMap Wiki
Jump to navigation Jump to search

broom

Help (89606) - The Noun Project.svg

Kosmos рисует элементы OSM в определённом порядке. Этот порядок определяет, какой элемент будет находиться над остальными элементами. Элементы, нарисованные первыми, могут быть частично или полностью закрыты элементами, нарисованными позже.

Порядок элементов основан на ряде критериев, описанных ниже (в порядке уменьшения приоритета):

  1. Этап рисования, определяемый шаблоном.
  2. OSM уровень рисуемого элемента.
  3. Порядок правил в таблице правил.

Этапы рисования

Kosmos не может просто полагаться на обозначения уровня в OSM для обеспечения адекватного расположения элементов. Пример: Kosmos рисует прозрачное оттенение рельефа над такими объектами как леса, но дороги этим рельефом не накрываются. Другой пример: мы всегда хотим, чтобы надписи на карте рисовались над всеми элементами, независимо от обозначений их уровней в OSM.

Из-за всего этого, Kosmos, создавая карту, разделяет процесс на несколько этапов рисования:

  1. Фон1 - на этом этапе рисуются все земельные области (полигоны). Леса , реки, поля, спортивные площадки и прочее
  2. Фон2 - зарезервирован для прозрачных растров (рельеф, например)
  3. Инфраструктура - на этом этапе рисуются все линии, не являющиеся полигонами (дороги, каналы и прочее)
  4. Символы - на этом этапе рисуются все символы и значки
  5. Надписи - на этом этапе рисуются все тексты
  6. Легенда карты - для списка условных обозначений

Выбирая тип шаблона, который вы используете для определённого OSM элемента, вы говорите Kosmos, на каком этапе этот элемент будет нарисован. Сейчас соответствие шаблонов и этапов фиксировано, и вы не сможете указать Kosmos нарисовать леса поверх дорог. Однако, в новых версиях Kosmos, при необходимости, могут быть добавлены дополнительные этапы рисования. Так что я открыт для предложений на эту тему.

OSM уровни

Как показано выше, информация об уровнях в OSM (layer=*) не является высшим определяющим фактором того, что над чем будет нарисовано. Однако, OSM уровни, таки используются в Kosmos в рамках одного этапа рисования. Вот дорога, например, будет нарисована над рельсами, если указанный уровень дороги выше уровня рельс.

Опция шаблона TopLevel

Начиная с версии 1.12 Kosmos позволяет переопределять информацию об OSM уровне так, что шаблон будет рисоваться поверх остальных, не зависимо от его OSM уровня. Пример:

Имя правила Цели Селектор Шаблон Опции Комментарий
HighwayCycleway линия highway=cycleway Polyline (MinZoom=13, Color=#0202FE, DashStyle=Dash, Width=13:1;17:4, Options=TopLevel) EliminateSeams

будет рендерить велосипедные дороги над всеми стальными в рамках этапа рисования Инфраструктура.

Порядок правил

Если Kosmos встречает два элемента OSM, которые должны быть нарисованы на одном этапе, то порядок в таблице правил определит, кто из них будет нарисован первым. Пример: у нас есть две дороги, residential и primary. Обе они отмечены тегом layer=1. Если правило для рендеринга residential ближе к началу таблицы правил, то primary будет нарисована над residential (это важно, когда две дороги встречаются на перекрёстке). Вот почему необходимо сортировать правила рендеринга в таблице в порядке их "важности".