标注 | 说明 | 数据类型 |
输入要素 | 将进行缓冲的输入点、线或面要素。 | Feature Layer |
输出要素类 |
包含输出缓冲区的要素类。 | Feature Class |
距离 [值或字段] |
与要缓冲的输入要素之间的距离。 该距离可以用表示线性距离的某个值来指定,也可以用输入要素中的某个字段(包含用来对每个要素进行缓冲的距离)来指定。 有关该工具如何处理线性单位的详细信息,请参阅“使用方法”部分。 | Linear Unit; Field |
融合类型 (可选) | 指定移除缓冲区重叠要执行的融合操作类型。
| String |
融合字段 (可选) |
融合输出缓冲区所依据的输入要素的字段列表。 将融合共享所列字段(传递自输入要素)属性值的所有缓冲区。 | Field |
方法 (可选) | 指定是使用平面方法还是测地线方法来创建缓冲区。
| String |
最大偏移偏差 (可选) |
输出缓冲区边界将从实际缓冲区边界偏移的最大距离。 虽然缓冲区的实际边界为曲线,但将对输出边界进行增密。 可以使用此参数来控制面边界与实际缓冲区边界的近似程度。 如果此参数未设置或设置为 0,则工具将确定最大偏差。 建议您使用默认值。 造成工具或后续分析中系统性能下降的原因可能为使用的最大偏移偏差过小。 | Linear Unit |
插图
使用情况
所有输入都必须具有空间索引。 可以使用添加空间索引工具创建索引(专门针对 shapefile),或者重新构建现有索引(如果存在任何不正确的可能性)。
如缓冲区的工作原理所述,缓冲区工具的一个重要特征为方法参数,该参数用于确定缓冲区的构建方式。 构建缓冲区有两种基本方法(欧式方法和测地线方法),如下所示:
- 欧式缓冲区测量二维笛卡尔平面中的距离,该平面用来计算平坦表面上两点之间的距离。 欧氏缓冲区适合于分析投影坐标系中相对较小的区域(如一个 UTM 带)内要素周围的距离。
- 测地线缓冲区表示地球的形状(即椭圆体,更准确地说是大地水准面)。 并计算曲面(大地水准面)上两点间的距离。 测地线缓冲区适用于以下情况:
- 输入要素处于分散状态(覆盖多个 UTM 带、大面积区域或整个地球)。
- 输入要素的空间参考(地图投影)为保留其他属性(如面积)使距离发生变形。
方法参数确定了缓冲区的创建方式。
- 平面选项是默认选项。 该选项将基于输入的坐标系自动确定要使用的方法。
- 如果输入要素位于投影坐标系中,则将创建欧氏缓冲区。
- 如果输入要素位于地理坐标系中且指定的缓冲距离值单位为线性单位(米、英尺等,而非诸如度之类的角度单位),则会创建测地线缓冲区。
- 选项产生的结果与 ArcGIS 10.3 版本之前的缓冲区工具结果相同。
- 对于任何输入坐标系,测地线选项都会创建形状不变的测地线缓冲区。 增密输入要素以创建更准确地表示输入要素形状的缓冲区。 在某些情况下,与使用平面选项创建测地线缓冲区相比,使用此选项创建缓冲区可能需要花费更长的时间。 但生成的缓冲区能更加精确地匹配输入要素的形状。
使用平面选项时,利用最小化距离变形且在地理上适用于输入数据的投影(例如等距圆锥投影或等距方位投影),可提高使用经过投影了的输入数据所创建的缓冲区的精度。
输出要素类将包含一个 BUFF_DIST 字段,该字段包含用于缓冲各要素的缓冲距离。 当输入位于投影坐标系 (PCS) 中且方法参数设置为平面选项时,缓冲距离将采用输入坐标系的线性单位。 当使用测地线选项时,缓冲距离将始终以米为单位。
如果输入中存在 BUFF_DIST 字段,那么在输出中将覆盖该字段的值。 如果使用融合类型值全部或列表,则输出将不包含此字段。
输出要素类将包含一个 ORIG_FID 字段,该字段包含为其创建缓冲区的输入要素的要素 ID。 如果输入中存在 ORIG_FID 字段,那么在输出中将覆盖该字段的值。 如果使用融合类型值全部或列表,则输出将不包含此字段。
如果对面要素进行缓冲,则可使用负缓冲距离在面要素内部创建缓冲区。 使用负缓冲距离将会使面边界向内缩减指定的距离。
警告:
如果负缓冲距离足够大,使得面缩减至不存在,则将生成空几何。 此时将出现一条警告消息,并且不会将任何空几何要素写入输出要素类。
可以使用输入中的字段来设置缓冲距离。 接受数值和文本字段。 在文本字段中,缓冲距离可以为数值(例如 5)或者有效的线性单位,例如 5 千米。
如果缓冲区字段值具有有效的线性单位,则将使用这些单位创建缓冲区。
如果您使用不带线性单位的值并且输入采用 PCS,则缓冲距离将采用输入空间参考的线性单位。 如果方法参数设置为测地线选项,则缓冲距离将始终以米为单位。
如果无法识别线性单位,则缓冲区将采用输入空间参考的线性单位。 有关有效线性单位的详细信息,请参阅线性单位。
缓冲区操作不支持将 z 值从输入缓冲区要素传输到输出缓冲区要素。
缓冲区操作不支持将 m 值从输入缓冲区要素传输到输出缓冲区要素。
此工具支持并行处理因子环境。 如果环境未设置(默认情况下)或已设置为 100,则将启用完全并行处理,同时该工具尝试将工作分配给计算机上的所有逻辑内核。 如果环境设置为 0,则将不会启用并行处理。 如果指定的因子介于 1 到 99 之间,则该工具将通过应用公式(并行处理因子 / 100 * 逻辑内核数)确定要使用的逻辑内核的百分比,其结果将向上舍入到最近的整数值。 如果此公式的结果是 0 或 1,则将不启用并行处理。
参数
arcpy.analysis.PairwiseBuffer(in_features, out_feature_class, buffer_distance_or_field, {dissolve_option}, {dissolve_field}, {method}, {max_deviation})
名称 | 说明 | 数据类型 |
in_features | 将进行缓冲的输入点、线或面要素。 | Feature Layer |
out_feature_class |
包含输出缓冲区的要素类。 | Feature Class |
buffer_distance_or_field |
与要缓冲的输入要素之间的距离。 该距离可以用表示线性距离的某个值来指定,也可以用输入要素中的某个字段(包含用来对每个要素进行缓冲的距离)来指定。 有关该工具如何处理线性单位的详细信息,请参阅“使用方法”部分。 指定距离时,如果线性单位含有两个单词,如 Decimal Degrees,请将两个单词合并成一个词(例如,20 DecimalDegrees)。 | Linear Unit; Field |
dissolve_option (可选) | 指定移除缓冲区重叠要执行的融合操作类型。
| String |
dissolve_field [dissolve_field,...] (可选) |
融合输出缓冲区所依据的输入要素的字段列表。 将融合共享所列字段(传递自输入要素)属性值的所有缓冲区。 | Field |
method (可选) |
指定是使用平面方法还是测地线方法来创建缓冲区。
| String |
max_deviation (可选) |
输出缓冲区边界将从实际缓冲区边界偏移的最大距离。 虽然缓冲区的实际边界为曲线,但将对输出边界进行增密。 可以使用此参数来控制面边界与实际缓冲区边界的近似程度。 如果此参数未设置或设置为 0,则工具将确定最大偏差。 建议您使用默认值。 造成工具或后续分析中系统性能下降的原因可能为使用的最大偏移偏差过小。 | Linear Unit |
代码示例
以下 Python 窗口脚本演示了如何使用 PairwiseBuffer 函数。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.analysis.PairwiseBuffer("roads", "C:/output/majorrdsBuffered", "100 Feet",
"LIST", "Distance")
查找尚未受主要道路严重影响的相应植被区域。
# Name: PairwiseBuffer.py
# Description: Find areas of suitable vegetation that exclude areas heavily
# impacted by major roads.
# Import system modules
import arcpy
# Set environment settings
arcpy.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.analysis.Select(veg, suitableVeg, whereClause)
# Buffer areas of impact around major roads
roads = "majorrds"
roadsBuffer = "C:/output/Output.gdb/buffer_output"
distanceField = "Distance"
dissolveType = "LIST"
dissolveField = "Distance"
arcpy.analysis.PairwiseBuffer(roads, roadsBuffer, distanceField, 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.analysis.Erase(suitableVeg, roadsBuffer, eraseOutput, xyTol)
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是