A Model of Current and Potential Urban Development
Demonstrating Relational Database and Geoprocessing Fundamentals
Realtional database management systems form the basis of most of the information management systems that (for better or worse) are used to record the properties of almost everything. Relational databses store references to things as rows (tuples) in tables (relations). A table is used to store a collection of these references for a single class of things. A row in a table holds a collection of attributes that serve to distinquish one thing from another. A set of assumptions about how things, rows, classes and tables are expected to be composed is discussed in our lecture notes. For now we will say that with an adequately designed set of tables, we can apply sequenses of query, transformation, associative and summary operations that will yield useful new information about how things and ideas relate to eachother.
These sequenses of operations that we can apply can be thought of as models of aspects of the world that we can experiment with to learn new things about reality and also about scenarios that we create. If we learn how to automate the workflow of our model procedure, then we can make a lot of experiments that will help us to understand the consequenses of one decision or another.
This tutorial will take a look at the fundamental operations of relational datamodels and also of developing well documented and repeatable workflow processing in ArcMap. This will all be put together around a buildout model for developpment in Somerville Massachusetts.
Prerequisites
This tutorial builds on ideas covered in the preceding tutorials: Beginning a Place-Based Data Collection and Thematic Mapping of Nominal Class Data, Thematic Mapping of Quantitative and Intensive Statistics
References and Deeper Reading
- Modeling What's Important fom the GSD GIS Manual.
- Using ArcMap particularly Chapter 10, Working with Tables.
- Building a Geodatabase
- Geoprocessing in ArcGIS
Download Sample Data
Right Click Here to download the sample dataset. Extract its contents to your C:\temp\yourusername folder.
Representing Development Intensity: Current and Future
As usual, we will not begin to use GIS until we are clear about what we are trying to represent. Without a clear formulation of a conceptual model, there is no point exploring data. Today we are concerned with development intensity near existing and proposed transit stops. Our conception of development intensity we will use the common planning metric: Floor Area Ratio (FAR), which is the amount of useable floor area of the building on a property, divided by the land area of the property parcel. We awnt to model existing intensity and potential development allowed by the zoning regulations. for individual parcels and for entire districts near transit stops. This will help us to understand opportunities and for infill. We would like to use this model to experiment with adjustments to the zoning ordinance or to the zoning of specific parcels to understand what the potential buildout impacts of these scenarios would be.
Our next step is to break this conceptual model down into its component concepts and to explain how we find data and operations to represent these. Our property parcels will be represented by the 2006 Parcels Table from the City of Somerville Tax Assessor. Each parcel is represented as a row in this table, and has attributes including Lot area and gross floor area and a code that references the zoning classification that applies to that parcel. The potential development of parcels will be represented by the dimensional standards given in the Somerville Zoning Ordinance, Article 8. These standards have been represented in a Zoning Class Table that represents each zoning class and its intensity allowances. The concept of Near Transit Stops will be represented by districts that we create with polygons on an Area of Interst layer. Variations on the zoning ordiance will be represented two ways: By making a new version of the zoning class table, or by adding a column to our parcels layer to represent new scenarios of re-zoning.
Naturally, we will want to explore these datasets and to critique them with regard to how well they represent our concepts. We should examine some of the questions described in Modeling What's Important to asnswer the ultimate question about the errors of ommission or commission that may be inherent in our use of the data the way we hope to. This will also help us to understand how our data may be improved. One interesting aspect in this case will be to consider biases in the tax assessor's view of property, and also the fact that since the Zoning ordinance is itself a formal concept that may be almost perfectly represented by its map and its table. And yet, we know that in a mixed use parcel, should actually reflect the FAR for residential and commercial, and in our model we only have one number. We could probably fix this last problem.
A more fundamental problem with our model lays in the too-simple assumption that the potential development of a parcel is totally dependent on the FAR limits of its zoning class. There are many other issues that may cut in to this: including some amount opf land being required to fulfil parking and open space requirements probably being the largest factor. Given this, we would expect our mofrl to overestimate the actual development potential by perhaps 20 percent. (I just made this number up, but at least I have some guess as to the direction and the magnitude of the error. I could probably do some experiments to get a much better estimate of the error that results from this simplified concept of development potential. This would help me figure out how to make a better model.
References:
- Article 8 of the SOmerville Zoning Ordinance (2006)
- Modeling What's Important fom the GSD GIS Manual.
- Sorting Records in a Table
- Selecting Records from a table
Explore the Data Representations
- Open the Attributes table for your parcels layer.
- Observe how each parcel has a distinct combinaton of attributes and how this assumption is guaranteed by the assignment of a Unique Parcel ID to each row in the table.
- Explore the attributes for parcels such as living area, land area and gross area.
- Do some sorts to try to figure out how these are all related and what theit ranges are.
- Use attribute queries to filter out selections og parcels that answer to particular combinations of attributes.
- Make a thematic map that portrays the current FAR as indicated by the assessor's lot size and gross area measures.
- Examine the Zoning Code Lookup Table and its unique ID.
- Observe that the refeernces to Zone Code in the parcels layer represent a Foreign Key: a reference to the primary key of the zoning lookup table.
Measuring Existing FAR
Our next step is to get summaries of exisitng FAR for specific areas of town that we define in our areas of interest layer. To do this we will have to add a new column to our table and use some relational database tools to update the value of that columnthat holds a value for FAR for each parcel. Then we will be able to calculate some summaries of the actual FAR being used in each zoning class. We will see that these summary functions can be requested to operate only on selected parcels. This will be a great opportunity to explore the utility of a spatial operation that lets us select the parcels within a particular area of interest. We will explore these functions with some Ad-Hoc tools in the ArcMap Graphic Interface. Then we will learn how to use and create geoprocessing tools that will let us create a repatable workflow that will both document and automate our routine for calculating exisiting FAR for a given zone.
Transforming Attribute References in a Table
The referencing systems used in a dataset may not immediately lend themselves to representing our concepts. In this case, our concept is FAR, but we have only Lot Area and Gross Area measurements for our parcel. This isn't too bad, since we can reasonably expect FAR to be a simple function of these two numbers. ASo we need only to create a new column on our parcels table and to populate it with a value of floor area divided by lot area. We will immediately encounter a difficulty in that ArcMap won't allow us to divide by zero. So we will do an attribute query to select only those rows that have a gross area greater than 0, and to the math. Then we will invert the selection and calculate 0 for the FAR of those apparently landless or unmeasured parcels (perhaps condos or tax exempt land) We will then map the result and see if it is logically consistent with our thematic map that did its normalization in the symbology properties.
References
- Create a new column in your parcels table named FAR_exist. Make it a Double precisiton number.
- Try to calculate its value as Living Area / landsqft. Expect problems!
- Do an attribute query to select those parcels with a land area greater than zero.
- Calculate your values again.
- Switch selection abd calculate all of the other parcels to have 0 FAR, which may not be exactly true, but will work for our purposes.
- Copy your layer and make a new portrayal of the calculated FAR.
Making Summaries on Tables and Subsets of Records
So, we've made maps before, and they are useful for looking at, but what we really need now is Numbers! We want to know what the existing FAR is in particular zones. This will be a good opportunity to explore table summaries. These are great but even greater when we learn how to do these with particular subsets of records that we can select. We will learn a new way of selecting parcels that fall within particular areas of interest to create summaries of development denisities by zone within specificly defined areas of town. Finally, we will take a look at how summaries will work just as well with table views that represent the association of two or more separate tables.
References
- Sumarize the parcels table by unique values of Zone_. Claculate summary values for Land Square feet and the Living Area. Put this into a new table in your own scratch directory in the data collection.
- Select an area of interest form the Areas of INterest layer attribute table.
- Use Select by Location to select the parcels within the selected area of interest.
- Repeat your summary, but now only on the selecte parcels. Name the table something meaningful.
- Now Join the Zoning Lookup Table to the parcels table, and nbote that you now can use the Zoning Type2 valyues to proivide a more humanly readible summary.
- We now can also create a new column on our parcels table to hold the developable area that is calculated
- May as well add the value for Allowable FAR that is now associated with each parcel by way of the zoning lookup table to your summary.
- Now conteplate adding new fields to the table that would tabulate potential living area of each zone, and the difference between measured and permitted FAR, and the consequential difference in square feet of living area. We will figure out a way to do this easily in a minute
Documenting and Automating Complex Workflows with Geoprocessing Models
The previous exercise was fairly rewarding, but could also become tedious if we had to do it too many times. With tedium also comes all sorts of potential errors that we may not catch (those are the worst kind!) So it would be nice to be able to automate this procedure. To actually script this workflow will also have the added benefit of allowing us to very easily share our method with other people. Thankfully ArcGIS provides a nice mechanism for doing this.
References
- Overview of Geoprocessing Environment Settings
- What is Geoiprocessing"
- A whirlwind Tour of Geoprocessing
- An Overview of Model BuilderYou may want to read this: Setting Up Models for a Collaborative Environment
- Take a look at the Select by Location tool and the Summarize Values tool in the geoprocessing toolbox.
- Add the GSD Development Toolbox from the pbcote/tools folder in your sample dataset
- Right Click the Buildoiut Model and choose Edit to see how it is made
- Examine the values for the parameters in the blue ovals, and the wizards in the yellow boxes.
- Run this model one step at a time form the model window.
- Close the model wiondow, and run the model by double-clicking its icon in the toolbox panel.
