Надписи в векторных листах

При создании векторных листов в эти листы включаются все надписи, которые разрешены в слоях карты. Однако возможности надписывания векторных листов представлены только частью тех возможностей, которые доступны в ArcGIS Pro. Свойства надписывания в ArcGIS Pro по мере возможности преобразуются в соответствующие параметры в спецификации векторных листов. ArcGIS Pro поддерживает два механизма надписывания, но Maplex Label Engine способен конвертировать большее число свойств, как указано ниже.

Классы надписей

В векторные листы можно конвертировать один или несколько классов надписей. Возможности размещения клиентов векторных листов ограничены по сравнению с механизмами надписывания в ArcGIS Pro. Например, если два класса надписей для точечного слоя разместят надписи в предпочтительном расположении вверху справа от надписи, то механизмы надписывания ArcGIS Pro переместят эти надписи так, что они обе будут видны.

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

Текстовый символ

Текстовый символ преобразуется в соответствующие свойства символов в спецификации векторных листов. Размеры шрифтов преобразуются из точек в пикселы. Шрифты преобразуются в оптимизированные представления в ресурсах векторного листа, а выноски преобразуются в спрайты. Для текстовых символов, использующих зависящие от масштабов размеры символов, остановки создаются для свойства "text-size". Если размер подписей ограничен диапазоном размеров, свойство "text-size" будет применено с остановками для получения вариаций размеров, основанных на значениях.

Ниже приведен пример текстовых символов:

"layout": {
  "text-font": ["Tahoma Bold"],
  "text-size": {
  "stops": [[5, 13.3333], [15, 48]]
  }
}

Свойства текстового символа Цвет символа гало и Размер гало преобразуются в "text-halo-color" и "text-halo-size". Свойства текстового символа Толщина контура символа гало и Цвет контура символа гало не поддерживаются в спецификации векторных листов и игнорируются.

К тексту надписей объекта применяются прописные или строчные буквы с учетом заданного регистра. Межбуквенный интервал преобразуется в "text-letter-spacing", а единицы измерения – в ems. Выносные линии в векторных листах не поддерживаются. Типы выноски с выносными линиями имеют только символ фона. Например, выноска имеет заданный цвет и контур, но выносная линия отсутствует.

Вертикальный текст с написанием справа налево с параметром Последовательность блоков конвертируется в режим написания текста со значением vertical. Этот параметр используется для вертикального размещения текста на азиатских языках. Только надписи, содержащие как минимум один символ из диапазона, поддерживающего вертикальное написание (например, символовCJK), могут быть расположены вертикально.

Следующие свойства текстовых символов не используются при создании векторных листов:

  • Свойства текстовых символов, такие как цвет и ширины рамки, подчеркивание, зачеркивание, малые прописные, положение, выравнивание по вертикали и горизонтали и тени
  • Свойства форматирования текстовых символов, такие как расстояние между словами, ширина букв, междустрочное расстояние, угол поворота, линеаж, кернинг, отображение глифов как геометрии, экстраполяция базовых линий, хинтовка глифа и режим совместимости
  • Свойства абзацев текстовых символов, такие как мягкие переносы, отступ первой строки, отступ до и после
  • Свойства интернационализации текстовых символов, такие как направление текста, ориентация глифа, язык региона и кодировка шрифта

Выражения надписи

Простые однострочные или расширенные выражения надписей в языках Arcade, VBScript, JScript и Python поддерживаются в векторных листах. Также поддерживаются запросы SQL, используемые для маркировки поднабора объектов на основе значения поля. Выражения надписей обрабатываются и сохраняются как значение свойства в векторных листах с именем свойства "_name". Если классов надписей несколько, то имя свойства будет содержать число, соответствующее порядковому номеру класса надписи – "_name1", "_name2" и т.д.

В векторных листах теги форматирования надписей не поддерживаются и удаляются из текста надписи.

Перенос по словам надписей (размещение надписей)

Надписи Maplex могут настраиваться так, что они будут размещаться динамически, в зависимости от количества символов, имеющихся в надписи, и с учетом доступного пространства на карте. Кроме того, надписи Maplex можно настроить на их принудительное размещение в зависимости от наличия в них заданных символов. Векторные листы не поддерживают динамическое размещение, а только принудительное. Процесс создания векторных листов использует принудительное размещение к тексту, написанному в соответствии со свойством имя надписываемого объекта.

Аббревиатура надписей

Надписи Maplex можно настроить для динамического сокращения в зависимости от текста в надписи и с учетом доступного свободного места на карте. Кроме того, записи словаря сокращений Maplex с помощью опции Перевод применяются вне зависимости от свободного места. Векторные листы не поддерживают динамическое сокращение, а только сокращения перевода. Процесс создания векторных листов использует сокращения перевода к тексту, написанному в соответствии со свойством имя надписываемого объекта.

Размещение надписи

Доступны следующие опции размещения надписи:

Размещение точек

Создание векторных листов устанавливает расположение надписи, "text-anchor", на основе по умолчанию применяемого расположения, заданного в свойствах размещения надписи. Если используется стиль фиксированного размещения в Maplex или стандартный механизм надписей, размещение будет соответствующим. При использовании стиля размещения "Best Position" в качестве местоположения в векторных листах будет указана позиция с наивысшим рангом. Надпись смещается относительно объекта с помощью свойства "text-offset", которое при размещении надписи учитывает размер символа и заданную величину смещения. Если к тексту применяется поворот, для свойства "text-rotate" будет задано значение поворота. Если текст повернут с использованием поля или выражения поворота, для свойства "text-rotate" устанавливается поле поворота плюс дополнительный поворот. Если параметры надписей карты настроены на поворот надписей при повороте карты, то этот параметр соблюдается для надписей точек с использованием свойства "text-rotation-alignment", заданного как "map", и свойства "text-keep-upright", заданного как false.

Ниже приведен пример, демонстрирующий свойства надписывания точечного слоя для текста, размещенного непосредственно над точкой (якорь внизу):

"id": "U.S. Cities",
"type": "symbol",
"source": "esri",
"source-layer": "U.S. Cities",
"layout": {
  "icon-image": "U.S. Cities",
  "icon-allow-overlap": true,
  "text-font": ["Tahoma Regular"],
  "text-size": 13.3333,
  "text-anchor": "bottom",
  "text-offset": [0, 0.065],
  "text-field": "{_name}",
  "text-optional": true
  }

Линейное размещение

Для линейных надписей в векторных листах возможно только обычное изогнутое или центральное горизонтальное размещение. Все другие стили линейного размещения будут преобразовываться в обычное изогнутое размещение. Размещения надписей на линиях со смещением преобразуются в векторные листы, если смещение ограничено одной стороной линии. Для перемещения текста на правильную сторону применяется значение смещения. Обратите внимание, что изогнутые надписи обычно размещаются как прямой текст, если данный сегмент прямой. В результате процесса создания векторных листов будут созданы вторичные линейные геометрии для плавного размещения. Вторичные точечные геометрии созданы для центрального горизонтального размещения.

Ниже приведен пример линейного размещения на линии:

"id": "U.S. National Transportation Atlas Interstate Highways/label/Class 1",
"type": "symbol",
"source": "esri",
"source-layer": "U.S. National Transportation Atlas Interstate Highways/label",
"layout": {
  "symbol-placement": "line",
  "symbol-spacing": 1000,
  "text-font": ["Tahoma Regular"],
  "text-size": 13.3333,
  "text-field": "{_name}",
  "text-optional": true
 }

Размещение для полигонов

Поддерживаются следующие размещения: изогнутое, горизонтальное, прямое и речное. Размещение для рек приводит к тому же результату, что и изогнутое. В процессе создания векторного листа для надписи будет создана вторичная геометрия, если необходимо, чтобы она соответствовала требуемому стилю размещения. Например, такие варианты размещения надписей, как По прямой внутри полигона и С изгибом внутри полигона, приводят к созданию точечной или линейной геометрии, предназначенной для правильного расположения и ориентировки надписей в каждом полигоне. Если параметры надписей карты настроены на поворот надписей при повороте карты, то этот параметр соблюдается для надписей полигонов с использованием свойства "text-rotation-alignment" стиля, настроенного как "map", и свойства "text-keep-upright", заданного как false.

Для базового размещения в центре полигона свойства расположения не указываются, как в следующем примере:

"id": "U.S. Counties (Generalized)/label/Class 1",
"type": "symbol",
"source": "esri",
"source-layer": "U.S. Counties (Generalized)/label",
"layout": {
  "text-font": ["Tahoma Regular"],
  "text-size": 13.3333,
  "text-field": "{_name}",
  "text-optional": true
}

Разрешение конфликтов

Размещение надписей Maplex имеет различные настройки разрешения конфликтов, но для векторных листов поддерживаются только два.

Для линейных надписей Повторить > Минимальный интервал преобразуется в свойство "symbol-spacing" с единицами в пикселах. Не размещенные надписи > Никогда не удалять, при включении которой допускается наложение надписей, преобразуется в свойство "text-allow-overlap" со значением true.

Связанные разделы