ラベル条件式の作成
ラベル条件式を使用して、ラベルの書式を調整できます。文字を挿入したり、関数を記述したりできるだけではなく、ラベル条件式に ArcGIS の書式タグを含めることができます。これらは、ラベルの全体または一部の外観を変更するための特殊文字です。たとえば、太字の書式タグを使用して、改行された複数行のラベルの 1 行目を太字にすることができます。
[ラベル条件式] ダイアログ ボックスの [高度な設定] ボックスをオンにしている場合を除き、ラベル条件式は 1 行のコードに制限されます。[高度な設定] チェックボックスをオンにすると、プログラミング ロジックを含み、コードを複数の行に拡張する関数を入力できます。
フィールド値はテキスト文字列に自動的にキャストします。したがって、算術演算で数値を使用する場合や、比較するときには、これをもう一度キャストして数値データ タイプに戻す必要があります。以下の例では、2 つの整数フィールドを追加しています。
Python
int([FIELD1]) + int([FIELD2])
VBScript
cint([FIELD1]) + cint([FIELD2])
JScript
parseInt([FIELD1]) + parseInt([FIELD2])
手順:
- [ラベリング] ツールバーの [ラベル マネージャ] ボタン をクリックします。
- [ラベル クラス] リストでラベル クラスをクリックします。
- [条件式] ボタンをクリックします。
- [形式] メニューで言語を選択します。
- Python、VBScript、または JScript の条件式を入力します。また、フィールドをダブルクリックして条件式に追加するか、フィールドを選択してから [追加] ボタンをクリックして条件式の最後に追加することによって、スペース区切りで条件式を作成することができます。
フィールドは、レイヤのデータ ソースのデータ タイプに関係なく、角括弧([])で囲まれます。
必要に応じて、ラベル テキスト部分に書式を適用する ArcGIS テキスト書式タグを [条件式] ボックスに入力します。
条件式が複数行のコードにわたる場合は、[高度な設定] チェックボックスをオンにしてから、ラベル条件式を入力します。
- [確認] をクリックして、構文エラーがないことを確認します。
- 各ダイアログ ボックスの [OK] をクリックします。
ヒント:
標準および高度なラベル条件式は、他のレイヤまたはマップに読み込み可能なラベル条件式ファイル(*.lxp)として保存できます。
条件式の例
次に、ラベル条件式の例を示します。
- 文字列をフィールド内の値に連結します。たとえば、次の条件式により、PARCELNO フィールドの値の前にテキスト「Parcel no:」が置かれたラベルが作成されます。Python
"Parcel no: " + [PARCELNO]
VBScript"Parcel no: " & [PARCELNO]
JScript"Parcel no: " + [PARCELNO]
- 小数を設定された桁数に丸めます。たとえば、次の条件式により、小数点以下 1 桁に四捨五入された AREA フィールドが表示されます。Python
round(float([AREA]), 1)
VBScriptRound ([AREA], 1)
JScriptfunction 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
VBScriptLCase ([NAME])
JScript[NAME].toLowerCase()
- テキスト ラベルを適切な大小文字に変換します。たとえば、次の条件式により、すべて大文字の NAME フィールドは、適切な大小文字の組み合わせになります。Python
def FindLabel ( [NAME] ): S = [NAME] S = S.title() return S
VBScriptFunction FindLabel ( [NAME] ) FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1)) End Function
JScriptfunction 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
VBScriptFunction FindLabel ( [LABELFIELD] ) FindLabel = replace([LABELFIELD], ", ", vbnewline) End Function
JScriptfunction 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])
JScriptfunction 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]
VBScriptFunction 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
JScriptfunction 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 ジャパンは、これらのページの利用状況を保証できません。またはページの内容についても責任を負いません。)
関連トピック
5/10/2014