描述
在输入要素周围某一指定距离内创建缓冲区。
使用方法
方法参数确定了缓冲区的构建方式。构建缓冲区有两种基本方法:欧式方法和测地线方法。
- 欧式缓冲区测量二维笛卡尔平面中的距离,该平面用来计算平坦表面(笛卡尔平面)上两点之间的直线距离或欧氏距离。欧氏缓冲区是更常见的缓冲区类型,特别适合于分析投影坐标系中要素周围的距离,这些要素集中于相对较小的区域(如一个 UTM 带)。欧式缓冲区也称为平面缓冲区。
- 测地线缓冲区表示地球的实际形状(即椭圆体,更准确地说是大地水准面)。并计算曲面(大地水准面)上而不是平坦表面(笛卡尔平面)上两点间的距离。在下列情况下,您应始终考虑创建测地线缓冲区:
- 输入要素处于分散状态(它们覆盖多个 UTM 带、大面积区域或整个地球)。
- 输入要素的空间参考(地图投影)为保留其他属性(如面积)使距离发生变形。
测地线缓冲区在平面地图上可能会显示异常,但当显示在地球上时,这些缓冲区的外观将正常。
方法参数确定了缓冲区的创建方式。
- 平面方法会根据输入要素的坐标系自动识别要使用的方法。
- 如果输入要素位于投影坐标系中,则将创建欧氏缓冲区。
- 如果输入要素位于地理坐标系中,则将创建测地线缓冲区。
- 默认设置为测地线。无论使用哪种输入坐标系,测地线方法都会创建形状不变的测地线缓冲区。形状不变的测地线缓冲区会在创建输出测地线缓冲区之前增密输入要素。该操作将创建可更准确地表示输入要素形状的缓冲区。如果考虑缓冲区的形状以及该形状与原始输入要素的匹配程度,建议您使用此选项,尤其在输入数据位于地理坐标系中时。在某些情况下,与使用平面选项创建测地线缓冲区相比,使用此选项创建缓冲区可能需要花费更长的时间,但生成的缓冲区能更加精确地匹配输入要素的形状。
- 平面方法会根据输入要素的坐标系自动识别要使用的方法。
使用平面方法时,利用最小化距离变形且在地理上适用于输入数据的投影(例如等距圆锥投影或等距方位投影),可提高使用经过投影了的输入数据所创建的缓冲区的精度。
如果对面要素进行缓冲,则可使用负缓冲距离在面要素内部创建缓冲区。使用负缓冲距离将会使面的边界向内缩减指定的距离。
注:
如果负缓冲距离足够大,使得面缩减至不存在,则将生成空几何。此时将出现一条警告消息,并且不会将任何空几何要素写入输出数据集。
可通过以下三个选项之一输入缓冲区大小:
- 距离 - 使用常数值(所有缓冲区大小都将相同)
- 字段 - 使用字段中的值(不同要素的缓冲区大小可以不同)
- 表达式 - 向各个要素应用表达式(不同要素的基于表达式的值可以不同)
默认情况下,创建缓冲区工具会在缓冲区相交位置创建重叠缓冲区。如果输入要素为面,则缓冲区内将包括输入区域。您可以使用融合和多部分参数来控制重叠缓冲区的处置方式。以下三种融合选项可供使用:
- 无 - 该选项为默认选项。缓冲区将在其相交位置重叠。
- 全部 - 将融合所有要素。多部分参数可用于指定是将所有要素融合为一个要素(多部分为 true),还是仅融合重叠要素(多部分为 false)。
- 字段 - 将根据字段值融合要素。您可以选择一个或多个字段,并将类值融合在一起。多部分参数可用于指定是将所有匹配字段要素融合为一个要素(多部分为 true),还是仅融合重叠匹配字段要素(多部分为 false)。
如果使用输入图层参数中的字段来获取缓冲距离,则该字段的值可以是数字(例如 5),也可以是数字加上有效的线性单位(例如 5 千米)。如果字段值为数字,则假定距离使用输入图层参数空间参考的线性单位(除非该输入图层使用地理坐标系,这时该值以米为单位)。如果在字段值中指定的线性单位无效或无法识别,则默认情况下将使用输入要素空间参考的线性单位。
在使用全部或字段进行融合时,您可以计算统计数据。统计数据仅适用于融合所有要素或字段值,无法(使用多部分参数)按地理位置进行应用。下表中将说明这些选项将如何通过下方屏幕截图中所示的六个要素发挥作用。颜色用于表示字段融合所使用的字段值(蓝色或橙色)。
融合选项 多部分为 false(默认) 多部分为 true 无 当没有融合应用于缓冲要素时,系统将创建六个要素。这是默认设置。与此相同的还有标准分析工具的重叠选项。
如果融合选项为无,则多部分无法为 true。
全部 在融合了所有值且多部分为 false 时,系统将创建三个要素。系统仅会融合重叠要素。与此相同的还有标准分析工具的融合选项。
在融合了所有值且多部分为 true 时,系统将创建一个要素。如果选中了此选项,则结果将始终为一个要素。
字段 当根据字段应用融合时,系统将创建四个要素(此处字段为输入点的颜色)。系统仅会融合指定字段值相同的重叠要素。
当根据字段应用融合且允许多部分时,系统将创建两个要素(此处字段为输入点的颜色)。字段值相同的要素将始终为单个要素。
您可以使用表达式类型的缓冲区,基于数值字段和数学运算符创建方程。有关详细信息,请参阅 GeoAnalytics Desktop 工具箱中的 Arcade 表达式。除非另行指定,否则假定缓冲区表达式中的数值以米为单位。
还可使用以下方法完成相似性分析:
输出数据集将包含一个 BUFF_DIST 字段,该字段包含用于缓冲各要素的缓冲距离(使用输入要素坐标系的线性单位)。如果已设置输出坐标系,则 BUFF_DIST 单位将位于该坐标系当中。如果字段在输出中已存在,系统会在字段名称的结尾追加一个数字以确保其唯一性(例如 BUFF_DIST1)。
您可以执行以下一项或多项操作来提高创建缓冲区工具的性能。
- 设置范围环境,以便仅分析感兴趣的数据。
- 使用平面缓冲区。
- 请勿融合您的缓冲区结果。
- 将本地数据用于分析运行的位置。
此地理处理工具由 Spark 作为支持。可在台式计算机上并行使用多个核来完成分析。要了解有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项。
运行 GeoAnalytics Desktop 工具时,将在台式计算机上完成分析。为获得最佳性能,应在桌面上提供数据。如果您使用的是托管要素图层,则建议使用 ArcGIS GeoAnalytics Server。如果您的数据不是本地数据,则运行工具需要更长时间。要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics 工具。
语法
arcpy.gapro.CreateBuffers(input_layer, out_feature_class, method, {buffer_type}, {buffer_field}, {buffer_distance}, {buffer_expression}, {dissolve_option}, {dissolve_fields}, {summary_fields}, {multipart})
参数 | 说明 | 数据类型 |
input_layer | 要进行缓冲的点、折线或面要素。 | Feature Layer |
out_feature_class | 缓冲结果的新要素类。 | Feature Class |
method | 指定将用于创建缓冲区的方法。
| String |
buffer_type (可选) | 指定缓冲距离将如何定义。
| String |
buffer_field (可选) | 包含每个要素缓冲距离的字段。如果字段值为数字,则假定距离使用 input_layer 空间参考的线性单位,除非该 input_layer 使用地理坐标系,这时该值以米为单位。如果在字段值中指定的线性单位无效或无法识别,则默认情况下将使用输入要素空间参考的线性单位。 | Field |
buffer_distance (可选) | 与要缓冲的输入要素之间的距离。距离可以米、千米、英尺、码、英里或海里为单位表示。 | Linear Unit |
buffer_expression (可选) | 将用作每个要素的缓冲区的使用字段和数学运算符的方程。字段必须为数字形式,并且表达式可以包含 [+ - * / ] 运算符和多个字段。除非另行指定,否则计算后的值以米为单位。例如,应用将名为 distance 的数值字段(以千米为单位)乘以 2,然后加上 15 米所得到的缓冲区。 请使用 Arcade 表达式,例如 as_kilometers($feature["distance"]) * 2 + as_meters(15)。 | Calculator Expression |
dissolve_option (可选) | 指定将用于移除缓冲区重叠的融合选项。
| String |
dissolve_fields [dissolve_fields,...] (可选) | 融合输出缓冲区所依据的输入要素的一个或多个字段列表。将融合在所列字段中共享属性值的所有缓冲区。仅当 dissolve_option 为 LIST 时,才需要此选项。 | Field |
summary_fields [summary_fields,...] (可选) | 指定可应用于数值型和字符串型字段的统计数据。如果留空,则只计算计数。仅当 dissolve_option 为 LIST 或 ALL 时才会应用这些统计数据。
| Value Table |
multipart (可选) | 指定是否将创建多部件要素。
| Boolean |
代码示例
以下 Python 窗口脚本演示了如何使用 CreateBuffers 工具。
#-------------------------------------------------------------------------------
# Name: CreateBuffers.py
# Description: Buffer damaged building by 300 meters
# Import system modules
import arcpy
arcpy.env.workspace = "C:/data/DamageSurvey.gdb"
# Set local variables
inFeatures = "DamageAssessment"
out = "DangerousAreas"
# Execute Create Buffers
arcpy.gapro.CreateBuffers(inFeatures, out, "GEODESIC", "DISTANCE",
None, "300 Meters", None, "ALL", None, None,
"SINGLE_PART")
许可信息
- Basic: 否
- Standard: 否
- Advanced: 是