缓冲区 (Coverage)
插图
用法
-
使用 POLY 选项时,正负距离均可用于缓冲距离。当缓冲项同时包含正数和负数时,可以在同一 Coverage 中收缩某些面而增大其他面。
-
ROUND、FLAT、FULL、LEFT 和 RIGHT 选项仅适用于线数据。
-
小的狭长面可以由“缓冲区”工具创建。当把这些面编码为缓冲区内部的非缓冲区域时,可能会产生问题。可使用消除进行移除。
-
如果缓冲距离为零,则不会对要素进行缓冲处理。如果不想在输入 Coverage 中缓冲某个要素,则可在缓冲项中将其缓冲距离值设置为零,或在缓冲表中将 DIST 值设置为零。
-
在包含岛屿面的 Coverage 上执行缓冲时,缓冲距离大于零的所有面都会进行缓冲处理。不过,由于岛屿缓冲区全部在其周围的面缓冲区之内,因此,在“缓冲区”融合阶段可以将其融合到周围面中,并且该岛屿缓冲区将不可见。
-
无论是否具有 NAT,结点在 Coverage 上均可进行缓冲处理。如果没有 NAT,则必须对 AAT 中的结点进行编号(FNODE# 和 TNODE# 必须大于零)。如果结点编号为零,请运行重新编号结点。
-
LEFT 和 RIGHT 选项表示在线的左侧或右侧生成缓冲区。解释线的“左”或“右”时必须小心谨慎。一条线段定义两个半平面,将一个矩形缓冲区切成两个明确定义的左右部分。连接线段时,其中一条线段左侧的点可能位于另一条连接线段的右侧。可通过“不与线相交”概念防止这种不明确现象出现。
-
由于 LEFT 和 RIGHT 选项使用的是线的拓扑左侧和右侧,因此,要使用这些选项,必须存在线拓扑。要访问“线”缓冲区样式,请在输入 Coverage 上的构建中使用 LINE 和 NODE。
-
BUFFER 功能适用于欧氏空间并使用二维算法。在任何坐标系下,缓冲区的宽度均相同。并不会反映地球的曲率或形状。为获得最佳结果,应在使感兴趣区域变形达到最小的地图投影中生成缓冲区。
-
对于线周围的缓冲区,输出 Coverage 与输入 Coverage 的模糊容差可能不同。输出容差可能会重置为缓冲距离的函数。当缓冲距离较大时可能会发生这种情况,反映出路线逐渐接近于一个具有固定直线段数的圆。如果要避免产生这种影响,可以分多步来“增长”缓冲区。首先,使用短缓冲距离通过 LINE 选项运行“缓冲区”,然后在此基础上使用 POLY 选项运行多个缓冲区,直到获得所需缓冲距离为止。模糊容差仅更改线周围的缓冲区,并不更改面周围的缓冲区。
-
输出 Coverage 的坐标精度由派生 Coverage 的精度环境设置所设置的当前处理规则确定。如果在当前会话期间尚未建立处理规则,那么处理规则将是“最高”。这意味着“缓冲区”将以输入 Coverage 的精度来创建输出 Coverage。
-
在单精度和双精度两个 Coverage 上,“缓冲区”将基于 Coverage 数学精度(基于 BND 的宽度以及小数位数)来计算最小容差。如果计算出的最小容差大于所输入的模糊容差,则使用该最小容差。了解有关如何计算默认模糊容差的详细信息
-
投影文件 (PRJ) 会被复制到输出 Coverage。
语法
参数 | 说明 | 数据类型 |
in_cover |
包含要进行缓冲处理的要素的 Coverage。 | Coverage |
out_cover |
要创建的面缓冲区 Coverage。 | Coverage |
feature_type (可选) |
要进行缓冲处理的要素类:
| String |
buffer_item (可选) |
输入 Coverage 的要素属性表中的某个项,其值用作要素的缓冲距离。如果使用了缓冲表,则缓冲项将在缓冲表中作为查找表项使用。 | String |
buffer_table (可选) |
INFO 查找表,列出了针对每个缓冲项的缓冲距离。指定缓冲表的前提是指定了缓冲项。缓冲表至少包含两项:
| ArcInfo Table |
buffer_distance (可选) |
此距离用于在没有指定缓冲项和缓冲表时,在输入 Coverage 要素周围创建缓冲区。默认的缓冲距离为 0.125 Coverage 单位。如果没有为此参数指定值,将使用该默认缓冲距离。 能够计算的最小缓冲距离是 0.00000005 Coverage 单位。如果指定的缓冲距离小于此阈值,将得到空的输出 Coverage。对于面要素,如果使用的缓冲距离为负值,缓冲区将在面的内部生成。 | Double |
fuzzy_tolerance (可选) |
在 out_cover 中坐标之间的最小距离。默认情况下,使用 in_cover 中的最小模糊容差值。 | Double |
buffer_shape (可选) |
对于线,表示在线端点处的缓冲区形状。
| String |
buffer_side (可选) |
对于线,表示在拓扑两侧中的哪一侧生成缓冲区。
| String |
代码示例
以下独立脚本演示如何在道路 Coverage 周围创建缓冲区。
# Name: Buffer_Example.py # Description: Creates a buffer around a road coverage. # Requirements: ArcInfo Workstation # Import system modules import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data" # Set local variables inCover = "road" outCover = "C:/output/roadbuf" featureType = "LINE" bufferDistance = 200 bufferShape = "ROUND" bufferSide = "FULL" # Execute Buffer arcpy.Buffer_arc(inCover, outCover, featureType, "", "", bufferDistance, "", bufferShape, bufferSide)