ラベル条件式の作成
ラベル条件式を使用して、ラベルの書式を調整できます。文字を挿入したり、関数を記述したりできるだけではなく、ラベル条件式に ArcGIS の書式タグを含めることができます。これらは、ラベルの全体または一部の外観を変更するための特殊文字です。たとえば、太字の書式タグを使用して、改行された複数行のラベルの 1 行目を太字にすることができます。
[ラベル条件式] ダイアログ ボックスの [高度な設定] ボックスをオンにしている場合を除き、ラベル条件式は 1 行のコードに制限されます。[高度な設定] チェックボックスをオンにすると、プログラミング ロジックを含み、コードを複数の行に拡張する関数を入力できます。
手順:
- [ラベリング] ツールバーの [ラベル マネージャ] ボタン をクリックします。
- [ラベル クラス] リストでラベル クラスをクリックします。
- [条件式] ボタンをクリックします。
- [形式] メニューで言語を選択します。
- VBScript または JScript の条件式を入力します。必要に応じて、ラベル テキスト部分に書式を適用する ArcGIS テキスト書式タグを [条件式] ボックスに入力します。
条件式が複数行にわたるコードになる場合は、[高度な設定] チェックボックスをオンにしてから、ラベル条件式を入力します。
- [確認] をクリックして、構文エラーがないことを確認します。
- 各ダイアログ ボックスの [OK] をクリックします。
条件式の例
次に、ラベル条件式の例を示します。
- 文字列をフィールド内の値に連結します。たとえば、次の条件式により、PARCELNO フィールドの値の前にテキスト "Parcel no: " が置かれたラベルが作成されます。
VBScript
"Parcel no: " & [PARCELNO]
"Parcel no: " + [PARCELNO]
- 小数を設定された桁数に丸めます。たとえば、次の条件式により、小数点以下 1 桁に四捨五入された AREA フィールドが表示されます。
VBScript
Round ([AREA], 1)
function FindLabel ( [AREA] ) { var ss; var num= parseFloat([AREA]); ss = num.toFixed(1); return (ss); }
- テキスト ラベルをすべて大文字または小文字に変換します。次の条件式により、NAME フィールドはすべて小文字になります。
VBScript
LCase ([NAME])
[NAME].toLowerCase()
- テキスト ラベルを適切な大小文字に変換します。たとえば、次の条件式により、すべて大文字の NAME フィールドは、適切な大小文字の組み合わせになります。
VBScript
Function FindLabel ( [NAME] ) FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1)) End Function
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 つの住所フィールドをそれぞれ別の行に表示するラベルが作成されます。
VBScript
"Name: " & [NAME] & vbCrLf& [ADDRESS_1] & vbCrLf& [ADDRESS_2]
"Name: " + [NAME] + "\r" + [ADDRESS_1] + "\r" + [ADDRESS_2]
- 1 つのフィールドのテキストを基にして、複数行のテキストを作成します。たとえば、次の条件式により、カンマを使用して改行の位置を指定します。
VBScript
Function FindLabel ( [LABELFIELD] ) FindLabel = replace([LABELFIELD], ", ", vbnewline) End Function
function FindLabel ( [LABELFIELD] ) { var r, re; var str = [LABELFIELD]; re = /,/g; r = str.replace(re, "\r"); return r; }
- ラベルの形式を指定します。たとえば、次の条件式では、ラベルを通貨として表示します。
VBScript
"Occupancy Revenue: " & FormatCurrency ([MAXIMUM_OC] * [RATE])
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 人未満の場合はデフォルトのラベル フォントで都市名をラベリングします。
VBScript
Function FindLabel ([NAME], [POPULATION]) if ([POPULATION] >= 250000) then FindLabel = "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>" else FindLabel = [NAME] end if End Function
function FindLabel ( [NAME], [POPULATION] ) { if ([POPULATION] >= 250000){ return ("<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"); } else return ([NAME]); }
注意:フィールドの値に基づいてフィーチャのサブセットにラベリングするには、ラベル条件式を使用する代わりに、ラベル クラスに SQL クエリを作成します。
Microsoft の VBScript Language Reference の詳細
Microsoft の JScript Language Reference の詳細
(この情報は、Microsoft Corporation が作成、所有、および管理する Web ページにあります。ESRI ジャパンは、これらのページの利用状況を保証できません。またはページの内容についても責任を負いません。)
ArcGIS のテキスト書式タグ
ラベルは、[ラベル マネージャ] または [レイヤ プロパティ] ダイアログ ボックスの [ラベル] タブで指定されたシンボルを使用して描画されます。ArcGIS のテキスト書式タグをテキスト文字列として条件式に挿入することにより、条件式の特定の部分について、このシンボルの外観を変更または上書きすることができます。これにより、たとえばラベルに含まれる 1 つのフィールドに下線を付けるなど、複数の書式を組み合わせたラベルを作成することができます。
次に、使用できるタグの一覧を示します。Color(RGB)に使用できる値は、赤、緑、青が 0 ~ 255、Color(CMYK)に使用できる値は、シアン、マゼンタ、イエロー、ブラックが 0 ~ 100 です。欠落している色属性は 0 になります。
フォント |
"<FNT name='Arial' size='18'>" & [LABELFIELD] & "</FNT>" "<FNT name='Arial' scale='200'>" & [LABELFIELD] & "</FNT>" |
色 |
"<CLR red='255' green='255' blue='255'>" & [LABELFIELD] & "</CLR>" "<CLR cyan='100' magenta ='100' yellow='100' black='100'>" & [LABELFIELD] & "</CLR>" |
太字 |
"<BOL>" & [LABELFIELD] & "</BOL>" |
斜体 |
"<ITA>" & [LABELFIELD] & "</ITA>" |
下線 |
"<UND>" & [LABELFIELD] & "</UND>" |
すべて大文字 |
"<ACP>" & [LABELFIELD] & "</ACP>" |
小型英大文字 |
"<SCP>" & [LABELFIELD] & "</SCP>" |
上付き |
"<SUP>" & [LABELFIELD] & "</SUP>" |
下付き |
"<SUB>" & [LABELFIELD] & "</SUB>" |
文字間隔(0% = 標準) |
"<CHR spacing='25'>" & [LABELFIELD] & "</CHR>" |
文字幅(100% = 標準) |
"<CHR width='150'>" & [LABELFIELD] & "</CHR>" |
単語間隔(100% = 標準) |
"<WRD spacing='150'>" & [LABELFIELD] & "</WRD>" |
行リード(ポイント) |
"<LIN leading='12'>" & [LABELFIELD] & "</LIN>" |
太字解除 |
"<_BOL>" & [LABELFIELD] & "</_BOL>" |
斜体解除 |
"<_ITA>" & [LABELFIELD] & "</_ITA>" |
下線解除 |
"<_UND>" & [LABELFIELD] & "</_UND>" |
上付き解除 |
"<_SUP>" & [LABELFIELD] & "</_SUP>" |
下付き解除 |
"<_SUB>" & [LABELFIELD] & "</_SUB>" |
タグの構文
ラベル条件式のタグには、次の構文規則が適用されます。
- 書式タグは二重引用符(")で囲み、&演算子を使用して条件式の他の部分に連結する必要があります。
"<BOL>" & [LABELFIELD] & "</BOL>"
"Current <BOL>status</BOL> of parcel: " & [LABELFIELD]
- ArcMap テキスト書式タグは、XML の構文規則に従います。開始タグには、それぞれ対応する終了タグが必要です。タグはネストできますが、外部タグを閉じる前に内部タグを閉じる必要があります。
"<BOL><UND>" & [LABELFIELD] & "</UND></BOL>"
- タグの組みの大文字と小文字は正確に一致している必要があります。たとえば、「<BOL>...</BOL>」と「<bol>...</bol>」は有効ですが、「<Bol>...</bol>」は無効です。
- ラベル条件式では、タグの属性を単一引用符(')または二重引用符(")で囲む必要があります。次の 2 つの式は同等です。
"<FNT name=""Arial"" size=""18"">" & [LABELFIELD] & "</FNT>"
"<FNT name='Arial' size='18'>" & [LABELFIELD] & "</FNT>"
- 特殊文字「&」および「<」は、書式タグが使用されているテキストでは無効です。代わりに、これらの文字に相当する「&」と「⁢」の文字コードを使用します。たとえば、次の条件式は < > 文字に囲まれたラベル フィールドの値を表示します。
"<ITA><" & [LABELFIELD] & "></ITA>"
Function FindLabel ([LABELFIELD]) NewString = Replace([LABELFIELD],"&","&") FindLabel = "<ITA>" & NewString & "</ITA>" End Function
- ラベル条件式を使用するかどうかにかかわらず、レイヤのフィーチャのラベリングに使用するフィールドの値に書式タグを埋め込むことができます。これにより、ラベル フィールドに含まれる特定の値の任意部分の書式を変更することができます。書式タグを埋め込むには、ラベル フィールドが文字列タイプである必要があります。フィールド値で使用されるタグおよびタグの属性を引用符で囲む必要はないため、ラベル フィールドでは次の値が有効となります。
<ITA>Rochester</ITA> <FNT size='18'>C</FNT>Colorado
ラベル条件式作成のヒント
ラベル条件式の作成には、次のヒントが役立ちます。
- テキスト書式タグを含む条件式の有効性をチェックするには、[確認] ボタンをクリックするか、変更を [適用] し、マップ上にラベルを表示します。無効な書式タグまたは構文の場合、タグは [確認] ウィンドウとマップ ラベルでテキストとして表示されます。
- テキスト書式タグは、マップ上またはその周辺のほぼすべての場所に使用することができます。