创建缓冲区 (GeoAnalytics)

摘要

在输入要素周围某一指定距离内创建缓冲区。

使用情况

  • 方法参数确定了缓冲区的构建方式。 构建缓冲区有两种基本方法:欧式方法和测地线方法。

    • 欧式缓冲区测量二维笛卡尔平面中的距离,该平面用来计算平坦表面(笛卡尔平面)上两点之间的直线距离或欧氏距离。 欧氏缓冲区是更常见的缓冲区类型,特别适合于分析投影坐标系中要素周围的距离,这些要素集中于相对较小的区域(如一个 UTM 带)。 欧式缓冲区也称为平面缓冲区。
    • 测地线缓冲区表示地球的实际形状(即椭圆体,更准确地说是大地水准面)。 并计算曲面(大地水准面)上而不是平坦表面(笛卡尔平面)上两点间的距离。 在下列情况下,您应始终考虑创建测地线缓冲区:
      • 输入要素处于分散状态(它们覆盖多个 UTM 带、大面积区域或整个地球)。
      • 输入要素的空间参考(地图投影)为保留其他属性(如面积)使距离发生变形。

  • 测地线缓冲区在平面地图上可能会显示异常,但当显示在地球上时,这些缓冲区的外观将正常。

  • 方法参数确定了缓冲区的创建方式。

    • 平面方法会根据输入要素的坐标系自动识别要使用的方法。
      • 如果输入要素位于投影坐标系中,则将创建欧氏缓冲区。
      • 如果输入要素位于地理坐标系中,则将创建测地线缓冲区。
    • 默认设置为测地线。 无论使用哪种输入坐标系,测地线方法都会创建形状不变的测地线缓冲区。 形状不变的测地线缓冲区会在创建输出测地线缓冲区之前增密输入要素。 该操作将创建可更准确地表示输入要素形状的缓冲区。 如果考虑缓冲区的形状以及该形状与原始输入要素的匹配程度,建议您使用此选项,尤其在输入数据位于地理坐标系中时。 在某些情况下,与使用平面选项创建测地线缓冲区相比,使用此选项创建缓冲区可能需要花费更长的时间,但生成的缓冲区能更加精确地匹配输入要素的形状。

  • 使用平面方法时,利用最小化距离变形且在地理上适用于输入数据的投影(例如等距圆锥投影或等距方位投影),可提高使用经过投影了的输入数据所创建的缓冲区的精度。

  • 如果对面要素进行缓冲,则可使用负缓冲距离在面要素内部创建缓冲区。 使用负缓冲距离将会使面的边界向内缩减指定的距离。

    注:

    如果负缓冲距离足够大,使得面缩减至不存在,则将生成空几何。 此时将出现一条警告消息,并且不会将任何空几何要素写入输出数据集。

  • 可通过以下三个选项之一输入缓冲区大小:

    • 距离 - 使用常数值(所有缓冲区大小都将相同)
    • 字段 - 使用字段中的值(不同要素的缓冲区大小可以不同)
    • 表达式 - 向各个要素应用表达式(不同要素的基于表达式的值可以不同)

      了解有关应用缓冲区表达式的详细信息

  • 默认情况下,创建缓冲区工具会在缓冲区相交位置创建重叠缓冲区。 如果输入要素为面,则缓冲区内将包括输入区域。 您可以使用融合和多部分参数来控制重叠缓冲区的处置方式。 以下三种融合选项可供使用:

    • - 该选项为默认选项。 缓冲区将在其相交位置重叠。
    • 全部 - 将融合所有要素。 多部分参数可用于指定是将所有要素融合为一个要素(多部分为 true),还是仅融合重叠要素(多部分为 false)。
    • 字段 - 将根据字段值融合要素。 您可以选择一个或多个字段,并将类值融合在一起。 多部分参数可用于指定是将所有匹配字段要素融合为一个要素(多部分为 true),还是仅融合重叠匹配字段要素(多部分为 false)。

  • 如果使用输入图层参数中的字段来获取缓冲距离,则该字段的值可以是数字(例如 5),也可以是数字加上有效的线性单位(例如 5 千米)。 如果字段值为数字,则假定距离使用输入图层参数空间参考的线性单位(除非该输入图层使用地理坐标系,这时该值以米为单位)。 如果在字段值中指定的线性单位无效或无法识别,则默认情况下将使用输入要素空间参考的线性单位。

  • 在使用全部字段进行融合时,您可以计算统计数据。 统计数据仅适用于融合所有要素或字段值,无法(使用多部分参数)按地理位置进行应用。 下表中将说明这些选项将如何通过下方屏幕截图中所示的六个要素发挥作用。 颜色用于表示字段融合所使用的字段值(蓝色或橙色)。

    用于缓冲区融合的输入点示例

    融合选项多部分为 false(默认)多部分为 true
    未应用融合的缓冲区选项

    当没有融合应用于缓冲要素时,系统将创建六个要素。 这是默认设置。 与此相同的还有标准分析工具的重叠选项。

    如果融合选项为,则多部分无法为 true。

    全部
    多部分为 false 时融合的所有要素

    在融合了所有值且多部分为 false 时,系统将创建三个要素。 系统仅会融合重叠要素。 与此相同的还有标准分析工具的融合选项。

    多部分为 true 时融合的所有要素

    在融合了所有值且多部分为 true 时,系统将创建一个要素。 如果选中了此选项,则结果将始终为一个要素。

    字段
    多部分为 false 时融合的具有类值的要素

    当根据字段应用融合时,系统将创建四个要素(此处字段为输入点的颜色)。 系统仅会融合指定字段值相同的重叠要素。

    多部分为 true 时融合的具有类值的要素

    当根据字段应用融合且允许多部分时,系统将创建两个要素(此处字段为输入点的颜色)。 字段值相同的要素将始终为单个要素。

  • 您可以使用表达式类型的缓冲区,基于数值字段和数学运算符创建方程。 有关详细信息,请参阅 ArcGIS Enterprise 10.5 和 10.5.1 的缓冲区表达式ArcGIS Enterprise 10.6 及更高版本的缓冲区表达式。 除非另行指定,否则假定缓冲区表达式中的数值以米为单位。

  • 输出数据集将包含一个 BUFF_DIST 字段,该字段包含用于缓冲各要素的缓冲距离(使用输入要素坐标系的线性单位)。 如果已设置输出坐标系,则 BUFF_DIST 单位将位于该坐标系当中。 如果字段在输出中已存在,系统会在字段名称的结尾追加一个数字以确保其唯一性(例如,BUFF_DIST1)。

  • 您可以执行以下一项或多项操作来提高创建缓冲区工具的性能。

    • 设置范围环境,以便仅分析感兴趣的数据。
    • 使用平面缓冲区。
    • 请勿融合您的缓冲区结果。
    • 本地数据用于分析运行的位置。

  • 此地理处理工具由 ArcGIS GeoAnalytics Server 作为支持。 分析将在 GeoAnalytics Server 上完成,且结果将存储在 ArcGIS Enterprise 的内容中。

  • GeoAnalytics Server 工具运行时,GeoAnalytics Server 上的分析已完成。 要获得最佳性能,通过 ArcGIS Enterprise 门户上托管的要素图层或通过大数据文件共享,可以将数据用于 GeoAnalytics Server。 在分析开始之前,非 GeoAnalytics Server 本地数据将被转移到您的 GeoAnalytics Server。 这意味着运行工具需要更长时间,并且在某些情况下,从 ArcGIS ProGeoAnalytics Server 移动数据可能会失败。 失败的阈值取决于网络速度,以及数据的大小和复杂性。 建议您始终共享数据或创建大数据文件共享。

    了解有关将数据共享至您的门户的详细信息。

    了解有关通过 Server Manager 创建大数据文件共享的详细信息

  • 还可使用以下方法完成相似性分析:

    • “分析”工具箱中的 ArcGIS Pro 工具缓冲区
    • “要素分析”工具箱中的 ArcGIS Pro 工具创建缓冲区

参数

标注说明数据类型
输入图层

要进行缓冲的点、折线或面要素。

Feature Set
输出名称

输出要素服务的名称。

String
方法

指定将用于创建缓冲区的方法。

  • 测地线无论使用哪种输入坐标系,均使用形状不变的测地线缓冲区方法创建缓冲区。 这是默认设置。
  • 平面如果输入要素位于投影坐标系中,则将创建欧氏缓冲区。 如果输入要素位于投影坐标系中,则将创建测地线缓冲区。 “输出坐标系”的环境设置可用于指定坐标系。
String
缓冲区类型
(可选)

指定缓冲距离将如何定义。

  • 距离分析为所有要素应用相同的线性距离。
  • 字段选择数字或字符串字段表示缓冲距离。
  • 表达式构建使用字段、常量和数学运算的方程来表示缓冲距离。
String
缓冲字段
(可选)

包含每个要素缓冲距离的字段。 如果字段值为数字,则假定距离使用输入图层空间参考的线性单位,除非该输入图层使用地理坐标系,这时该值以米为单位。 如果在字段值中指定的线性单位无效或无法识别,则默认情况下将使用输入要素空间参考的线性单位。

Field
缓冲距离
(可选)

与要缓冲的输入要素之间的距离。 距离可以米、千米、英尺、码、英里或海里为单位表示。

Linear Unit
缓冲区表达式
(可选)

将用作每个要素的缓冲区的使用字段和数学运算符的方程。 字段必须为数字形式,并且表达式可以包含 [+ - * / ] 运算符和多个字段。 除非另行指定,否则计算后的值以米为单位。 例如,应用将名为 distance 的数值字段(以千米为单位)乘以 2,然后加上 15 米所得到的缓冲区。

ArcGIS Enterprise 10.5 和 10.5.1 的表达式将格式化为 as_kilometers(distance) * 2 + as_meters(15)。 对于 ArcGIS Enterprise 10.6 或更高版本,请使用 Arcade 表达式,例如 as_kilometers($feature["distance"]) * 2 + as_meters(15)

如果将图层添加到地图中,则可以使用字段助手过滤器来构建表达式。

Calculator Expression
融合选项
(可选)

指定将用于移除缓冲区重叠的融合选项。

  • 不考虑重叠,将保持每个要素的独立缓冲区。 这是默认设置。
  • 全部将所有缓冲区融合为单个要素,从而移除所有重叠。
  • 列表将融合共享所列字段(传递自输入要素)属性值的所有缓冲区。
String
融合字段
(可选)

融合输出缓冲区所依据的输入要素的一个或多个字段列表。 将融合在所列字段中共享属性值的所有缓冲区。 仅当融合选项列表时,才需要此选项。

Field
汇总字段
(可选)

指定可应用于数值型和字符串型字段的统计数据。 如果留空,则只计算计数。 仅当融合选项列表全部时才会应用这些统计数据。

  • 计数 - 非空值的数目。 可用于数值字段或字符串。 [null, 0, 2] 的计数为 2
  • 总和 - 字段内数值的总和。 [null, null, 3] 的总和为 3
  • 平均值 - 数值的平均值。 [0, 2, null] 的平均值为 1
  • 最小值 - 数值字段的最小值。 [0, 2, null] 的最小值为 0
  • 最大值 - 数值字段的最大值。 [0, 2, null] 的最大值为 2
  • 标准差 - 数值字段的标准差。 [1] 的标准差为 null[null, 1,1,1] 的标准差为 null
  • 方差 - 轨迹中数值字段内数值的方差。 [1] 的方差为 null[null, 1, 1, 1] 的方差为 null
  • 范围 - 数值字段的范围。 其计算方法为最大值减去最小值。 [0, null, 1] 的范围为 1[null, 4] 的范围为 0
  • 任何 - 字符串型字段中的示例字符串。

Value Table
多部件
(可选)

指定是否将创建多部件要素。

  • 选中 - 创建输出多部件要素(适当时)。
  • 未选中 - 将为各部分创建单独的要素,而不是创建多部件要素。 这是默认设置。
Boolean
数据存储
(可选)

指定将用于保存输出的 ArcGIS Data Store。 默认设置为时空大数据存储。 在时空大数据存储中存储的所有结果都将存储在 WGS84 中。 在关系数据存储中存储的结果都将保持各自的坐标系。

  • 时空大数据存储输出将存储在时空大数据存储中。 这是默认设置。
  • 关系数据存储输出将存储在关系数据存储中。
String

派生输出

标注说明数据类型
输出要素类

输出缓冲区要素。

Feature Set

arcpy.geoanalytics.CreateBuffers(input_layer, output_name, method, {buffer_type}, {buffer_field}, {buffer_distance}, {buffer_expression}, {dissolve_option}, {dissolve_fields}, {summary_fields}, {multipart}, {data_store})
名称说明数据类型
input_layer

要进行缓冲的点、折线或面要素。

Feature Set
output_name

输出要素服务的名称。

String
method

指定将用于创建缓冲区的方法。

  • GEODESIC无论使用哪种输入坐标系,均使用形状不变的测地线缓冲区方法创建缓冲区。 这是默认设置。
  • PLANAR如果输入要素位于投影坐标系中,则将创建欧氏缓冲区。 如果输入要素位于投影坐标系中,则将创建测地线缓冲区。 “输出坐标系”的环境设置可用于指定坐标系。
String
buffer_type
(可选)

指定缓冲距离将如何定义。

  • DISTANCE为所有要素应用相同的线性距离。
  • FIELD选择数字或字符串字段表示缓冲距离。
  • EXPRESSION构建使用字段、常量和数学运算的方程来表示缓冲距离。
String
buffer_field
(可选)

包含每个要素缓冲距离的字段。 如果字段值为数字,则假定距离使用 input_layer 空间参考的线性单位,除非该 input_layer 使用地理坐标系,这时该值以米为单位。 如果在字段值中指定的线性单位无效或无法识别,则默认情况下将使用输入要素空间参考的线性单位。

Field
buffer_distance
(可选)

与要缓冲的输入要素之间的距离。 距离可以米、千米、英尺、码、英里或海里为单位表示。

Linear Unit
buffer_expression
(可选)

将用作每个要素的缓冲区的使用字段和数学运算符的方程。 字段必须为数字形式,并且表达式可以包含 [+ - * / ] 运算符和多个字段。 除非另行指定,否则计算后的值以米为单位。 例如,要应用将名为 distance 的数值字段(以千米为单位)乘以 2,然后加上 15 米所得到的缓冲区。

对于 ArcGIS Enterprise 10.5 和 10.5.1,表达式的格式如下:as_kilometers(distance) * 2 + as_meters(15)。 对于 ArcGIS Enterprise 10.6 或更高版本,请使用 Arcade 表达式,例如 as_kilometers($feature["distance"]) * 2 + as_meters(15)

Calculator Expression
dissolve_option
(可选)

指定将用于移除缓冲区重叠的融合选项。

  • NONE不考虑重叠,将保持每个要素的独立缓冲区。 这是默认设置。
  • ALL将所有缓冲区融合为单个要素,从而移除所有重叠。
  • LIST将融合共享所列字段(传递自输入要素)属性值的所有缓冲区。
String
dissolve_fields
[dissolve_fields,...]
(可选)

融合输出缓冲区所依据的输入要素的一个或多个字段列表。 将融合在所列字段中共享属性值的所有缓冲区。 仅当 dissolve_optionLIST 时,才需要此选项。

Field
summary_fields
[summary_fields,...]
(可选)

指定可应用于数值型和字符串型字段的统计数据。 如果留空,则只计算计数。 仅当 dissolve_optionLISTALL 时才会应用这些统计数据。

  • COUNT - 非空值的数目。 可用于数值字段或字符串。 [null, 0, 2] 的计数为 2
  • SUM - 字段内数值的总和。 [null, null, 3] 的总和为 3
  • MEAN - 数值的平均值。 [0,2, null] 的平均值为 1
  • MIN - 数值字段的最小值。 [0, 2, null] 的最小值为 0
  • MAX - 数值字段的最大值。 [0, 2, null] 的最大值为 2
  • STDDEV - 数值字段的标准差。 [1] 的标准差为 null[null, 1,1,1] 的标准差为 null
  • VAR - 轨迹中数值字段内数值的方差。 [1] 的方差为 null[null, 1,1,1] 的方差为 null
  • RANGE - 数值字段的范围。 其计算方法为最大值减去最小值。 [0, null, 1] 的范围为 1[null, 4] 的范围为 0
  • ANY - 字符串型字段中的示例字符串。

Value Table
multipart
(可选)

指定是否将创建多部件要素。

  • MULTI_PART创建输出多部件要素(适当时)。
  • SINGLE_PART将为各部分创建单独的要素,而不是创建多部件要素。 这是默认设置。
Boolean
data_store
(可选)

指定将用于保存输出的 ArcGIS Data Store。 默认为 SPATIOTEMPORAL_DATA_STORE。 在时空大数据存储中存储的所有结果都将存储在 WGS84 中。 在关系数据存储中存储的结果都将保持各自的坐标系。

  • SPATIOTEMPORAL_DATA_STORE输出将存储在时空大数据存储中。 这是默认设置。
  • RELATIONAL_DATA_STORE输出将存储在关系数据存储中。
String

派生输出

名称说明数据类型
output

输出缓冲区要素。

Feature Set

代码示例

CreateBuffers(Python 窗口)

下面的 Python 窗口脚本演示了如何使用 CreateBuffers 工具。

#-------------------------------------------------------------------------------
# Name: CreateBuffers.py
# Description: Buffer damaged building by 300 meters

# Requirements: ArcGIS GeoAnalytics Server

# Import system modules
import arcpy

# Set local variables
inFeatures = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/DamageAssessment/FeatureServer/0"
outFS = "DangerousAreas"
dataStore = "SPATIOTEMPORAL_DATA_STORE"

# Execute Create Buffers
arcpy.geoanalytics.CreateBuffers(inFeatures, outFS, "GEODESIC", "DISTANCE", 
                                 None, "300 Meters", None, "ALL", None, None, 
                                 "SINGLE_PART", dataStore)

环境

特殊情况

输出坐标系

将用于分析的坐标系。 除非由该参数进行指定,否则将基于输入坐标系完成分析。 对于 GeoAnalytics Tools,最终结果将存储于 WGS84 中的时空数据存储之内。

许可信息

  • Basic: 需要 ArcGIS GeoAnalytics Server
  • Standard: 需要 ArcGIS GeoAnalytics Server
  • Advanced: 需要 ArcGIS GeoAnalytics Server

相关主题