I have a task this week to create a flood map using the 19.5 metre contour over a wide area of the Hawkesbury. Contour datasets as you may be aware are a line feature that shows the approximate points with equal elevation, in relation to a benchmark like the Australian Height Datum (AHD). The metadata for the NSW Contours dataset can be located here.
Contour layers are tricky to work with as it consists of a large amount of features. The dataset I'm working with this week has over 250,000 line features. We only have a small window to process the dataset and working with it over the network would take a long time. I've opted to export this dataset to a local disk and the shapefile ended up over 750 megabytes!
The first task was to extract and load the data I'm interested in. I only need the 19.5 metre contour and the contours dataset consists of ALL of the contours which is too bulky to work with. By using a definition query I'm able to extract only the lines with the elevation value of 19.5m. Then exporting this selection to a new shapefile will create the dataset I would be working with.
"ELEVATION" = 19.5
So essentially... rather than this:
I only want this:
Now the task is to create a polygon to fill the void between the 19.5m contour lines.
There are a few methods to do it. I initially tried to
trace the lines whilst creating a simple polygon. Unfortnately there were too many nodes and lines. The
tracing tool buckled under the strain and the application became very slow. ArcMaps crashed a few times. Not going to be tracing the contour lines!
The second method to try was a tool under the
Advanced Editor toolbar called
Create Polygons. The ESRI helpfile is here. The helpfile does a good job explaining what it does, so I'm not going to do it again. Instead there are a few things I would like to note below:
- You need a closed loop for the polygons to be created. Even a tiny break in the lines and the tool spits a dummy. This is where the error tolerance comes in.
- You need to set a tolerance - if topology is important then set it to the default for the geodatabase. If accuracy doesn't matter than 1m tolerance should be ok. Of course this depends on the dataset you are working with (which i will address further below).
- You need two feature classes. The line feature class will be the contours layer (which you will select from). The polygon feature class will obviously be where the tool creates your new polygon. Both layers need to be visible in workspace view.
This is my working progress for the flood map polygon. You can see the 19.5m contour extending out. The blue shaded bit is the polygon being created.
I'm doing it in sections and merging them together later. The reason is because the tool spits a dummy everytime there is a break in the line work (open loop). This dataset covers a very large area (scale 1:50,000) so i have to inspect the linework section by section and ensure that it is indeed a closed loop before running the tool.
This is the full extent of the dataset:
This method is still faster than tracing the 19.5m contour or digitising it from scratch. Until I find a more efficient method this is the way to go.
The grey shaded areas are adjoining local government areas. They are outside our jurisdiction and our data is incomplete along the boundaries of those areas. So this dataset wouldn't be used to calculate surface area or volume in ArcScene. It's important to understand the limitations of your datasets and assumptions being made.
In the screenshot below I'm trying to select all of the lines to complete a closed loop for this section, so that a polygon can be created. You can see tiny slivers where the line work may not have been selected. This is where large scale inspection is required (zooming in), and is a painstakingly slow process. Gaps are even harder to spot.
After 4 hours doing this I want to stab my eyes out!
I hope there is a tool to close a loop more efficiently than manually slaving away one section at a time!
When you see this prompt... keep calm and resist the urge to punch the monitor.
You can try the following:
- Check for gaps or breaks in the line work.
- Isolate sections that you know are clear of errors. You can always generalise or merge the polygons later.
- Use the
split linetool and taper off sections of the contour lines that go beyond the polygon you're trying to create.
- Increase the error tolerance (if possible).
- Make sure you have not selected lines that overlap.
When things work. Rejoice!