含障碍的等值线 (空间分析)
摘要
根据栅格表面创建等值线。如果包含障碍要素,则允许在障碍两侧独立生成等值线。
用法
-
当前版本的含障碍的等值线仅支持折线 (polyline) 输出。如果使用面输出选项,则会将其忽略并会创建折线 (polyline) 输出。
较平滑却欠精确的等值线可通过预处理输入栅格获得,可以使用 MEAN 选项进行 Focal_Statistics 操作,或者通过 LOW 选项使用过滤器工具来执行该预处理过程。
-
等值线将延伸到栅格的 NoData 像元,延伸距离为栅格像元大小的一半。这意味着将在单个 NoData 像元上生成等值线。但是,一个 3 像元 × 3 像元的 NoData 区域仅会让等值线延伸到该区域,且延伸距离为像元大小的一半。
-
输出等值线要素类的“类型”字段的值为:
1 for contours 2 for indexed contours 3 for explicit contours
-
计曲线间距可用于生成附加等值线,且其“类型”值在输出要素类中的编码为 2。
-
例如,在您想要从 10 米处开始每隔 15 米创建等值线时使用起始等值线。此处 10 用于起始等值线,而 15 则为等值线间距。要绘制等值线的值为 10、25、40、55,依此类推。
-
指定起始等值线不会阻止等值线以高于或低于该值的值创建。
-
包含等值线值规范的文本文件可包括以下内容:
- 忽略任何以非数字值开头的行,并将其视为注释行。
- 将具有单个值的行视为建立等值线的值。
- 将具有三个值的行视为起始等值线、等值线间距和计曲线。
- 将具有四个值的行视为起始等值线、终止等值线、等值线间距和计曲线。
例如,如果栅格的最小值为 102,最大值为 500,则具有以下内容的文本文件:
# contour values and ranges 122.75 485 500 5 12 4 100 99
将在以下值处生成等值线:
122.75 104, 204, 304, 404 103, 202, 301, 400, 499 485, 490, 495, 500 497
-
如果障碍面要素中存在栅格的像元值,则在障碍处分割等值线。如果要忽略面要素内的像元值,将此类像元值更改为 NoData。
-
如果输入栅格表面很大或请求的输出要素很多,则会在操作系统的临时文件位置中创建很多临时文件。如果因此发生问题,执行以下操作之一:
- 增加临时文件的可用磁盘空间。
- 减少指定的等值线数,或对等值线范围进行分组并分别处理每一组,然后将每个范围的结果合并为最终结果。
- 按部分(切片)处理输入数据,然后将各个结果合并为一个数据集。
使用等值线注记工具可标注输出等值线要素。
语法
参数 | 说明 | 数据类型 |
in_raster |
输入表面栅格。 | Raster Layer |
out_contour_feature_class |
输出等值线要素。 | Feature Class |
in_barrier_features (可选) |
输入障碍要素。 | Feature Layer |
in_contour_type (可选) |
要创建的等值线的类型。
当前版本的“含障碍的等值线”仅支持折线 (polyline) 输出。如果使用面输出选项,则会将其忽略并会创建折线 (polyline) 输出。 | String |
in_contour_values_file (可选) |
也可通过文本文件指定起始等值线、等值线间距、计曲线间距和建立等值线的值。 | File |
explicit_only (可选) |
只使用建立等值线的值。未指定起始等值线、等值线间距和计曲线间距。
| Boolean |
in_base_contour (可选) |
起始等值线值。 根据需要生成高于和低于该值的等值线可覆盖输入栅格的整个值范围。默认值为零。 | Double |
in_contour_interval (可选) |
等值线间的间距或距离。 该值可为任意正数。 | Double |
in_indexed_contour_interval (可选) |
此外,也会在输出要素类中按此间距生成等值线并相应地进行标记。 | Double |
in_contour_list [in_explicit_contour,...] (可选) |
要创建等值线的值。 | Double |
in_z_factor (可选) | 在生成等值线时使用的单位转换因子。默认值为 1。 等值线是基于输入栅格中的 z 值生成的,所采用的测量单位通常为米或英尺。如果使用默认值 1,等值线将采用与输入栅格中的 z 值相同的单位。要以不同于 z 值的单位创建等值线,请为 z 因子设置适当的值。注意,对于此工具,没有必要使地面 x,y 单位与表面 z 单位保持一致。 例如,如果输入栅格中的高程值单位为英尺,但您希望以米为单位来生成等值线,则可将 z 因子设置为 0.3048(因为 1 英尺 = 0.3048 米)。 | Double |
代码示例
此例使用输入障碍要素以及指定的起始等值线和等值线间距参数,根据 Esri Grid 栅格创建了等值线。输出等值线区域为 shapefile 中的折线 (polyline)。
import arcpy from arcpy import env from arcpy.sa import * env.workspace = "C:/sapyexamples/data" ContourWithBarriers("elevation", "C:/sapyexamples/output/outcontourwithbarriers.shp", "elevation_barrier.shp", "POLYLINES", "", "", 0, 300)
此例使用输入障碍要素以及指定的起始等值线和等值线间距参数,根据 Esri Grid 栅格创建了等值线。输出等值线区域为 shapefile 中的折线 (polyline)。
# Name: ContourWithBarriers_Ex_02.py # Description: Creates contours from a raster surface. # The inclusion of barrier features will allow one to independently generate contours on either side of a barrier. # Requirements: Spatial Analyst Extension # Import system modules import arcpy from arcpy import env from arcpy.sa import * # Set environment settings env.workspace = "C:/sapyexamples/data" # Set local variables inRaster = "elevation" inBarrier = "elevation_barrier.shp" inTextFile = "" explicitValues = "NO_EXPLICIT_VALUES_ONLY" contourInterval = 200 contourList = [600, 935, 1237.4] baseContour = 0 outContours = "C:/sapyexamples/output/outcontourwithbarriers02.shp" # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute Contour ContourWithBarriers(inRaster, outContours, inBarrier, "POLYLINES", inTextFile, explicitValues, baseContour, contourInterval, "", contourList, "")