| ラベル | 説明 | データ タイプ | 
入力フィーチャ  | 					 処理対象の入力フィーチャ。  | Feature Layer | 
グループ フィールド
  | 完全に一致する、重複しない境界を共有するフィーチャを特定するために使われるフィールド。  | Field | 
出力フィーチャクラス  | 					 生成されるフィーチャクラス。  | Feature Class | 
方法
  | 入力フィーチャを正規化するために使用される方法。 
  | String | 
許容値
  | 正規化されたフットプリントが、元のフィーチャの境界から外れることができる最大距離。  | Linear Unit | 
精度  | 正規化プロセスで使用される空間グリッドの精度。 有効な値の範囲は 0.05 〜 0.25 です。  | Double | 
最大隅角偏位
  | [直角と対角線] (RIGHT_ANGLES_AND_DIAGONALS) を使用するときに、ベスト フィット ラインの内角で許容される最大の偏位。通常、最善の結果を得るには、この値を 5°以下にしておく必要があります。このパラメーターは、他の正規化方法では無効になっています。  | Double | 
サマリー
共通の境界を持つ建物フットプリントを正規化します。
使用法
このツールは、ポリライン圧縮アルゴリズムを使用して、不自然な結果が生成される可能性のあるフィーチャ抽出ワークフローによって作成された建物フットプリント ポリゴンの歪みを矯正します。
ラスター データから生成された建物フットプリントを正規化する場合、正規化の許容値はソース ラスターの解像度よりも大きくなくてはなりません。
他のフィーチャと重複しない正規化された境界を作成するには、隣接する境界を持つフィーチャに共通の属性値が必要です。共通の属性がない場合は、以下の手順を検討してください。
- 目的の正規化許容値に一致するバッファー距離を、[バッファー (Buffer)] ツールで使用します。
 - バッファーされたポリゴン フィーチャを [ユニオン (Union)] ツールで処理し、重複するポリゴンに対して 1 つのフィーチャを作成します。
 - [空間結合 (Spatial Join)] ツールを使用し、正規化の対象となる元の入力フィーチャに結合したポリゴンの一意の ID を追加します。
 - [隣接建物フットプリントの正規化 (Regularize Adjacent Building Footprint)] ツールを [グループ フィールド] (Python では group パラメーター) で指定された一意の ID を含むフィールドとともに実行します。
 
入力フィーチャが鋭角または優角の内角で構成される場合、または 2 つの線分間にある角度が 90°、135°、180°ではない場合は [任意の角度] 方法の使用を検討してください。
ツールを使用して、所定の入力の正規化されたソリューションが生成されない場合、元のフィーチャが出力にコピーされます。 STATUS フィールドに指定された値は、そのフィーチャが正規化されたかどうかを次のように示します。
- 0 = 正規化されたフィーチャ
 - 1 = 元のフィーチャ
 
パラメーター
arcpy.ddd.RegularizeAdjacentBuildingFootprint(in_features, group, out_feature_class, method, tolerance, precision, angular_limit)
| 名前 | 説明 | データ タイプ | 
in_features  | 					 処理対象の入力フィーチャ。  | Feature Layer | 
group  | 完全に一致する、重複しない境界を共有するフィーチャを特定するために使われるフィールド。  | Field | 
out_feature_class  | 					 生成されるフィーチャクラス。  | Feature Class | 
method  | 入力フィーチャを正規化するために使用される方法。 
  | String | 
tolerance  | 正規化されたフットプリントが、元のフィーチャの境界から外れることができる最大距離。  | Linear Unit | 
precision  | 正規化プロセスで使用される空間グリッドの精度。 有効な値の範囲は 0.05 〜 0.25 です。  | Double | 
angular_limit  | [直角と対角線] (RIGHT_ANGLES_AND_DIAGONALS) を使用するときに、ベスト フィット ラインの内角で許容される最大の偏位。通常、最善の結果を得るには、この値を 5°以下にしておく必要があります。このパラメーターは、他の正規化方法では無効になっています。  | Double | 
コードのサンプル
次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。
arcpy.env.workspace = 'c:/data'
arcpy.ddd.RegularizeAdjacentBuildingFootprint('rough_footprints.shp', 'Block_ID',
                                              'regularized_footprints.shp', 
                                              'RIGHT_ANGLES_AND_DIAGONALS', 
                                              '2 Meters', 0.10)次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。
'''****************************************************************************
       Name: Classify Lidar & Extract Building Footprints
Description: Extract footprint from lidar points classified as buildings, 
             regularize its geometry, and calculate the building height.
****************************************************************************'''
import arcpy
lasd = arcpy.GetParameterAsText(0)
dem = arcpy.GetParameterAsText(1)
footprint = arcpy.GetParameterAsText(2)
try:
    desc = arcpy.Describe(lasd)
    if desc.spatialReference.linearUnitName in ['Foot_US', 'Foot']:
        unit = 'Feet'
    else:
        unit = 'Meters'
    ptSpacing = desc.pointSpacing * 2.25
    sampling = '{0} {1}'.format(ptSpacing, unit)
    # Classify overlap points
    arcpy.ddd.ClassifyLASOverlap(lasd, sampling)
    # Classify ground points
    arcpy.ddd.ClassifyLasGround(lasd)
    # Filter for ground points
    arcpy.management.MakeLasDatasetLayer(lasd, 'ground', class_code=[2])
    # Generate DEM
    arcpy.conversion.LasDatasetToRaster('ground', dem, 'ELEVATION', 
                                        'BINNING NEAREST NATURAL_NEIGHBOR', 
                                        sampling_type='CELLSIZE', 
                                        sampling_value=desc.pointSpacing)
    # Classify noise points
    arcpy.ddd.ClassifyLasNoise(lasd, method='ISOLATION', edit_las='CLASSIFY', 
                               withheld='WITHHELD', ground=dem, 
                               low_z='-2 feet', high_z='300 feet', 
                               max_neighbors=ptSpacing, step_width=ptSpacing, 
                               step_height='10 feet')
    # Classify buildings
    arcpy.ddd.ClassifyLasBuilding(lasd, '7.5 feet', '80 Square Feet')
    #Classify vegetation
    arcpy.ddd.ClassifyLasByHeight(lasd, 'GROUND', [8, 20, 55], 
                                  compute_stats='COMPUTE_STATS')
    # Filter LAS dataset for building points
    lasd_layer = 'building points'
    arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=[6])
    # Export raster from lidar using only building points
    temp_raster = 'in_memory/bldg_raster'
    arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
                                           'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
    # Convert building raster to polygon
    temp_footprint = 'in_memory/footprint'
    arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
    # Regularize building footprints
    arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint, 
                                          method='RIGHT_ANGLES')
except arcpy.ExecuteError:
    print(arcpy.GetMessages())環境
ライセンス情報
- Basic: 次のものが必要 3D Analyst
 - Standard: 次のものが必要 3D Analyst
 - Advanced: 次のものが必要 3D Analyst