缓冲(分析)工具的工作原理
如何创建缓冲区
缓冲例程将遍历输入要素的每个折点并创建缓冲区偏移。根据这些偏移创建输出缓冲区要素。
在线周围创建偏移
输入线要素
在输入线要素周围创建的偏移
通过偏移获得的缓冲区
缓冲距离的描述
可以输入一个固定值或一个包含数值的字段作为缓冲距离参数。
示例 1:固定距离
下图显示的是线要素类的缓冲区,输入 20 作为缓冲距离、FLAT 作为末端类型、FULL 作为侧类型并选择 ALL 作为融合类型。
由于缓冲距离为常量,因此缓冲后所有要素的宽度都相同。
示例 2:由字段决定的距离
此示例说明的是线要素类的缓冲区,将包含了 10、20 和 30 的数值型字段作为缓冲距离、FLAT 作为末端类型、FULL 作为侧类型并选择 ALL 作为融合类型。
由于缓冲距离取决于字段值,因此可以在同一操作中应用多种不同的缓冲宽度。
欧氏缓冲和测地线缓冲
测地线缓冲
有两种方法可以生成缓冲偏移:欧氏方法(或 2D 笛卡尔)和测地线方法。
欧氏缓冲
此方法使用二维距离公式计算偏移以缓冲输入几何。
要获得最佳结果,应在使特定输入数据集变形达到最小的投影坐标系中执行缓冲操作。
测地线缓冲(仅限点和多点)
此方法通过将偏移投影到地球表面(椭球体)上来计算各个偏移,进而缓冲输入几何。
测地线缓冲方法将生成不受投影坐标系中固有变形影响的缓冲区。
在为地理坐标系中的要素生成缓冲区时,此方法尤为重要。这是因为,尽管在整个坐标系中对纬度的转换固定不变,但是由经度到线性距离的转换却会随着远离赤道而发生很大变化。
例如,在赤道上,1 十进制度等于 111.325 千米,但是从赤道向北或向南移动时,经线的间距将越来越小:在纬度为 30 度的位置,一经度等于 96.49 千米,但在纬度为 60 度的位置,一经度只等于 55.80 千米。最后,所有经线均交汇于极点。
下图显示的是,在逐渐远离赤道的过程中,长宽分别为 1 经度和 1 纬度的方形区域在形状和大小上将如何变化。
在满足以下三个条件时使用测地线缓冲算法:
- 输入要素类包含一点或多点。
- 输入要素类具有地理坐标系(未投影)。
- 使用线性单位(例如,千米或英里)指定缓冲距离。
使用测地线缓冲进行分析的示例
操作目标是在一组选定的世界城市周围生成缓冲距离为 500 千米的缓冲区。在过去,此类操作可能难以完成。不过,现在使用测地线缓冲方法只需以下两个步骤即可:首先在地理坐标系中选择输入点图层(在下图中以黑色三角形标出),然后将缓冲距离指定为“500 千米”。
距离赤道越远,生成的缓冲区的变形程度越大。
雅加达距离赤道仅 6 度,因此为其生成的缓冲区非常接近圆形。
另一方面,斯德哥尔摩位于北纬 59 度。在地理坐标系中进行渲染时,该缓冲区会产生明显变形,尤其是在东西方向上。使用 ArcMap 中的“测量”工具时,将返回一个以该点为圆心、以 500 千米为半径的圆作为缓冲区。这是因为“测量”工具也计算测地线距离。
将 ArcMap 数据框坐标系切换到 UTM 33 区(适用于斯德哥尔摩)之后可以看到,在合适的投影坐标系中,该缓冲区非常接近圆形。
加拿大努纳维特地区的阿勒特是世界上最北部的人类定居地。下图中黑色三角形所示位置即为阿勒特。黄色区域表示在该点周围生成的缓冲距离为 1,000 千米的测地线缓冲区。
将 ArcMap 数据框坐标系设置为北极投影时,阿勒特周围的缓冲区也将变为圆形。
BUFF_DIST 字段
在 ArcGIS 9.3 之前的版本中,BUFF_DIST 字段会准确反映用户输入的值。例如,如果数据的空间参考以英尺作为线性单位并以 50 米作为缓冲距离,则输出数据的属性表将如下所示:
从 ArcGIS 9.3 开始,BUFF_DIST 字段中的值将使用输入数据的单位。以上述情况为例,此时会将 50 米缓冲距离转换为以输入数据的测量单位显示,此例中为英尺:
有两种情况例外:
- 如果输入数据位于地理坐标系中,并且使用角度单位和线性单位(如千米或英里)作为缓冲距离单位,则不会应用任何转换。BUFF_DIST 字段中的值即输入的值。
- 如果输入数据的空间参考未知,则不会应用任何转换,因此 BUFF_DIST 字段中的值即输入的值。
注:BUFF_DIST 字段值的单位通常是设置输出坐标系环境时使用的单位。
下表总结了未设置输出坐标系环境时可能出现的情况。请注意,线性既包括公制测量单位也包括非公制测量单位。
数据坐标系单位 |
缓冲距离单位 |
BUFF_DIST 字段中的距离单位 |
---|---|---|
角度 |
角度或线性 |
无转换 |
线性 |
角度 |
转换为坐标系单位 |
线性 |
Linear |
转换为坐标系单位 |
角度或线性 |
未知 |
假定为输入坐标系单位 |
未知 |
角度或线性 |
无转换 |