17
Protocol: How to Derive Gradient from GIS Outline: 1)Add X,Y site points, using GPS-collected UTM coordinates. 2)Create “routed” streams, with linear distance measures. (Linear Referencing Tools) 3)Locate features along routes (Linear Referencing Tools) 4)Open .dbf in Excel, save as .xls, and write a formula to adjust MEAS values +/- 100 meters and 250 meters to “bracket-in” site (200 m & 500 m). 5)Add .xls file to ArcMap 6)Make route event layer (Linear Referencing Tools) 7)Turn .xls file into shapefile called basin_Extents_Up_Down_+/-dist 8)Extract values to points (Get elevations for the endpoints) (Spatial Analyst Tools – Extraction) 9)Open attribute table and export to .dbf 10)Combine elevation values and route location values to calculate gradient.

Protocol: How to Derive Gradient from GIS Outline: 1)Add X,Y site points, using GPS-collected UTM coordinates. 2)Create “routed” streams, with linear distance

Embed Size (px)

Citation preview

Protocol: How to Derive Gradient from GIS

Outline:1)Add X,Y site points, using GPS-collected UTM coordinates.2)Create “routed” streams, with linear distance measures. (Linear Referencing Tools)

3)Locate features along routes (Linear Referencing Tools)

4)Open .dbf in Excel, save as .xls, and write a formula to adjust MEAS values +/- 100 meters and 250 meters to “bracket-in” site (200 m & 500 m).5)Add .xls file to ArcMap6)Make route event layer (Linear Referencing Tools)

7)Turn .xls file into shapefile called basin_Extents_Up_Down_+/-dist8)Extract values to points (Get elevations for the endpoints)(Spatial Analyst Tools – Extraction)

9)Open attribute table and export to .dbf10)Combine elevation values and route location values to calculate gradient.

Task: How to do all of this in an automated way, and all in ArcMap?Solution: Use ModelBuilder

Determining Gradient

Site

100 m DS

100 m US

250 m US

250 m DS

“Short” reach

“Long” reach

Get elevations from each upstream and downstream

reach endpoint

Why (not) ModelBuilder?

• I don’t often do GIS processes that need to be repeated multiple times.

• My workflows tend to be “custom”, created as needed to solve a particular solution.

• If I need to repeat a process each year, I create and use a written protocol, or look at my notes from the previous year.

• I often work between “platforms” (ArcGIS, Access, Excel, etc.).

So, why ModelBuilder this time?Main reason: • Repeated processes

– This GIS process needed to be repeated multiple times (once for each subbasin). – Rather than working manually through the same process six times, I could set up one Model

and click “Run” six times. – Or, even better, I could set it up to “iterate” through all six basins on its own.

Other Benefits:• Readily adaptable

– Elements of this workflow are relatively common in my work, so now that a Model is created, I will likely use or adapt it multiple times in the future.

• Easily brought “out of retirement”– If I need to repeat this process in the future, it is relatively simple to update the Model and

run it.• Metadata (sort of) – processing methods

– If I want to remember what the workflow was, I can open the model and review the processes and tools involved.

• Forces me to work in one platform– While working cross-platform isn’t inherently bad, it doesn’t lend itself to easily replicated or

transferable solutions. Thus, I wanted to see if I could do the whole workflow within ArcGIS.

Protocol: How to Derive Gradient from GIS

Outline:1)Add X,Y site points, using GPS-collected UTM coordinates.2)Create “routed” streams, with linear distance measures. (Linear Referencing Tools)

3)Locate features along routes (Linear Referencing Tools)

4)Open .dbf in Excel, save as .xls, and write a formula to adjust MEAS values +/- 100 meters and 250 meters to “bracket-in” site (200 m & 500 m).5)Add .xls file to ArcMap6)Make route event layer (Linear Referencing Tools)

7)Turn .xls file into shapefile called basin_Extents_Up_Down_+/-dist8)Extract values to points (Get elevations for the endpoints)(Spatial Analyst Tools – Extraction)

9)Open attribute table and export to .dbf10)Combine elevation values and route location values to calculate gradient.

Task: How to do all of this in an automated way, and all in ArcMap?Solution: Use ModelBuilder

First Model:Locate Features Along Routes

(Iteration – Series)

Protocol: How to Derive Gradient from GIS

Outline:1)Add X,Y site points, using GPS-collected UTM coordinates.2)Create “routed” streams, with linear distance measures. (Linear Referencing Tools)

3)Locate features along routes (Linear Referencing Tools)

4)Open .dbf in Excel, save as .xls, and write a formula to adjust MEAS values +/- 100 meters and 250 meters to “bracket-in” site (200 m & 500 m).5)Add .xls file to ArcMap6)Make route event layer (Linear Referencing Tools)

7)Turn .xls file into shapefile called basin_Extents_Up_Down_+/-dist8)Extract values to points (Get elevations for the endpoints)(Spatial Analyst Tools – Extraction)

9)Open attribute table and export to .dbf10)Combine elevation values and route location values to calculate gradient.

Task: How to do all of this in an automated way, and all in ArcMap?Solution: Use ModelBuilder

Protocol: How to Derive Gradient from GIS

Outline:1)Add X,Y site points, using GPS-collected UTM coordinates.2)Create “routed” streams, with linear distance measures. (Linear Referencing Tools)

3)Locate features along routes (Linear Referencing Tools)

4)Open .dbf in Excel, save as .xls, and write a formula to adjust MEAS values +/- 100 meters and 250 meters to “bracket-in” site (200 m & 500 m).5)Add .xls file to ArcMap6)Make route event layer (Linear Referencing Tools)

7)Turn .xls file into shapefile called basin_Extents_Up_Down_+/-dist8)Extract values to points (Get elevations for the endpoints)(Spatial Analyst Tools – Extraction)

9)Open attribute table and export to .dbf10)Combine elevation values and route location values to calculate gradient.

Task: How to do all of this in an automated way, and all in ArcMap?Solution: Use ModelBuilder

Second Model:Calculate Fields (Iteration – List)

Iteration types:List – The tool connected to the List variable – and all downstream tools – execute once for each value in the ListSeries – Entire model is executed once for each value in the Series

Protocol: How to Derive Gradient from GIS

Outline:1)Add X,Y site points, using GPS-collected UTM coordinates.2)Create “routed” streams, with linear distance measures. (Linear Referencing Tools)

3)Locate features along routes (Linear Referencing Tools)

4)Open .dbf in Excel, save as .xls, and write a formula to adjust MEAS values +/- 100 meters and 250 meters to “bracket-in” site (200 m & 500 m).5)Add .xls file to ArcMap6)Make route event layer (Linear Referencing Tools)

7)Turn .xls file into shapefile called basin_Extents_Up_Down_+/-dist8)Extract values to points (Get elevations for the endpoints)(Spatial Analyst Tools – Extraction)

9)Open attribute table and export to .dbf10)Combine elevation values and route location values to calculate gradient.

Task: How to do all of this in an automated way, and all in ArcMap?Solution: Use ModelBuilder

Third Model:Extract Values; Join Table; Calc. Fields

Protocol: How to Derive Gradient from GIS

Outline:1)Add X,Y site points, using GPS-collected UTM coordinates.2)Create “routed” streams, with linear distance measures. (Linear Referencing Tools)

3)Locate features along routes (Linear Referencing Tools)

4)Open .dbf in Excel, save as .xls, and write a formula to adjust MEAS values +/- 100 meters and 250 meters to “bracket-in” site (200 m & 500 m).5)Add .xls file to ArcMap6)Make route event layer (Linear Referencing Tools)

7)Turn .xls file into shapefile called basin_Extents_Up_Down_+/-dist8)Extract values to points (Get elevations for the endpoints)(Spatial Analyst Tools – Extraction)

9)Open attribute table and export to .dbf10)Combine elevation values and route location values to calculate gradient.

Task: How to do all of this in an automated way, and all in ArcMap?Solution: Use ModelBuilder

Fourth Model:Extract Values; Spatial Join; Calc. Fields

Issues with ModelBuilder:(aka things that aggravated me)

• Not always easy to know what went wrong– Extract Values tool did not work on route event layers and failed in seemingly

random ways: ERROR 010067: Error in executing grid expression. Assignment to non-variable / Failed to execute (Extract Values to Points).

– Tools “executed successfully” in the log, but the subsequent step failed• Join Field tool

– Identical field names get changed, so any subsequent use of those field names must take that into account

• Using Calculate Field in a Series doesn’t work– No output variable in the tool, so no ability to set “%n%”; keeps the first

filename as the intermediate variable• You have to remember *every* little detail of a workflow

– Forgot to select by attribute after joining; overwrote previous calculations (User Error)

• Calculating the joined, selected fields didn’t work consistently:– WARNING 000405: No records within table– Running the same series of processes manually *DID* work.

• Moving files into a new, clean MXD seemed to help, as did restarting ArcMap periodically.

Wrestling with the Model• After two days of tweaking the Model and trying

to get it to work, I gave up and went back to a manual approach.

• I didn’t relish having to go through all of the necessary steps manually, but couldn’t figure out why the Model wouldn’t work.

• But when I did my first Extract Values to Points manually, it didn’t work either (inexplicably).

• This was enough to push me back into trying to find an alternative solution with the Model.

• Soon enough, I did (Add Join).