建物の競合を解決(Resolve Building Conflicts) (カートグラフィ)
サマリ
建物を移動したり、非表示にしたりすることにより、建物間および線形バリア フィーチャに関するシンボルの競合を解決します。
[建物の競合を解決(Resolve Building Conflicts)] ツールの仕組みの詳細
このツールは出力レイヤを生成しない代わりに、入力レイヤのソース フィーチャクラスを変更します。入力レイヤがリプレゼンテーションで描画された場合(その入力レイヤの編集時の振舞いが、シェープ オーバーライドを格納するように設定されている場合)、変更されたフィーチャはリプレゼンテーションのシェープ オーバーライドとして格納されます。レイヤがリプレゼンテーションで描画されない場合、入力フィーチャのジオメトリが変更されます。競合解決ツールでの作業中は、リプレゼンテーションを使用することを推奨します。この方法で結果が受け入れられない場合、別のパラメータを指定してツールを再実行する場合は、[オーバーライドの解除(Remove Override)] ツールを使用してオーバーライドを解除してください。編集時の振舞いがシェープ オーバーライドを格納するように設定されているリプレゼンテーションを使用していない場合、入力フィーチャのコピーを作成しておくことを強くお勧めします。
投影座標系に入力フィーチャが存在しない場合、警告が出されます。このツールは線形距離単位に依存するため、非投影座標系では予期しない結果になります。有効な結果を得るには、投影座標系のデータに対してこのツールを実行することを強くお勧めします。座標系が見つからないか不明な場合、エラーが発生し、ツールの処理は実行されません。
図
使用法
-
このツールは、シンボル表示されたフィーチャのグラフィックス競合を評価することによって処理を行います。シンボル範囲と基準縮尺は、互いの関連について考慮されます。このツールは、シンボル表示を完成させてから実行してください。そうすることにより、目標とする最終的な出力縮尺に対応した基準縮尺が確実に得られます。
-
すべての入力フィーチャクラスに [非表示フィールド] が存在し、同じ名前が付けられている必要があります。表示に残す必要があるフィーチャには 0 の値を割り当て、表示から削除する必要があるフィーチャには 1 の値を割り当てます。単純化の結果を確認するには、レイヤのフィルタ設定または属性検索を使用して、単純化したコレクションを表示します。たとえば非表示フィールドの名前が「invisibility」である場合は invisibility <> 1 と指定します。複数の非表示フィールドを使用して、1 つのフィーチャクラス上で、異なる出力スケールに対応する異なる結果を格納することができます。
競合を評価する前に、ポリゴンで表現される建物は、[建物の最小許容サイズ] パラメータで指定された最小サイズまで拡大されます。最小サイズとは、フィーチャをぴったりと囲む長方形の短辺がとりうる最小の長さです。出力結果における建物の最終サイズを確認するには、RBC_SIZE という名前の小数フィールド(Double または Float)を、任意の入力建物フィーチャクラスに追加します。ツールの処理中に、RBC_SIZE フィールドは、各フィーチャの周りに回転したバウンディング ボックスの最短の辺で更新されます。
-
[階層フィールド] のパラメータはオプションです。指定がない場合は、建物の周長およびバリアまでの近さに基づいて、相対的な重要度が建物に割り当てられます。建物が大きく、複数のバリアに近いほど、小さくて 1 つのバリアから比較的遠くにある建物よりも重要であると評価されます。重要な建物だけに階層値を割り当てて、その他のフィーチャ(階層値は NULL)には内部計算で求めた相対的な重要度を割り当てるように、部分的に指定した階層フィールドを使用することができます。
-
[階層フィールド] のパラメータを使用して、建物に階層値 0(ゼロ)を割り当てることにより、建物を強制的に表示に残すことができます。ツールでは、このような建物をマスクしません。階層値が 0 の建物は、地域で重要であると見なされるため、近くにある建物が犠牲になる可能性は、建物の表示が強制されていない場合よりも高くなります。階層値が 0 の建物であっても、競合の解決や、他の必要なパラメータに一致させるために変更(移動、回転、サイズ変更)することは可能です。
ジオメトリがバリアと競合している(つまり、建物のシンボル表示だけでなく、実際のジオメトリが道路のようなバリア フィーチャのジオメトリに重なっている)建物が、バリア フィーチャから除去されることはありません。このような建物には、競合解決の処理中にマスキングのマークが付きますが、移動は行われません。競合はそのままです。
ジオメトリでバリア フィーチャのシンボルが対称に配置されていない(つまり、ラインの片側だけシンボルが太い)場合は、バリアのシンボルが細い側で建物とバリアの間のギャップが大きく表示されます。
大きなデータセットや多くのバリア レイヤを同時に処理すると、メモリの制限を超えることがあります。このような場合、[分割フィーチャ] 環境設定で、関連するポリゴン フィーチャクラスを特定することによって、パーティション単位で入力建物のデータを処理することを検討します。パーティションの境界によって定義された建物のデータの一部が順次処理されます。作成されたレイヤは、パーティション エッジにおいてシームレスでかつ一致しています。分割を使用してこのツールを実行する際の詳細については、「建物の競合を解決(Resolve Building Conflicts)ツールの機能」をご参照ください。
構文
パラメータ | 説明 | データ タイプ |
in_buildings [in_buildings,...] |
競合しているか、許容サイズよりも小さい可能性がある建物フィーチャが含まれる入力レイヤ。建物はポイントまたはポリゴンになります。建物は、他の建物およびバリア フィーチャとの競合を解決するために変更されます。 | Layer |
invisibility_field |
シンボルの競合を解決する目的で、一部の建物を表示から削除するために使用できる非表示の値を格納するフィールド。値 1 の建物は表示から削除する必要があるもの、値 0 の建物は残す必要があるものです。目に見える建物だけを表示するには、レイヤ上でフィルタ設定を使用します。フィーチャは削除されません。 | String |
in_barriers [[Layer, Boolean, Linear Unit],...] |
入力建物フィーチャの競合バリアとなるライン フィーチャまたはポリゴン フィーチャが含まれるレイヤ。建物は、建物間およびバリア間の競合を解決するために変更されます。方向の値はブール値で、建物をバリア レイヤの方向に合わせる必要があるかどうかを指定します。 ギャップは、建物をバリア レイヤに近づける、またはバリア レイヤから離す距離を指定します。単位を値とともに入力する必要があります。
注意: ギャップの値に単位を付けて入力しなかった場合(たとえば 10 Meters ではなく 10 と入力した場合)は、入力フィーチャの座標系の距離単位が使用されます。 | Value Table |
building_gap |
シンボル表示された建物間の縮尺での許容最小距離。近接する建物は、この距離を強制的に確保するために移動されるか、非表示になります。最小許容距離は、基準縮尺に相対的に設定されます(1:50,000 縮尺であれば 15 メートルなど)。基準縮尺が設定されていない場合の値は 0 です。 | Linear unit |
minimum_size |
基準縮尺で描画され、シンボル表示された建物フィーチャをぴったりと囲む長方形の短辺がとりうる最小の長さの最小許容サイズ。長方形の 1 辺がこの値よりも小さい建物は、要件を満たすために拡大されます。サイズ変更は比率を維持しないで行われる場合があり、その結果、建物の形状が変わることがあります。 | Linear unit |
hierarchy_field (オプション) |
フィーチャの重要度の階層ランクが格納されるフィールド。1 は非常に重要であり、整数が大きくなるほど重要度は低くなります。0(ゼロ)の値は、建物を強制的に表示に残しますが、競合を解決するために建物を移動することは可能です。このパラメータを使用しない場合は、周長とバリア フィーチャまでの近さに基づいて、フィーチャの重要度が評価されます。 | String |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで ResolveBuildingConflicts(建物の競合を解決)ツールを使用する方法を示しています。
import arcpy
from arcpy import env
env.workspace = "C:/data"
env.referenceScale = "50000"
arcpy.ResolveBuildingConflicts_cartography("C:/data/footprints.lyr; C:/data/bldg_points.lyr", "invisible",
"'C:/data/roads.lyr' 'true' '5 Meters';'C:/data/trails.lyr' 'false' '10 Meters';'C:/data/streams.lyr' 'false' '5 Meters'",
"10 meters", "15 meters", "bldg_hierarchy")
このスタンドアロン スクリプトは、ResolveBuildingConflicts(建物の競合を解決)ツールの使用例を示しています。
# Name: ResolveBuildingConflicts_standalone_script.py
# Description: Resolves the symbology conflicts between
# buildings and nearby barriers,
# in this case - roads
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
env.referenceScale = "50000"
# Set local variables
in_buildings = "C:/data/footprints.lyr;C:/data/bldg_pts.lyr"
invisibility_field = "invisible"
in_barriers = "'C:/data/roads.lyr' 'true' '5 Meters';\
'C:/data/trails.lyr' 'false' '10 Meters';\
'C:/data/streams.lyr' 'false' '5 Meters'"
building_gap = "10 meters"
minimum_size = "15 meters"
hierarchy_field = "bldg_hierarchy"
# Execute Resolve Building Conflicts
arcpy.ResolveBuildingConflicts(in_buildings,
invisibility_field,
in_barriers,
building_gap,
minimum_size,
hierarchy_field)