Allocating Forecast Data to the Landscape
Karen A. Larson
Abstract
The Metro Data Resource Center produces 20-year forecasts of population, households and employment for use in its solid waste, land-use and transportation planning programs. These forecasts are created at the TAZ (Transportation Analysis Zone) level. This paper addresses the process used to further disaggregate these data to quarter acre grid cells based upon multiple criteria, including whether the cell represents developed or vacant land, current zoning, observed refill rates and theoretical upzone densities.
Introduction
Metro’s Data Resource Center produces a four-county forecast of population, households and employment at place of work. The county-level forecast is then allocated to TAZ for use in the regional transportation model. There are times when forecast data are needed for geographies other than the original TAZ allocations, for example, when the regional transportation model changes zone systems. Re-aggregations of the forecast data are also used in Metro’s Growth Management and by Regional Environmental Management for forecasting and program evaluation. The Data Resource Center also produces aggregations at custom geographies for our local government partners and for fee-for-service clients.
In order to successfully disaggregate the data from the TAZ to quarter-acre grid cells we make use of the extensive GIS databases maintained by the Data Resource Center and Clark County, Washington’s Department of Assessment and GIS. These database include the base information necessary to allocate the TAZ-level forecast data to quarter acre grid cells. In addition, the Data Resource Center has conducted research on the rate of residential infill and redevelopment, which we term ‘refill’, and on employment density. The results of these studies provide us with a better basis upon which to build an allocation structure.
Methodology
Step One – Build an allocation grid
The first step in disaggregating the data is the creation of an allocation grid using the data stored in Metro’s GIS (RLIS) and Clark County, Washington’s GIS. These polygon data are converted to individual grids with quarter-acre cells, then combined to make a single unified allocation grid. The coverages with alphanumeric attribute data, namely Metro’s zoning coverage, were converted to grids using ArcView’s Spatial Analyst extension. All other coverages were converted in ArcInfo GRID 7.1.2 .
Table 1 – Input Coverages to Allocation Grid
Coverage |
Description |
Metro zoning |
Generalized zoning for the three Oregon counties. |
Clark County zoning |
Jurisdictional zoning for Clark County, Washington |
Metro undeveloped lands |
Undeveloped land data for the three Oregon counties. |
Clark County vacant lands |
Undeveloped land data for Clark County, Washington |
Transportation Analysis Zones |
Zones used for initial forecast allocation |
Region 2040 Design Types |
Designations from the 2040 Growth Concept Map as describes in the Framework Plan |
Water |
Rivers and lakes – used as a mask |
Parks |
Parks and open spaces – used as a mask |
The steps for conversion from polygon to grid are as follows:
Step Two – Produce a cell-level allocation in Excel
The cell-level allocation calculations are fairly involved, and are much easier to accomplish in a Microsoft Excel workbook using Visual Basic for Applications than in an Arc/Info AML. Additionally, the allocation of population and households is done in a separate workbook from the allocation of employment, due to the size of the allocation grid’s value attribute table.
Before the VBA macros can be run it is necessary to set up the input data in the workbook as follows:
Zoning densities for housing and employment based upon current zoning
Employment refill rates by SIC, based upon Metro's 1999 Employment Density Study
Jurisdictional residential refill rates based upon Metro's Report on Residential Refill Study for 97 – 98
An upzoning matrix for areas inside the Metro boundary based upon the assumptions used in Metro's Urban Growth Report.
TAZ to Jurisdiction
TAZ to County Subarea
Value |
Description |
DSHREG / ESHREG |
The existing regulatory dwelling unit or employment density is based upon current zoning. This value is used as a weight within the TAZ for allocation to developed land. It is equal to the count of grid cells * number of dwelling units / employees per acre allowed by the current zoning. The allowed densities are found in the zoning lookup table. |
DSHZONE / ESHZONE |
Summation of DSHREG / ESHREG by TAZ. |
DSHREG_Forecast / ESHREG_Forecast |
The theoretical future dwelling unit or employment density based upon the Region 2040 Upzone Matrix and is only applicable to areas inside Metro’s jurisdictional boundary. For areas outside Metro the existing zoning is used. This value is used as a weight within the TAZ for allocation to undeveloped land. It is equal to the count of grid cells * number of dwelling units / employees per acre that would be allowed by the theoretical upzoning. |
DSHZONE_Forecast / ESHZONE_Forecast |
Summation of DSHREG_Forecast / ESHREG_Forecast by TAZ |
Subarea |
Each cell is coded to the county subarea in which it is located. |
Jurisdiction |
Each cell is coded to the jurisdiction in which it is located. |
Refill_Rate |
For population and household allocation each cell is assigned a residential refill rate based upon the results of Metro’s Report on Residential Refill Study for 97 – 98. Cells in the three Oregon counties are assigned the appropriate jurisdiction rate. Cells in Clark County, Washington are assigned the regional average rate. |
Theoretical_Vacant_Max |
For population and household allocation each cell is assigned a value based upon the following formula: ( Count * Forecast Dwelling Units per Acre ) / 4 For employment allocation each cell is assigned a value for each 1-digit SIC category, also know as a major industry group. This value is calculated as follows: 1 / ( (Floor-to-Area Ratio * Employment Density) / 43560 ) The employment per acre is derived from Metro’s 1999 Employment Density Study, which yielded an FAR value for all 10 major industry groups, for each of the 20 county subareas in the region. In both cases the cell value is set to 0 for cells representing developed land. |
TAZ_Diff (by forecast year) |
This is the data that will be allocated to the individual grid cells. It is the difference between the base year value and the forecast value, by TAZ. |
Once the setup is complete the first round of allocation calculations may be run. The function used for this is named CalcFirstRound and may be found in the appendix. Both example functions in the appendix were used for calculating employment allocations. The functions used in the population and household allocations are the same, except for the variable names.
Figure One: The logical process followed by the CalcFirstRound.
Next we check for any unallocated growth as follows:
The second function, CalcFinal, allocates the remaining amount to the cells in the TAZ based upon current zoning.
Figure Two: The logical process followed by the CalcFinal.
Finally, we perform a final check against the control totals by TAZ:
At this point we are ready to export the allocations to a tab delimited ASCII file. The only columns exported from the allocation spreadsheet are the value item linking the data back to the allocation grid and the final cell values.
Step Three – Rejoin the allocations to the allocation grid
The final step in the allocation process is reassembling the allocations and the allocation grid:
Conclusion
Allocating zonal data of any kind to a raster system can be fraught with uncertainty and frustration. There is an inevitable trade-off between accuracy and feasibility. In the case of population and employment forecast data we found that having detailed base data to work from, and an explicit design for the future development of the region to be invaluable.
In the ten months since the completion of this project we have completed an inventory of the nearly 700 local zoning designations and their allowed densities. This allowed us to create a more accurate grid of the base year estimates being used in the forecast currently under development. It is our expectation that when the time comes to disaggregate the TAZ allocations for the new forecast having a better base to use as a jumping-off point will allow us to create an even more reliable representation of the forecast ‘on the ground’.
Appendix
Function CalcFirstRound(VacDev, EshregExt, EshregFor, EshzoneExt, EshzoneFor, Diffin, RefillRate, TheorMax, Countin) Dim x1 As Integer Dim Vac_Dev As Variant Dim Eshreg_Ext As Variant Dim Eshreg_For As Variant Dim Eshzone_Ext As Variant Dim Eshzone_For As Variant Dim Diff As Variant Dim Refill_Rate As Variant Dim Theor_Max As Variant Dim Count As Variant Dim CellTotal As Variant Dim Growth As Variant x1 = 1 Vac_Dev = VacDev ' 1 = Vacant, 99999 = Developed Eshreg_Ext = EshregExt Eshzone_Ext = EshzoneExt Eshreg_For = EshregFor Eshzone_For = EshzoneFor Refill_Rate = RefillRate Count = Countin Theor_Max = TheorMax Diff = Diffin Growth = 0 CellTotal = "Oops" ' Test for change in TAZ values If Diff = 0 Then CellTotal = 0 ' Employment Gain ElseIf Diff > 0 Then 'Developed Land If Vac_Dev > 1 Then Growth = Diff * Refill_Rate CellTotal = (Eshreg_Ext * (Growth / Eshzone_Ext)) / Count 'Vacant Land ElseIf Vac_Dev = 1 Then 'Compare growth to theoretical max If (Diff * (1 - Refill_Rate)) < Theor_Max Then Growth = Diff * (1 - Refill_Rate) CellTotal = (Eshreg_For * (Growth / Eshzone_For)) / Count ElseIf (Diff * (1 - Refill_Rate)) > Theor_Max Then Growth = Theor_Max CellTotal = (Eshreg_For * (Growth / Eshzone_For)) / Count Else: CellTotal = "Err-gain/vac/theormax" End If Else: CellTotal = "Err-gain/vac" End If 'Employment Loss ElseIf Diff < 0 Then 'Developed Land If Vac_Dev > 1 Then Growth = Diff CellTotal = (Eshreg_Ext * (Growth / Eshzone_Ext)) / Count 'Vacant Land Else: CellTotal = 0 End If Else: CellTotal = Diff End If CalcEmp1 = CellTotal End Function
Function CalcFinal(EshregExt, EshzoneExt, Diffin, Emp96, EmpFor, Countin) Dim Eshreg_Ext As Variant Dim Eshzone_Ext As Variant Dim Diff As Variant Dim cv96 As Variant Dim cv_forecast As Variant Dim Count As Variant Dim CellTotal As Variant Eshreg_Ext = EshregExt Eshzone_Ext = EshzoneExt Diff = Diffin cv96 = Emp96 cv_forecast = EmpFor Count = Countin If Diff <> 0 Then CellTotal = (cv96 + cv_forecast) + ((Eshreg_Ext * (Diff / Eshzone_Ext)) / Count) ElseIf Diff = 0 Then CellTotal = cv96 + cv_forecast Else: CellTotal = "Oops" End If CalcEmp2 = CellTotal End Function
References:
Metro; Regional Framework Plan, December 11, 1997, pp 11 -23
Conder, Sonny; Report on the Residential Refill Study for 97 – 98; Growth Management Services Department, Metro; ( January, 2000), 18 pages
Growth Management Services Department, Metro; 1997 Urban Growth Report Update; Growth Management Services Department, Metro; ( September, 1999), 71 pages
Yee, Dennis and Bradford, Jennifer; Technical Report: 1999 Employment Density Study; Growth Management Services Department, Metro; (May 5, 1999), 29 pages
Author:
Karen A. Larson, GIS Analyst
Metro
600 NE Grand Ave., Portland, OR 97232 USA
Phone: 503-797-1581, Fax: 503-797-1909
larsonk@metro.dst.or.us