Label | Explanation | Data Type |
Input River Polygons
| The 3D polygons delineating the river banks that will be processed. | Feature Layer |
Input Flow Direction Lines
| The line features that indicate the flow direction of the river bank polygons. | Feature Layer |
Output River Boundary Lines
| The output river boundary lines. | Feature Class |
Maximum Sampling Distance
(Optional) | The regular sampling distance of the polygon's boundary that will be used to establish monotonicity along the river banks. | Linear Unit |
3D Simplification Tolerance (Optional) | The z-range that will be used to simplify the resulting river boundary line. | Linear Unit |
Summary
Creates height adjusted breaklines from 3D polygons representing river banks.
Illustration
Usage
This tool processes 3D polygon features representing river banks to create hydroflattened breaklines that can be used in DEM production. Hydroflattening ensures that the river banks have heights that decrease in the downstream direction and have approximately the same height at each bank that is perpendicular to the primary flow direction. Each 3D polygon defines a single river or a river network, and will yield one or more 3D line features based on the overall vertex count. A maximum vertex count of 500 is enforced to ensure that line features can be processed and displayed efficiently, so rivers that require more vertices will be divided into multiple features.
The river's flow direction must be provided as a line feature class containing two lines for each polygon. One line to indicate the highest upstream position and the other line to indicate the lowest downstream position. The line features must touch the boundary of the river polygon. The flow direction is inferred from the order of vertices on the lines. The upstream position is identified by the line feature whose last vertex ends at the river bank; the downstream position is identified by the line feature whose first vertex touches the river bank.
If the river polygon is not 3D but an overlapping collection of lidar data with ground classified points are available, you can infer initial z-values from the lidar data by doing the following:
- Create a LAS dataset referencing the lidar files if one is not already present.
- Reclassify ground classified points that are inside a water polygon to water. This can be accomplished using the Set LAS Class Codes Using Features tool.
- Filter the LAS dataset for ground classified points. This can be done through the Filter tab on the Layer Properties dialog box for any LAS dataset loaded into a map or scene. The Make LAS Dataset Layer tool can also be used, particularly when using this workflow in ModelBuilder or a Python script.
- Specify the 2D polygon and the ground classified lidar data as inputs to the Interpolate Shape tool using the Conflate Z Minimum parameter.
The resulting 3D polygons will likely have height undulations that are undesirable for the purpose of DEM production. This polygon can be hydroflattened using the Enforce River Monotonicity tool.
After the water points are classified, reassign the ground points that are within a small distance of the shoreline to class 20, which represents ignored ground points in the ASPRS classification scheme. Ground points that are near breakline features may introduce undesirable surface artifacts into the ground elevation surface that will be interpolated using them. By separating these ground points using a different class code, you can filter them out when creating a digital elevation model. The ignored ground points can be classified using the Set LAS Class Codes Using Features tool by providing the same water body polygon as input and providing a small buffer distance for the polygons.
The output line features from this tool can be incorporated into a terrain, TIN, or LAS dataset as 3D breaklines, and interpolated into a raster surface using the Terrain To Raster, TIN To Raster, or LAS Dataset To Raster tool. The resulting raster will render seamlessly across water bodies and produce smooth contour lines.
Parameters
arcpy.ddd.EnforceRiverMonotonicity(in_rivers, in_flow_direction, out_feature_class, {max_sample_distance}, {simplification_tolerance})
Name | Explanation | Data Type |
in_rivers | The 3D polygons delineating the river banks that will be processed. | Feature Layer |
in_flow_direction | The line features that indicate the flow direction of the river bank polygons. | Feature Layer |
out_feature_class | The output river boundary lines. | Feature Class |
max_sample_distance (Optional) | The regular sampling distance of the polygon's boundary that will be used to establish monotonicity along the river banks. | Linear Unit |
simplification_tolerance (Optional) | The z-range that will be used to simplify the resulting river boundary line. | Linear Unit |
Code sample
The following sample demonstrates the use of this tool in the Python window.
import arcpy
arcpy.env.workspace = "C:\GIS_Data"
arcpy.ddd.EnforceRiverMonotonicity("River_Polygons_3D.shp", "River_Flow_Directions.shp",
"River_Breaklines_3D.shp", "10 Meters", "5 Meters")