Skip to main content

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

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

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

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

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

  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 label expression

    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 точек