I am having a long portion of river. Here I am displaying part of it. In this polygon which is transparent black.
How do I find the wider track (bank to bank perpendicular from the center line) using ArcGIS Desktop?
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It only takes a minute to sign up.Sign up to join this community
Measuring from "bank to bank" is too vague. In the image below I've illustrated 8 different ways you can measure to the south bank from a single point on the north bank (red arrow).
Which of these lines would be the "correct" line of measurement for the distance from that point to the other bank? Any point along the river has more than one possible bank to bank measurement. Using this method, you'll find that the furthest line from bank to bank will end up running nearly parallel to the river:
We need to be more precise about how the measurements should be taken.
If, as JR suggested, you measure perpendicular to the river centerline, you need to obtain a river centerline. In the example below, I drew a hypothetical river centerline.
As you can see, at any given point along the river, there's only one line that stretches from bank to bank AND perpendicular to the river centerline. So this is a better way to measure bank width.
If you choose to implement this method, your next steps should be:
You could try the GRASS algorithm v.centerline
v.centerline creates a new map with a line representing an approximation of the central tendency of a series of input lines that all have similar trajectories. This can for example, be the central line of a river represented by its two sides, or a line representing the general direction of a series of flight paths, etc.
Once you have the centreline, you can use v.transects to create perpendicular lines at a very small interval, and then clip them to the boundaries of the source polygon.
I have also seen ST_ApproximateMedialAxis() in PostGIS used to derive river centrelines. From there you can use the same method as mentioned earlier with v.transects() to find the "widest portion"
As others have already pointed out, however, it is a very difficult question to answer objectively, but I think one of these methods will get you a reasonable and reproducible answer.