Difference between revisions of "FUTURES tutorial"

From GRASS-Wiki
Jump to navigation Jump to search
(input data and software)
Line 27: Line 27:
= Workflow =
= Workflow =
== Initial data preparation ==
== Initial data preparation ==
First we will set computational region of our analyses to an extent covering our study area and so that the cells are aligned with one of our landuse rasters:
<source lang="bash">g.region n=1648005 s=1480695 e=1624815 w=1462965 align=landuse_2001 -p</source>
We will derive urbanized areas from NLCD dataset for year 2001 and 2011
by extracting categories category 21 - 24 into a new binary map where developed is 1,
undeveloped 0 and NULL (no data) is area unsuitable for development (water, wetlands, protected areas).
First we will convert protected areas from vector to raster and set
NULLs to zeros (for simpler raster algebra expression in the next step):
<source lang="bash">
v.to.rast input=protected output=protected use=val
r.null map=protected null=0
</source>
And then create rasters of developed/undeveloped areas using raster algebra:
<source lang="bash">
r.mapcalc "urban_2001 = if(landuse_2001 >= 21 && landuse_2001 <= 24, 1, if(landuse_2001 == 11 || landuse_2001 >= 90 || protected, null(), 0))"
r.mapcalc "urban_2011 = if(landuse_2011 >= 21 && landuse_2011 <= 24, 1, if(landuse_2011 == 11 || landuse_2011 >= 90 || protected, null(), 0))"
</source>
We will convert vector counties to raster with the values of the FIPS attribute which links to population file:
<source lang="bash">
v.to.rast input=subregions_triangle type=area use=attr attribute_column=FIPS output=selected_counties_id
</source>
If we need to run FUTURES only for smaller number of counties, we can extract them based on the identifier:
<source lang="bash">
v.to.rast input=subregions_triangle type=area where="FIPS in (37183, 37101)" use=attr attribute_column=FIPS output=selected_counties_id
</source>

Revision as of 02:01, 17 February 2016

r.futures.* is an implementation of FUTure Urban-Regional Environment Simulation (FUTURES) which is a model for multilevel simulations of emerging urban-rural landscape structure. FUTURES produces regional projections of landscape patterns using coupled submodels that integrate nonstationary drivers of land change: per capita demand (DEMAND submodel), site suitability (POTENTIAL submodel), and the spatial structure of conversion events (PGA submodel).

This tutorial shows how to prepare data and run the model. You can download sample dataset from here (TODO) and simulate urban growth in The Triangle, region in the Piedmont of North Carolina in the United States with rapidly growing cities Raleigh, Durham and Chapel Hill.

Software

Required software includes:

  • GRASS GIS 7
  • r.futures addon
  • R (≥ 3.0.2)
  • SciPy (optional)

Input data used in this tutorial

  • digital elevation model (NED)
  • NLCD 2001, 2011
  • NLCD 1992/2001 Retrofit Land Cover Change Product
  • transportation network (TIGER)
  • county boundaries (TIGER)
  • protected areas (Secured Lands)
  • cities above 20000 (USGS)
  • county population past estimates and future projections (NC OSBM) per county (nonspatial)

Workflow

Initial data preparation

First we will set computational region of our analyses to an extent covering our study area and so that the cells are aligned with one of our landuse rasters:

g.region n=1648005 s=1480695 e=1624815 w=1462965 align=landuse_2001 -p

We will derive urbanized areas from NLCD dataset for year 2001 and 2011 by extracting categories category 21 - 24 into a new binary map where developed is 1, undeveloped 0 and NULL (no data) is area unsuitable for development (water, wetlands, protected areas). First we will convert protected areas from vector to raster and set NULLs to zeros (for simpler raster algebra expression in the next step):

v.to.rast input=protected output=protected use=val
r.null map=protected null=0

And then create rasters of developed/undeveloped areas using raster algebra:

r.mapcalc "urban_2001 = if(landuse_2001 >= 21 && landuse_2001 <= 24, 1, if(landuse_2001 == 11 || landuse_2001 >= 90 || protected, null(), 0))"
r.mapcalc "urban_2011 = if(landuse_2011 >= 21 && landuse_2011 <= 24, 1, if(landuse_2011 == 11 || landuse_2011 >= 90 || protected, null(), 0))"

We will convert vector counties to raster with the values of the FIPS attribute which links to population file:

v.to.rast input=subregions_triangle type=area use=attr attribute_column=FIPS output=selected_counties_id

If we need to run FUTURES only for smaller number of counties, we can extract them based on the identifier:

v.to.rast input=subregions_triangle type=area where="FIPS in (37183, 37101)" use=attr attribute_column=FIPS output=selected_counties_id