NCSU GIS/MEA582:
Geospatial Modeling and Analysis

Buffers, cost surfaces, least cost path

Resources: ESRI virtual campus

Include resulting maps into your report (use your judgment to decide which results to include). Adjust the colors and symbology of displayed layers to match the cartographic standards (lakes are displayed in blue etc.)

Create the workspace for the current assignment as the folder Buffers_cost

To constrain analyses in a similar manner as g.region, set the spatial extent using the options under Environments, for example:
to constrain analyses results to the extents defined by intersection of input features:

Start ArcMap.
From the menu Geoprocessing -> Environments... -> Processing extent.
Choose Intersection of Inputs from the drop down menu.
Click 'OK'

To work on a subset, clip your data to a given spatial extent.
Constrain the drawing of project layers to a user specified extent.

Start -> Programs -> ArcMap
Add ./ncrast.mdb/elev
Add ./ncshape.mdb/streets_wake
Dbl. Click the 'elev' layer in the TOC
Go to -> Layer Properties -> Extent
Write down the four numbers in the text fields labeled: 'Left', 'Right', 'Top', 'Bottom' 
Click 'OK'
Dbl. Click 'Layers' in the TOC
Go to ->'Data Frame Properties' -> 'Data Frame' -> 'Clip Options' -> 'Clip to Shape' 
Click 'Specify Shape'
Select 'Custom Extent' 
Uncheck the 'Degrees' check box
Enter the four numbers you recorded earlier in their appropriate text fields
Click 'OK'
Click 'OK'

Find developed areas close to lakes

Create the buffers:
File -> Add Data -> Add Data...
Select ./ncrast.mdb/lakes
Select ./ncrast.mdb/landcl96
Check out a Spatial Analyst Extension license (Menu -> Customize -> Extensions -> Spatial Analyst box needs to be checked)
Open the ArcToolbox (you may already have it open)
Select 'Spatial Analyst Tools->Distance->Euclidean Distance'
Set 'Input raster' to 'lakes'
Set Output distance raster' to '\Buffers_cost\lk_dist'
Set 'Maximum distance' to '500'
Leave the rest as defaults 
Click 'OK'

Select the locations that overlay developed areas:

Select 'Spatial Analyst Tools->Map Algebra->Raster Calculator'
Type in the expression: SetNull( "landcl96" > 2, "lk_dist")
Set the Output raster to './Buffers_cost/dev_lakes
Click 'OK'

Compute cost surface from accident based on speed limits

File -> Add Data -> Add Data...
Select ncshape.mdb/streets_wake
Open the ArcToolbox (if not already open)
Select 'Conversion Tools->To Raster->Polyline to Raster'
Set 'Input Features' to 'streets_wake'
Set 'Value field' to 'SPEED'
Set 'Output Raster Dataset to './Buffers_cost/str_speed'
Set Cellsize to 30
Leave the others as defaults 
Click 'OK'

File -> Add Data -> Add Data...
select ./ncshape.mdb/fire_pt

Set the working directory:

Select Geoprocessing -> Environments...
Under 'Workspace' set the 'Current Workspace' to '.\Buffers_cost'
Under 'Raster Analysis' set the 'Cell Size' to 'Same as layer str_speed'
Under 'Raster Analysis' set the  'Mask' to '.\ncshape.mdb\boundary_wake'
Click 'OK'

Assign travel time per cell in hours, compute cost surface.
Assign null values a speed of 5.

Open the ArcToolbox (if not already open)
Select 'Spatial Analyst Tools->Map Algebra->Raster Calculator'
Type in the expression: Con(IsNull("str_speed"),5,"str_speed") 
Set the Output raster to 'str_speed2'
Click 'OK'

Calculate the travel time and cost surface.

In ArcGIS cost is defined per map unit (meters in this case). We create a cost raster where cost is time to cross one map unit. Where does the 0.00062137 constant come from?

Select 'Spatial Analyst Tools->Map Algebra->Raster Calculator' 
Type in the expression: 0.00062137 / "str_speed2"
Set the 'Output raster' to str_trv

Open the ArcToolbox (if not already open)
Select 'Spatial Analyst Tools->Distance->Cost Distance'
Set 'Input raster or feature source data' to 'fire_pt'
Set 'Input Cost raster' to 'str_trv'    
Set 'Output distance raster' to './Buffers_cost/str_cost'
Set 'Output backlink raster (optional)' to './Buffers_cost/backlink'
Leave the rest as defaults
Click 'OK'

Find cost from selected firestations

File -> Add Data -> Add Data...
Select ./ncshape.mdb/firestations
Open the ArcToolbox (if not already open)
Select 'Spatial Analyst Tools->Extraction->Sample'
Set 'Input rasters' to 'str_cost'
Set 'Input Location raster or point features' to 'firestations'
Set 'Output table' to './Buffers_cost/station_costs'
Leave everything else as defaults
Click 'OK'

Add the table of costs (NOTE: in Arc 10 this should be added automatically at the bottom of the TOC). However, if the table does not get added:


File -> Add Data ->
Select '.\Buffers_cost\station_costs'

Open the station_costs table and sort on the field 'STR_COST':

right click 'station_costs' -> Open
right click column named 'STR_COST' and choose 'Sort Ascending'
Note the range of cost values.
Close the table

Find shortest path from nearby firestations.
Note: create the firestations as a shapefile if the below does not work with geodatabase firestations.

Open the ArcToolbox (if not already open)
Select 'Spatial Analyst Tools->Distance->Cost Path'
Set 'Input raster or feature destination data' to 'firestations'
Set 'Destination field' to 'OBJECTID'
Set the 'Input cost distance raster' to 'str_cost'
Set the 'Input cost backlink raster' to 'backlink'
Set the 'Output raster' to '.\Buffers_cost\cost_path'
Set the 'Path type' to 'BEST_SINGLE'   
Click 'OK'

Note: to see the resulting least cost (drive-time) path you may have to turn off some or most of the layers in your TOC.