| 标注 | 说明 | 数据类型 | 
输入要素  | 					 待处理的输入要素。  | Feature Layer | 
分组字段
  | 此字段用于确定哪些要素将共享重合、非重叠边界。  | Field | 
输出要素类  | 					 将生成的要素类。  | Feature Class | 
方法
  | 规则化输入要素时使用的方法。 
  | String | 
容差
  | 规则化覆盖区可从其原始要素的边界偏移的最大距离。  | Linear Unit | 
精度  | 将在规则化过程中使用的空间格网精度。 值的有效范围为 0.05 到 0.25。  | Double | 
角度偏差限制
  | 最佳拟合线内角的最大偏差,可适用于使用直角和对角 (RIGHT_ANGLES_AND_DIAGONALS) 方法时。为获得最佳结果,通常应保持此值小于 5°。对于其他规则化方法,此参数将处于禁用状态。  | Double | 
摘要
规则化具有公共边界的建筑物覆盖区。
使用情况
此工具使用折线压缩算法校正通过要素提取工作流(该工作流可能会产生多余的伪影)创建的建筑物覆盖区面中的变形。
当规则化从栅格数据获取的建筑物覆盖区时,规则化容差应该比源栅格的分辨率更大。
为了使所创建的规则化边界不会与其他要素重叠,具有相邻边界的要素必须具有相同的属性值。如果没有相同属性,请考虑以下步骤:
对于包含锐角或优角的输入要素,或两条线段之间的角度弯曲未落在 90° 和 180° 之间的 45° 间隔时,考虑使用任意角。
如果工具无法对给定输入生成规则化解决方案,则会将原始要素复制到输出。 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