RivEX can generate river cross sections (channel widths) for any point on the network if your datasets conform to the following specifications: 

oYour river network was created from a polygon layer such that the river network represents the "skeleton" of the polygon. 

oYou have the polygon layer that represents the river. Each polygon should have a unique numeric ID (Integer). 

oYour locations where you wish to compute the cross section are snapped points with a unique numeric ID (Integer).

oYour network, polygon and sampling point locations are all in a coordinate system that is metres. Data in WGS84 (Latitude/Longitude) will not work with this tool.

oYour sampling point layer must not have a field which is the same name as the unique polyline ID number used in your river network.

WarningIf your network was digitised by hand or is a vector network generated from a raster stream network then these networks will not work with this tool as you need the polygon representation of a river and the river network must be the central "skeleton" of the polygon layer. 

To help you understand why this tool works best with river networks that are generated from polygons I will discuss the issue using a UK based example. In the UK, the national mapping agency Ordnance Survey (OS) have MasterMap, an extremely detail dataset which provides a digital framework for all other UK datasets. One of it's layers is the Topographic layer and a component of this are polygons that represent water bodies (lakes, rivers, ponds, canals etc.).  The OS have used the topographic layer to extract out the centreline and built the Water Layer for the UK.  Thus the polylines that make up the river network lie inside the polygon at the centre. It is this spatial relation between the network and the polygon layer that RivEX can use to compute a cross section for any location. In the image below it is clear that the river network (red line) is the topological skeleton of the river polygon and a line perpendicular to this skeleton would generate a sensible cross section. 

A centreline network

When you run the tool you will be presented with dialog below. You need to provide a point layer (which has been snapped to the network) with an unique point ID field, the polygon layer and it's unique ID field.  Both ID fields must of Integer type, FID/OBJECTID fields are excluded for technical reasons.  The channel widths output file name should not include the ".shp" extension. You can optionally choose to transfer the widths back to your point layer. 

Channel Width Dialog

If your point layer has a selection then only those points will be processed.

Click OK causes the tool to validate the inputs and then compute the channel widths. The tool first identifies points that fall within a river polygon. This information is written back to your point dataset as a simple Yes \ No field called InPolygon. If this field already exists then RivEX will create a new field.

RivEX will also create a field called PolygonID which records the unique polygon ID that the point falls within. If this field already exists then RivEX will create a new field. Only points where InPolygon = "Y" are processed.

RivEX will then create an empty polyline Shapefile in Output sub-folder in the RivEX_Workspace with the output name you specified. If you have run this tool before then you are likely to have an existing dataset with the same name in the output directory and you will be prompted for its deletion.

The channel width dataset will have 4 fields: a unique ID (ID), the point ID (PointID), the polygon ID (PolygonID) and the width of the cross section (Width). 

If you have chosen to transfer the channel width lengths back to the point layer then RivEX will attempt to create a new field called ChanWidth. If this field exists then it will be overwritten.

If your point layer had a selection, only those points are processed, this means the unselected points will have Null values in their InPolygon and PolygonID fields.

A typical output is shown below. Points that fell outside the polygons are rejected during processing therefore it is possible to have less channel width lines than there are points. 

Computed channel widths

The tool works by initially identifying the intersecting polyline and polygon. If it has these two bits of information it continues with processing. RivEX then works out which segment of the polyline the point is intersecting. It then constructs a line 0.001m long at a perpendicular to the segment at the point. It then extends this line from both ends until it touches the polygon boundary thus generating a cross section width.

Be aware of the following scenario. In the screen shot below a sampling point on the network falls within the polygon of a larger channel. This point is on a small stream\drain that had no polygon representation but because of it's proximity to the larger channel it is recognised as a point snapped to the network and in a river polygon which is generating an unsuitable cross section. Such cross sections can be identified by sorting the table by width as are they usually much long. 

Incorrect cross sections