缓冲区 (分析)
插图
用法
-
-
如果对具有覆盖较大区域的要素的投影要素类进行缓冲,或正在使用很大的缓冲距离,投影中的变形可能会导致生成错误的缓冲区。
- 点或多点输入 - 通过使用具有地理坐标系的要素类,并以线性单位(米、英尺等,而非诸如度之类的角度单位)指定缓冲距离,可在缓冲点时完全避免变形。当使用此种输入组合时(以线性单位缓冲的地理坐标系中的点或多点要素),输出将为真实的测地线缓冲区。测地线缓冲区在任意平面地图上均显示为椭圆形,并且仅当其显示于球体上时才显示为完美的圆形(可使用 ArcGlobe 或 ArcGIS Explorer 应用程序来查看三维球体上的地理数据)。
- 线或面输入 - 只能通过使用最小化距离变形的投影(如等距圆锥或等距方位投影)来最小化变形。
通过使用投影工具,可更改输入要素类的坐标系,或在执行“缓冲区”工具前设置输出坐标系地理处理环境,然后该坐标系将会用于创建缓冲区。
有关详细信息,请参阅缓冲区的工作原理。
-
如果对面要素进行缓冲,则可使用负缓冲距离在面要素内部创建缓冲区。使用负缓冲距离将会使面边界减小指定的距离。
警告:如果负缓冲距离足够大,使得面缩减至不存在,则将生成空几何。此时将出现一条警告消息,并且不会将任何空几何要素写入输出要素类。
-
如果将“缓冲区”工具的输出用作叠加操作(如联合或相交)的输入,建议使用融合类型选项 LIST 或 ALL 来减少此工具所生成的叠加要素的数量。使用融合类型选项 LIST,并在融合字段中仅选择要执行的分析所需的输入要素的属性。此操作将减少叠加操作中所涉及的数据集之间的空间关系的数量,从而减少处理过程所需的内存量和时间。
-
使用融合类型选项 NONE 可将字段 BUFF_DIST 添加到输出要素类。该字段包含用于以输入要素坐标系的线性单位缓冲各要素的缓冲距离。
-
如果使用输入要素中的字段来获取缓冲距离,则该字段的值可以是数字 (5),也可以是数字加上有效的线性单位(5 千米)。如果字段值只是数字,则表示这些距离使用输入要素空间参考的线性单位。可在输入字段值的同时输入任何有效的线性单位,而要素将被缓冲所指定的距离。如果在字段值中指定的线性单位无效或无法识别,则默认情况下将使用输入要素空间参考的线性单位。
-
如果将融合类型选项设置为 ALL 或 LIST,则“缓冲区”工具可创建非常大的多部分 (multipart) 面要素。当使用的融合字段包含少量的唯一值或者在将所有面融合为单个面时尤其如此。如果面要素非常大,则在地图上绘制或编辑要素时,可能会引起显示故障并降低性能。要避免这些潜在问题,可使用“缓冲区”工具输出的多部分(multipart)至单部分(singlepart) 将较大的多部分要素分割为多个较小要素。
-
有关融合类型 ALL 和 LIST 的工作原理的详细信息,请参考融合工具的相关文档。
-
如果要素的缓冲距离是零,则要素将从缓冲过程中排除。
-
由于创建缓冲区所用算法的差异,左侧缓冲区或右侧缓冲区的缓冲区边与完全缓冲区创建的缓冲区边略有不同。两者之间的差异在于输入要素的精度范围。
-
融合字段参数“添加字段”按钮仅在“模型构建器”中使用。在模型构建器中,如果前面的工具尚未运行或其派生的数据不存在,则可能不会使用字段名称来填充融合字段参数。“添加字段”按钮可用于将所需字段添加到融合字段列表,以完成“缓冲区”工具对话框。
仅当具有 ArcInfo 许可时,侧类型 (line_side) 选项 LEFT、RIGHT 和 OUTSIDE_ONLY 以及末端类型 (line_end_type) 选项 FLAT 才可用。
语法
参数 | 说明 | 数据类型 |
in_features |
要进行缓冲的输入点、线或面要素。 | Feature Layer |
out_feature_class |
包含输出要素缓冲区的要素类。 | Feature Class |
buffer_distance_or_field |
创建的缓冲区与输入要素的距离。缓冲距离可以用表示线性距离的某个值来指定,也可以用输入要素中的某个数值字段(包含用来对每个要素进行缓冲的线性距离)来指定。 如果“距离”的线性单位未指定或输入了“未知”,则将使用输入要素空间参考的线性单位。 | Linear unit ; Field |
line_side (可选) |
将进行缓冲的输入要素的侧。
许可: 此可选参数不适用于 ArcView 或 ArcEditor 级别许可。 | String |
line_end_type (可选) |
线输入要素末端的缓冲区形状。此参数对于面输入要素无效。
许可: 此可选参数不适用于 ArcView 或 ArcEditor 级别许可。 | String |
dissolve_option (可选) |
指定要执行哪种融合操作以移除输出缓冲区重叠。
| String |
dissolve_field [dissolve_field,...] (可选) |
融合输出缓冲区所依据的输入要素的字段列表。融合共享所列字段(传递自输入要素)属性值的所有缓冲区。 | Field |
代码示例
以下 Python 窗口脚本演示了如何使用“缓冲区”工具:
import arcpy arcpy.env.workspace = "C:/data" arcpy.Buffer_analysis("roads", "C:/output/majorrdsBuffered" "100 Feet", "FULL", "ROUND", "LIST", "Distance")
查找尚未被主要道路充斥的相应植被区域。
# Name: Buffer.py # Description: Find areas of suitable vegetation which exclude areas heavily impacted by major roads # Author: ESRI # import system modules import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data/Habitat_Analysis.gdb" # Select suitable vegetation patches from all vegetation veg = "vegtype" suitableVeg = "C:/output/Output.gdb/suitable_vegetation" whereClause = "HABITAT = 1" arcpy.Select_analysis(veg, suitableVeg, whereClause) # Buffer areas of impact around major roads roads = "majorrds" roadsBuffer = "C:/output/Output.gdb/buffer_output" distanceField = "Distance" sideType = "FULL" endType = "ROUND" dissolveType = "LIST" dissolveField = "Distance" arcpy.Buffer_analysis(roads, roadsBuffer, distanceField, sideType, endType, dissolveType, dissolveField) # Erase areas of impact around major roads from the suitable vegetation patches eraseOutput = "C:/output/Output.gdb/suitable_vegetation_minus_roads" xyTol = "1 Meters" arcpy.Erase_analysis(suitableVeg, roadsBuffer, eraseOutput, xyTol)