简化线 (制图)
插图
用法
存在两种简化方法:
- 点移除方法是两种方法中较快的方法。它可移除多余的折点。此方法多用于数据压缩或更为粗糙的简化,尤其适用于大家都已经了解的数据。随着容差的增大,生成的线中有棱角的部分(尖锐拐角)将显著增加,所以线可能变得不够美观。
- 折弯简化方法较慢,但通常会生成与原始几何形状更为接近的结果,因此更加美观。其操作方式为消除沿线方向上不太重要的弯曲。此方法多用于少量的、更为精细的简化。
简化容差值用于确定简化程度。将容差设置为等于或大于图形元素之间允许的最小间距。在容差相同的前提下,点移除生成的结果比折弯简化生成的结果更粗糙、更简化。
-
此工具最终生成两个输出要素类:一个是存储简化之后的线的线要素类和一个是存储用来表示任意折叠于一点的线的那些点的点要素类。点的输出名称和位置自动从输出的线的名称获得,并以 _Pnt 作为后缀。线输出将包含所有输入字段;点输出不包含任何输入字段。
-
以下为处理输出中的拓扑错误的选项:
- 检查拓扑错误参数用于标识简化过程所引入的拓扑错误。选中此选项时,解决拓扑错误参数也将激活。拓扑检查会延缓处理速度,但是如果不能保证数据的拓扑准确性,则应该使用此参数。
- 线输出将包含两个表示要素是否存在拓扑错误的新字段。InLine_FID 和 SimLnFlag 分别包含输入要素 ID 和拓扑错误。值 1 表示引入了错误,而值 0(零)表示未引入错误。
- 拓扑错误解决后,标记值仍将保持不变。SimLnFlag 字段用于检查包含拓扑错误的要素。
-
检查拓扑错误和解决拓扑错误参数不能在编辑会话内使用。要在编辑会话内运行此工具,请禁用检查拓扑错误参数。
语法
SimplifyLine_cartography (in_features, out_feature_class, algorithm, tolerance, {error_resolving_option}, {collapsed_point_option}, {error_checking_option})
参数 | 说明 | 数据类型 |
in_features |
要进行简化的线要素。 | Feature Layer |
out_feature_class |
要创建的输出线要素类。 | Feature Class |
algorithm |
指定线的简化算法。
| String |
tolerance |
用于确定简化程度的容差。必须指定一个容差,且值必须大于零。可以选择首选单位;默认为要素单位。
| Linear unit |
error_resolving_option (可选) |
指定处理拓扑错误的方式(这些拓扑错误可能是在处理时引入的,其中包括交叉的线、重叠的线和折叠为零长度的线)。当 error_checking_option 为 CHECK 时(默认设置),该参数生效。
| Boolean |
collapsed_point_option (可选) |
指定是否将处理中发现的任何折叠的零长度线作为点保留下来。只有指定了 NO_CHECK 或者同时指定了 FLAG_ERRORS 和 CHECK 选项时,该选项才可用。
| Boolean |
error_checking_option (可选) |
指定处理拓扑错误的方式(这些拓扑错误可能是在处理时引入的,其中包括交叉的线、重叠的线和折叠为零长度的线)。
| Boolean |
代码示例
SimplifyLine 示例(Python 窗口)
以下 Python 窗口脚本演示了如何在即时模式下使用 SimplifyLine 工具。
import arcpy from arcpy import env import arcpy.cartography as CA env.workspace = "C:/data" CA.SimplifyLine("roads.shp", "C:/output/output.gdb/simplified_roads", "POINT_REMOVE", 20)
SimplifyLine 示例 2(独立脚本)
以下独立脚本演示了如何使用 SimplifyLine 工具。
# Name: SimplifyLine_Example2.py # Description: Simplify line features from two feature classes, rivers and coastlines, # while maintaining their connections # Import system modules import arcpy from arcpy import env import arcpy.management as DM import arcpy.cartography as CA # Set environment settings env.workspace = "C:/data/Portland.gdb/Hydrography" # Set local variables inRiverFeatures = "rivers" inCoastlineFeatures = "coastlines" mergedFeatures = "C:/data/PortlandOutput.gdb/merged_lines" simplifiedFeatures = "C:/data/PortlandOutput.gdb/merged_lines_simplified" tempLayer = "tempLyr" outRiverFeatureClass = "C:/data/PortlandOutput.gdb/rivers_final" outCoastlineFeatureClass = "C:/data/PortlandOutput.gdb/coastlines_final" # Merge rivers and coastlines into one feature class, assuming that they have # a common f-code field with value 40 for rivers and 80 for coastlines. DM.Merge(inRiverFeatures, inCoastlineFeatures, mergedFeatures) # Simplify all lines. CA.SimplifyLine(mergedFeatures, simplifiedFeatures, "BEND_SIMPLIFY", 100, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK") # Select rivers and coastlines by their f-code values and put them in separate feature classes. DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 40") DM.CopyFeatures(tempLayer, outRiverFeatureClass) DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 80") DM.CopyFeatures(tempLayer, outCoastlineFeatureClass)
相关主题
许可信息
ArcView: 否
ArcEditor: 是
ArcInfo: 是
7/10/2012