Upload
priscila-knight
View
216
Download
0
Tags:
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
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
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
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).