ラベルのテキストの指定
ラベル テキスト文字列は、1 つ以上のフィーチャ属性から作成されます。 ラベルは動的なので、フィーチャの属性値の変化に応じてラベルも変化します。 ラベリングを表示すると、まず 1 つのフィールドに基づいてラベリングが実行されます。たとえば、気象マップの場合は、測候所に毎日の降水量を示すラベルを付けることができます。 単一フィールドに基づくラベルは、ラベリング タブで設定します。
注意:
ラベル フィールドは、デフォルトでは、名前に Name を含む (大文字と小文字は区別されません)、文字列タイプの最初のフィールドです。 名前にそのテキストが含まれるフィールドが存在しない場合は、デフォルトでは、最初は文字列タイプの最初のフィールド、次に整数タイプの最初のフィールド、次に任意のタイプの最初のフィールドになります。
ラベルには、属性フィールドを追加できます。 たとえば、毎日の降水量と最大風速の両方を示すラベルを観測所に付けることができます。 ラベルに使用する属性フィールドが 1 つであっても、あるいは複数であっても、ラベル テキストを決定するステートメントはラベル式と呼ばれます。 ラベル クラスごとに固有のラベル式があります。
ラベル式にカスタム テキストを挿入し、それをマップ上のラベルに表示することができます。 たとえば、天気図の場合は、各ラベルに略記した測定単位を追加することができます (インチを表す in、時速マイルを表す MPH など)。 ラベル式で ArcGIS Arcade、Python、VBScript、または JScript を使用して、テキストの表示方法を変更することもできます。 たとえば、テキストの 1 行目に降水値を表示し、2 行目に風速値を表示する関数を挿入することができます。 これらの例を、次の図に示します。

ArcGIS Pro のテキスト書式タグを使用して、マップ上でのテキストの表示方法をより詳細に制御できます。 テキスト書式タグを使用して、ラベル テキストのさまざまな部分に、さまざまなテキスト表示プロパティを指定できます。 たとえば、次の図に示すように、降水値を斜体の青いテキストで表示し、風速値を標準の黒いテキストで表示することができます。

ラベル式
高度なラベル式を使用すると、条件付きのロジックやループを含め、任意の Arcade、Python、VBScript、または JScript ロジックをラベル式に追加できます。 たとえば、高度なラベル式を使用して、テキスト文字列が属性フィールドにどのように保存されているかにかかわらず、各単語の 1 文字目だけを大文字にしたラベルを作成できます。 ArcGIS Pro 書式タグを使用すると、ラベル式を使用して、ラベルの書式を調整することもできます。 これらは、ラベルの全体または一部の外観を変更するための特殊文字です。 たとえば、太字の書式タグを使用して、改行された複数行のラベルの 1 行目を太字にすることができます。
ヒント:
Arcade 式は ArcGIS 全体で使用されます。 ラベリング プロファイルはラベル式に使用されます。 Arcade 式は ArcGIS Pro および ArcGIS Maps SDKs for Native Apps で機能しますが、その他の式言語はサポートされない場合があります。
注意:
Windows 11 バージョン 24H2 では、VBScript はオンデマンドの機能となり、VBScript 機能が必要です。
次のいずれかを実行します。
式のタイプを Python または Arcade に変換します。
Windows のシステム設定で VBScript のオプション機能を有効にします。
ラベル式は、単純な一行の式か、コードを複数の行に拡張してパーサーのプログラミング ロジックを利用する、より複雑な式のいずれかです。 Arcade は、デフォルトで複雑な式を有効にします。 Python、VBScript、または JScript を使用する場合は、高度な設定 チェックボックスをオンにし、コードを関数にまとめて複数行の式を有効にします。
データにコード値の説明がある場合は、コード値の説明を使用 オプションを使用して、ラベルにコード値の説明 (コードではない) を表示できます。
フィールド値はテキスト文字列に自動的にキャストします。 このため、算術演算で数値を使用する場合や、比較するときには、これをもう一度キャストして数値データ タイプに戻す必要があります。
注意:
NULL 値はテキスト文字列にキャストされません。 NULL として式に渡されます。
Arcade を使用する場合は、フィールド値がそのデータ タイプを保持します。
次の例では、2 つの整数フィールドを追加しています。
Arcade
$feature.FIELD1 + $feature.FIELD2
Python
int([FIELD1]) + int([FIELD2])
VBScript
cint([FIELD1]) + cint([FIELD2])
JScript
parseInt([FIELD1]) + parseInt([FIELD2])
Maplex ラベル エンジンのその他のオプション
Maplex ラベル エンジンを使用する場合は、ラベルに使用される空白文字を制御できます。
余分なスペースを削除 オプションは、ラベルのテキストから余分なスペース文字を削除します。 この余分なスペースには、テキストの前後と内部にあるすべてのスペース文字が含まれます。 このオプションをオフにすると、スペースが書式設定に使われます。たとえば、改行のあるラベルでテキストをインデントすることができます。
余分な改行を削除 オプションは、ラベルのテキストから余分な改行を削除します。 このオプションをオフにすると、改行のあるラベル内で複数行の間隔を空けることができます。
ラベル式の作成
ラベル式を記述するには、次の手順に従います。
ラベル別にリスト で コンテンツ ウィンドウの表示を利用すると、非常に効果的です。 ラベル別にリスト タブ
をクリックします。コンテンツ ウィンドウでラベル クラスを選択して、ラベリング タブをクリックします。
ラベリング タブの ラベル クラス グループで、式 ボタン
をクリックします。言語 メニューから言語を選択します。
Arcade、Python、VBScript、または JScript の条件式を入力します。
また、フィールドをダブルクリックして条件式に追加するか、フィールドを選択し、右クリックしてから 追加 を選択すると、クリックした位置にフィールドを追加することができます (スペースで区切られます)。 入力されたテキスト関数を式に追加するには、ダブルクリックして使用します。
Python、VBScript、および JScript を使用する場合、フィールドはレイヤーのデータ ソースのデータ タイプに関係なく角括弧 [ ] で囲まれます。 Arcade では、別の方法でフィールドを指定します。
フィールドの構文
$feature.fieldname結合フィールドの構文
$feature['tablename.fieldname']コード値ドメイン フィールドの構文
DomainName($feature, 'fieldname')ヒント:
Arcade を使用する場合、Console 関数を使用してラベル式のデバッグを支援できます。 Console 関数が式に含まれている場合、確認
をクリックすると、コンソール メッセージの表示 というリンクが表示されます。 このリンクをクリックして、コンソール メッセージ ウィンドウを開きます。 Arcade を使用する場合は、式のタイトルを指定することもできます。注意:
名前が特殊文字を含んでいるか、数字で始まるフィールドにラベルを付けるとき、Arcade は結合フィールドの構文と同じ構文 (たとえば、
$feature['33field']、$feature['acres²']、$feature['st_area(SHAPE)']) を使用します。注意:
ラベル式でバックスラッシュを使用する場合は、2 つ目のバックスラッシュを使用してエスケープする必要があります。 たとえば、
"C:\\Project\\" + $feature.ProjectId"は、C:\Project\2としてラベル付けされます。 Arcade を使用する場合は、バックスラッシュをTextFormatting.BackwardSlashに置き換えることもできます。必要に応じて、式 ボックスに ArcGIS Pro テキスト書式タグを入力して、ラベル テキストの一部に書式を適用します。
注意:
Arcade を使用する場合は、レイヤーでのフィールド書式設定はラベルに使用されません。 Arcade の書式設定方法を使用する必要があります。
式が複数行のコードにわたる場合は、高度な設定 チェックボックスをオンにしてから、ラベル式を入力します。 Arcade を使用する場合、これは不要です。
確認
をクリックして、構文エラーがないことを確認し、適用 をクリックします。構文エラーがある場合、行番号と理由がエラーに記されます。 これらの番号を表示するには、ラベル式の入力ボックスを右クリックし、行番号の表示 を選択します。
標準および高度なラベル式は、他のレイヤーまたはマップにロード可能なラベル式ファイル (
.lxp) としてエクスポートできます。
ラベル式のインポート
ラベル式をインポートするには、次の手順に従います。
ラベル別にリスト で コンテンツ ウィンドウの表示を利用すると、非常に効果的です。 ラベル別にリスト タブ
をクリックします。コンテンツ ウィンドウでラベル クラスを選択して、ラベリング タブをクリックします。
ラベリング タブの ラベル クラス グループで、式 ボタン
をクリックします。言語 メニューから言語を選択します。
インポート
をクリックし、ラベル式ファイル (.lxp) を参照して OK をクリックします。確認
をクリックして、構文エラーがないことを確認し、適用 をクリックします。
式の例
以下のサブセクションに、ラベル式の例を示します。
文字列をフィールド値に連結する
文字列をフィールド内の値に連結します。 たとえば、次の式により、PARCELNO フィールドの値の前にテキスト "Parcel no:": が置かれたラベルが作成されます。
Arcade
"Parcel no: " + $feature.PARCELNO
Python
"Parcel no: " + [PARCELNO]
VBScript
"Parcel no: " & [PARCELNO]
JScript
"Parcel no: " + [PARCELNO]
小数を丸める
小数を設定された桁数に丸めます。 たとえば、次の式により、小数点以下 1 桁に四捨五入された AREA フィールドが表示されます。
Arcade
round(number($feature.AREA), 1)
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 フィールドはすべて小文字になります。
Arcade
lower($feature.NAME)
Python
def FindLabel ( [NAME] ):
S = [NAME]
S = S.lower()
return S
VBScript
LCase ([NAME])
JScript
[NAME].toLowerCase()
適切な大文字と小文字への変換
テキスト ラベルを適切な大小文字に変換します。 たとえば、次の式により、大文字の NAME フィールドは、適切な大小文字の組み合わせになります。
Arcade
Proper($feature.NAME, 'firstword')
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 フィールドと ADDRESS フィールドをそれぞれ別の行に表示するラベルが作成されます。
Arcade
$feature.NAME + TextFormatting.NewLine + $feature.ADDRESS
Python
[NAME] + '\n' + [ADDRESS]
VBScript
[NAME] & vbCrLf& [ADDRESS]
JScript
[NAME] + "\r" + [ADDRESS]
1 つのフィールドから複数行テキストを作成する
1 つのフィールドのテキストを基にして、複数行のテキストを作成します。 たとえば、次の式により、カンマを使用して改行の位置を指定します。
Arcade
replace($feature.LABELFIELD, ', ', '\n')
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;
}
ラベルを書式設定する
ラベルの書式設定を行います。 たとえば、次の式では、ラベルを通貨として表示します。
Arcade
"Occupancy Revenue: $" + round($feature.MAXIMUM_OC * $feature.RATE, 2)
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);
}
文字列の一部でラベル付けする
フィールドの一部のみをラベルとして使用します。 たとえば、次の式では、3 番目から 5 番目までの文字を表示します。
Arcade
mid($feature.LABELFIELD, 2, 3)
Python
def FindLabel ( [LABELFIELD] ):
S = [LABELFIELD]
return S[2:5]
VBScript
Mid([LABELFIELD], 3, 3)
JScript
function FindLabel ( [LABELFIELD] )
{
var S;
var str = [LABELFIELD];
S = str.substring(2, 5);
return S;
}
if-else 条件ステートメントを作成する
if-else 条件ステートメントを指定します。 これらの関数は、人口が 250,000 人以上の場合は赤い大きなフォントで都市名をラベリングし、250,000 人未満の場合はデフォルトのラベル フォントで都市名をラベリングします。
Arcade
if ($feature.POPULATION >=250000) {
return "<CLR red='255'><FNT size = '14'>" + $feature.NAME + "</FNT></CLR>"
}
else {
return $feature.NAME
}
Python
def FindLabel ( [NAME], [POPULATION] ):
if int([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 クエリーを作成します。
参考資料
詳細については、以下をご参照ください。
これらの追加リソースの一部の情報は、Esri が作成、所有、管理のいずれも行っていない Web ページに格納されています。 Esri は、これらのページの利用可否を保証できません。またはページのコンテンツについても責任を負いません。