Знаки аэропортов

Надписи для знаков аэропортов могут быть отформатированы с использованием тегов форматирования Background. Это тег обеспечивает уникальные гибкие возможности для изменения фона текста знаков.

На рисунке ниже изображен знак аэропорта, составленный из двух различных фонов, один с контуром, другой – без.

Знак аэропорта, созданный с помощью тегов форматирования

Для создания надписей знаков аэропортов выполните следующие шаги:

  1. Убедитесь, что надписи включены для слоя.
  2. Используйте шрифт по умолчанию, Tahoma Regular. Измените размер надписи до 24 точек.
  3. Используйте теги форматирования для создания фона надписи.
    • Простой пример выражения надписи для размещения тегов форматирования вокруг самой надписи. Надпись – A2 26-8.

      "<CLR red='255' green='236' blue='0' alpha='100'><BGD red='0' green='0' blue='0' alpha='100' outline_red='255' outline_green='236' outline_blue='0' outline_alpha='100' width='1' padding='-2'>" + "A2 " + "</BGD></CLR><CLR red='255' green='255' blue='255' alpha='100'><BGD red='230' green='0' blue='0' alpha='100'>" + " 26-8" + "</BGD></CLR>"

    • Более сложный пример выражения надписи, содержащий логику для копирования надписи из поля данных и определения цветов фона и контура из этой информации.

      Это выражение связано с данными, которые будут отформатированы в соответствии с выражением ниже. Число в скобках ([ ]) определяет форматирование, используемое в тексте. Значение [3] соответствует желтому тексту на черном фоне.

      • [4]9-27[3]B10
      • [7]5
      • [12]
      • [4]9-27[3]B4[0]56
      • [0]←B4

      Выражение надписи Arcade
      var yellow = [255,236,0,100]
      var red    = [230,0,0,100]
      var blue   = [0,180,230,100]
      var black  = [0,0,0,100]
      var white  = [255,255,255,100]
      var none   = [0,0,0,0]
      var textFontName = "Frutiger";
      var textFontStyle = "65 Bold";
      var signFontName = "Esri Airport Sign"
      var signFontStyle = ""
      function FormatBO(background, outline, width, padding, txt){
        var attr = ""
        if(background != none && count(background) == 4){
         attr += " red='"   + background[0] + "'"
          attr += " green='" + background[1] + "'"
          attr += " blue='"  + background[2] + "'"
          attr += " alpha='" + background[3] + "'"
        }
        if(outline != none && count(outline) == 4){
          attr += " outline_red='"    + outline[0] + "'"
          attr += " outline_green='"  + outline[1] + "'"
          attr += " outline_blue='"   + outline[2] + "'"
          attr += " outline_alpha='"  + outline[3] + "'"
          attr += " width='" + width + "'"
          attr += " padding='" + padding + "'"
        }
        return "<BGD" + attr + ">" + txt + "</BGD>"
      }
      function SetTextColor(rgba, txt)
      {
        var r = rgba[0]
        var g = rgba[1]
        var b = rgba[2]
        var a = rgba[3]
        return "<CLR red='" + r + "' green='" + g + "' blue='" + b + "' alpha='" + a + "'>" + txt + "</CLR>"; 
      }
      function FormatFont(label, name, style, size)
      {
        var tagName = iif(name=="", "", " NAME='"+name+"'")
        var tagStyle = iif(style=="", "", " STYLE='"+style+"'")
        var tagSize = iif(size==0, "", " SIZE='"+size+"'")
        return "<FNT" + tagName + tagStyle + tagSize + ">" + label + "</FNT>"
      }
      var testExpr = $feature.AIRPORTSIGNMSGFRONT
      // e.g. "[0]←D[3]F"
      var splitExpr = Split(testExpr,"[")
      // e.g. ["", "0]←D ", "3]F"]
      var typeTextPairArray = [["",""]]
      for (var index in splitExpr){
        var pair = Split(splitExpr[index],"]")
        typeTextPairArray[index] = pair
      } 
      // e.g. [[""], ["0","←D"], ["3","F"]]
      var expression = "";
      var indices = [0]
      for (var index in typeTextPairArray){
        indices[index] = index;
        var pairCount = count(typeTextPairArray[index])
        if(pairCount != 2){
          expression += iif(pairCount >= 1, typeTextPairArray[index][0], "")
          continue;
        }
        
        var type = number(typeTextPairArray[index][0])
        var newText = typeTextPairArray[index][1]
        if(type == 0) // "DIRECTION")
          expression += SetTextColor(black, FormatBO(yellow, none, 0, 0, newText));
        else if(type == 1) // "INFO_ACFT")
          expression += SetTextColor(black, FormatBO(yellow, none, 0, 0, FormatFont(newText, textFontName, textFontStyle, 0)));
        else if(type == 2) //"INFO_VEH")
          expression += SetTextColor(black, FormatBO(yellow, none, 0, 0, FormatFont(newText, textFontName, textFontStyle, 5)));
        else if(type == 3) // "LOCATION")
          expression += SetTextColor(yellow, FormatBO(black, yellow, 1, -2, FormatFont(" " + newText + " ", textFontName, textFontStyle, 0)));
        else if(type == 4) // "MANDATORY")
          expression += SetTextColor(white, FormatBO(red, none, 0, 0, FormatFont(newText, textFontName, textFontStyle, 0)));
        else if(type == 5) // "NO_ENTRY")
          expression += SetTextColor(red, FormatBO(white, none, 0, 0, FormatFont("O", signFontName, "", 16)));
        else if(type == 6) // "RWY_CRITICAL")
          expression += SetTextColor(black, FormatBO(yellow, none, 0, 0, FormatFont("IIIII", signFontName, "", 0)));
        else if(type == 7) // "RWY_DIST_REMAIN")
          expression += SetTextColor(white, FormatBO(black, none, 0, 0, FormatFont(newText, textFontName, textFontStyle, 0)));
        else if(type == 8) //"RWY_SAFETY")
          expression += SetTextColor(black, FormatBO(yellow, none, 0, 0, FormatFont("RRRRR", signFontName, "", 0)));
        else if(type == 9) //"TAXIWAY_END")
          expression += SetTextColor(black, FormatBO(yellow, none, 0, 0, FormatFont("TTT", signFontName, "", 0)));
        else if(type == 10) //"TERMINAL")
          expression += SetTextColor(white, FormatBO(blue, none, 0, 0, FormatFont(newText, textFontName, textFontStyle, 0)));
        else if(type == 11) //"VEH_STOP")
          expression += SetTextColor(red, FormatBO(white, none, 0, 0, FormatFont("S", signFontName, "", 16)));
        else if(type == 12) //"VEH_YIELD")
          expression += SetTextColor(red, FormatBO(white, none, 0, 0, FormatFont("Y", signFontName, "", 16)));
        else
          expression += newText
      }
      return expression
  4. Установка границ Фона выноски.
    1. На вкладке Надписи в группе Размещение надписей щелкните Свойства размещения надписей. Вызов диалогового окна
    2. На панели Надписи щелкните Символ и щелкните Общие.
    3. Разверните Выноска.
    4. Откройте ниспадающее меню Выноска и выберите Фон.
    5. Установите границы следующим образом:
      • Поле слева – 10 точек
      • Поле справа –10 точек
      • Поле сверху – 5 точек
      • Поле снизу – 5 точек

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