ArcGIS for Desktop

  • ドキュメント
  • 価格
  • サポート

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS for Desktop

完全なプロ仕様の GIS

ArcGIS for Server

エンタープライズ GIS

ArcGIS for Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • 価格
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ヘルプ

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • その他...

ラベル条件式の作成

  • 条件式の例

ラベル条件式を使用して、ラベルの書式を調整できます。文字を挿入したり、関数を記述したりできるだけではなく、ラベル条件式に ArcGIS の書式タグを含めることができます。これらは、ラベルの全体または一部の外観を変更するための特殊文字です。たとえば、太字の書式タグを使用して、改行された複数行のラベルの 1 行目を太字にすることができます。

テキスト書式タグを使用したラベルの書式設定の詳細

[ラベル条件式] ダイアログ ボックスの [高度な設定] ボックスをオンにしている場合を除き、ラベル条件式は 1 行のコードに制限されます。[高度な設定] チェックボックスをオンにすると、プログラミング ロジックを含み、コードを複数の行に拡張する関数を入力できます。

フィールド値はテキスト文字列に自動的にキャストします。したがって、算術演算で数値を使用する場合や、比較するときには、これをもう一度キャストして数値データ タイプに戻す必要があります。以下の例では、2 つの整数フィールドを追加しています。

Python
int([FIELD1]) + int([FIELD2])
VBScript
cint([FIELD1]) + cint([FIELD2])
JScript
parseInt([FIELD1]) + parseInt([FIELD2])

手順:

  1. [ラベリング] ツールバーの [ラベル マネージャー] ボタン ラベル マネージャー をクリックします。
  2. [ラベル クラス] リストでラベル クラスをクリックします。
  3. [条件式] ボタンをクリックします。
  4. [形式] メニューで言語を選択します。
  5. Python、VBScript、または JScript の条件式を入力します。また、フィールドをダブルクリックして条件式に追加するか、フィールドを選択してから [追加] ボタンをクリックして条件式の最後に追加することによって、スペース区切りで条件式を作成することができます。

    フィールドは、レイヤーのデータ ソースのデータ タイプに関係なく、角括弧 ([]) で囲まれます。

    必要に応じて、ラベル テキスト部分に書式を適用する ArcGIS テキスト書式タグを [条件式] ボックスに入力します。

    条件式が複数行のコードにわたる場合は、[高度な設定] チェックボックスをオンにしてから、ラベル条件式を入力します。

  6. [確認] をクリックして、構文エラーがないことを確認します。
  7. 各ダイアログ ボックスの [OK] をクリックします。
ヒント:
標準および高度なラベル条件式は、他のレイヤーまたはマップに読み込み可能なラベル条件式ファイル (*.lxp) として保存できます。

条件式の例

次に、ラベル条件式の例を示します。

  • 文字列をフィールド内の値に連結します。たとえば、次の条件式により、PARCELNO フィールドの値の前にテキスト「Parcel no:」が置かれたラベルが作成されます。
    Python
    "Parcel no: " + [PARCELNO]
    
    VBScript
    "Parcel no: " & [PARCELNO]
    
    JScript
    "Parcel no: " + [PARCELNO]
    
  • 小数を設定された桁数に丸めます。たとえば、次の条件式により、小数点以下 1 桁に四捨五入された AREA フィールドが表示されます。
    Python
    round(float([AREA]), 1)
    
    VBScript
    Round ([AREA], 1)
    
    JScript
    function FindLabel ( [AREA] )
    {
    var ss;
    var num= parseFloat([AREA]);
    ss =  num.toFixed(1);
      return (ss);
    }
    
  • テキスト ラベルをすべて大文字または小文字に変換します。次の条件式により、NAME フィールドはすべて小文字になります。
    Python
    def FindLabel ( [NAME] ):
      S = [NAME]
      S = S.lower()
      return S
    
    VBScript
    LCase ([NAME])
    
    JScript
    [NAME].toLowerCase()
    
  • テキスト ラベルを適切な大小文字に変換します。たとえば、次の条件式により、すべて大文字の NAME フィールドは、適切な大小文字の組み合わせになります。
    Python
    def FindLabel ( [NAME] ):
      S = [NAME]
      S = S.title()
      return S
    
    VBScript
    Function FindLabel ( [NAME] )
    FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1))
    End Function
    
    JScript
    function FindLabel ( [NAME] )
    {
    var str = [NAME];
    var iLen = String(str).length;
    var upper = (str.substring(0,1)).toUpperCase();
    var lower = (str.substring(1, iLen)).toLowerCase()
    return upper + lower;
    }
    
  • 複数行のテキストを作成します。たとえば、次の条件式により、NAME フィールドと 2 つの住所フィールドをそれぞれ別の行に表示するラベルが作成されます。
    Python
    "Name: " + [NAME] + '\n' + [ADDRESS_1] + '\n' + [ADDRESS_2]
    
    VBScript
    "Name: " & [NAME] & vbCrLf& [ADDRESS_1] & vbCrLf& [ADDRESS_2]
    
    JScript
    "Name: " + [NAME] + "\r" + [ADDRESS_1] + "\r" + [ADDRESS_2]
    
  • 1 つのフィールドのテキストを基にして、複数行のテキストを作成します。たとえば、次の条件式により、カンマを使用して改行の位置を指定します。
    Python
    def FindLabel ( [LABELFIELD] ):
      S = [LABELFIELD]
      S = S.replace(', ', '\n')
      return S
    
    VBScript
    Function FindLabel ( [LABELFIELD] )
    FindLabel = replace([LABELFIELD], ", ", vbnewline)
    End Function
    
    JScript
    function FindLabel ( [LABELFIELD] )
    {
    var r, re;
    var str = [LABELFIELD];
    re = /,/g;
    r = str.replace(re, "\r");
    return r;
    }
    
  • ラベルの形式を指定します。たとえば、次の条件式では、ラベルを通貨として表示します。
    Python
    def FindLabel ( [MAXIMUM_OC], [RATE] ):
      import locale
      locale.setlocale(locale.LC_ALL, '')
      S = locale.currency(float([MAXIMUM_OC]) * float([RATE]))
      return S
    
    VBScript
    "Occupancy Revenue: " & FormatCurrency ([MAXIMUM_OC] * [RATE])
    
    JScript
    function FindLabel ( [MAXIMUM_OC], [RATE] )
    {
    var ss;
    var num1 = parseFloat([MAXIMUM_OC]);
    var num2 = parseFloat([RATE]);
    var num3 = num1 * num2
    ss =  num3.toFixed(2);
      return ("$" + ss);
    }
    
  • if-else 条件ステートメントを指定します。これらの関数は、人口が 250,000 人以上の場合は赤い大きなフォントで都市名をラベリングし、250,000 人未満の場合はデフォルトのラベル フォントで都市名をラベリングします。
    Python
    def FindLabel ( [NAME], [POPULATION] ):
      if long([POPULATION]) >= 250000:
        return "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
      else:
        return [NAME]
    
    VBScript
    Function FindLabel ([NAME], [POPULATION])
      if (cLng([POPULATION]) >= 250000) then
       FindLabel = "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
      else
    	 FindLabel = [NAME]
      end if
    End Function
    
    JScript
    function FindLabel ( [NAME], [POPULATION]  )
    {
    if (parseFloat([POPULATION]) >= 250000){
    return ("<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>");
    }
    else
    return ([NAME]);
    }
    
注意:
フィールドの値に基づいてフィーチャのサブセットにラベリングするには、ラベル条件式を使用する代わりに、ラベル クラスに SQL クエリを作成します。
  • Python の Language Reference
  • Microsoft の VBScript Language Reference
  • Microsoft の JScript Language Reference

(この情報は、Esri が作成、所有、管理のいずれも行っていない Web ページにあります。ESRI ジャパンは、これらのページの利用状況を保証できません。またはページの内容についても責任を負いません。)

関連トピック

  • ラベリングの基本概念
  • ラベルの表示について
  • ラベルのテキストの指定について
  • テキスト書式設定タグの使用
このトピックへのフィードバック

ArcGIS for Desktop

  • ホーム
  • ドキュメント
  • 価格
  • サポート

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • スタッフ ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | プライバシー | リーガル