Methods: measuring sinuosity and radius of curvature

To analyze the relationship between latitude and sinuosity, a relatively precise and reproducible measure of sinuosity is needed. To estimate the importance of the Coriolis force, we also need to calculate a characteristic radius of curvature for each channel bend. Although it is possible to collect these measurements one by one by analyzing each channel bend separately, this manual approach would be fairly time consuming, and the results would be difficult to check and replicate. To avoid these issues, we have written a Python script that takes the ‘‘x’’ and ‘‘y’’ coordinates of a channel centerline as inputs and calculates both sinuosity and radius of curvature for each bend. This methodology also ensures that we are comparing sinuosity and radius of curvature values that were derived in the same way for all channels. To perform the analysis and generate the figures, we have used IPython (Jupyter) Notebook, an interactive notebook-like, open- source computing platform that is based on the Python programming language \citep*{Perez_2007}. The processing steps that are performed are as follows:
1. Resample the channel centerline so that its defining points are approximately equally spaced (50-m spacing). We used a parametric spline representation of the curve to do this.
2. Smooth the centerline using the Savitzky-Golay filter \citep*{Savitzky_1964}. This filter is based on fitting successive sets of data points with a polynomial, using linear least squares. For our analysis, we used the scipy implementation of the algorithm and adopted a window length of 21 centerline points that were convolved with a third-order polynomial.
3. Calculate the curvature of the centerline and smooth it, using the same filter as in step 2. The number of points over which the smoothing is applied determines how many inflection points (points of zero curvature) will be found. To obtain consistent results, this window length has to scale with the channel, that is, the meander wavelength. We have used values between 11 and 201 points (550 to 10,050 m), depending on the scale of the channel, and a third-order polynomial.
4. Find inflection points and locations of maximum curvature. A strongly smoothed curvature function will result in fewer zero crossings of the function, fewer inflection points on the centerline, and a smaller number of channel bends.
5. Calculate half wavelengths, arc lengths, and sinuosity for each channel bend (1⁄4 segment between two consecutive inflection points). Eliminate from further analysis straight channel segments with less than 1.01 sinuosity.
6. At each maximum curvature point, identify a centerline segment with a length of one-tenth of the average arc length. Using least- squares optimization, find a circle that matches these points best. One could also simply take the average curvature of the centerline at these locations to estimate the characteristic radius of curvature, but least-squares optimization allows us to quickly plot the corresponding circle and visually check the results (Fig. \ref{309450}).