![](http://archive.cnu.org/sites/www.cnu.org/files/imagecache/newsthumb/join_cnu.png)
Spatial Enclosure Analysis with GIS
![Mike.Zimney's picture Mike.Zimney's picture](http://archive.cnu.org/sites/www.cnu.org/files/pictures/picture-4314.jpg)
![Google Earth Screen Shot Google Earth Screen Shot](http://archive.cnu.org/sites/www.cnu.org/files/imagecache/blog/SE.jpg)
I've been using GIS to help analyze spatial enclosure of existing development by using street centerline data and building footprint data.
In short, the code will calculate the spatial enclosure by analyzing the location of each building in reference to the street centerline. Attached is an example screen shot of the resulting data from the Portage Park neighborhood in Chicago; data courtesy of Emily Talen.
Here's a couple shortcomings of the analysis:
1. Does not account for "missing teeth" (this could be done but would be very complicated to code)
2. Does not account for the presence of boulevard trees and the benefits they can create relating to spatial enclosure.
I think this takes the whole Walk Score idea and adds another component to it.
I'm looking to test this more, so if anyone has an area that they would be interested in seeing the results send me an email. I would really like to get data for an area with really good urban form as well as an area typical of low density sprawl.
Google Earth files have now been attached for viewing.
Attachment | Size |
---|---|
SE.jpg | 886.41 KB |
Streets_Chicago.kml | 745.12 KB |
Buildings_Chicago.kml | 13.58 MB |
Buildings_Fargo.kml | 1.08 MB |
Comments
Write your comments in the box below and share on your Facebook!
Comments
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:78:\"Non-static method PEAR_ErrorStack::singleton() should not be called statically\";s:5:\"%file\";s:103:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/packages/PEAR/ErrorStack.php\";s:5:\"%line\";i:983;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:212:\"Declaration of CRM_Core_Error::singleton() should be compatible with & PEAR_ErrorStack::singleton($package, $msgCallback = false, $contextCallback = false, $throwPEAR_Error = false, $stackClass = \'PEAR_Error...\')\";s:5:\"%file\";s:93:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/Error.php\";s:5:\"%line\";i:52;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:78:\"Non-static method PEAR_ErrorStack::singleton() should not be called statically\";s:5:\"%file\";s:93:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/Error.php\";s:5:\"%line\";i:625;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:74:\"Non-static method PEAR::setErrorHandling() should not be called statically\";s:5:\"%file\";s:94:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/Config.php\";s:5:\"%line\";i:183;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:117:\"Declaration of CRM_Utils_System_Drupal6::cmsRootPath() should be compatible with CRM_Utils_System_Base::cmsRootPath()\";s:5:\"%file\";s:103:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Utils/System/Drupal6.php\";s:5:\"%line\";i:41;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:82:\"Non-static method CRM_Core_Config::isUpgradeMode() should not be called statically\";s:5:\"%file\";s:105:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/BAO/ConfigSetting.php\";s:5:\"%line\";i:199;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:82:\"Non-static method CRM_Core_Config::isUpgradeMode() should not be called statically\";s:5:\"%file\";s:105:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/BAO/ConfigSetting.php\";s:5:\"%line\";i:228;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:74:\"Non-static method PEAR::setErrorHandling() should not be called statically\";s:5:\"%file\";s:93:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/Error.php\";s:5:\"%line\";i:532;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:74:\"Non-static method PEAR::setErrorHandling() should not be called statically\";s:5:\"%file\";s:93:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/Error.php\";s:5:\"%line\";i:567;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Warning: Table './archive_cnu/watchdog' is marked as crashed and should be repaired query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:14:\"strict warning\";s:8:\"%message\";s:74:\"Non-static method PEAR::setErrorHandling() should not be called statically\";s:5:\"%file\";s:93:\"/var/www/archive.cnu.org/htdocs/sites/cnu.civicactions.net/modules/civicrm/CRM/Core/Error.php\";s:5:\"%line\";i:567;}', 3, '', 'http://archive.cnu.org/cnu-salons/2009/09/spatial-enclosure-analysis-gis', '', '3.144.91.72', 1724583494) in /var/www/archive.cnu.org/htdocs/includes/database.mysql.inc on line 135
Cool app - how accurate is it?
This seems like a very smart use of GIS data. Unfortunately, I'm not that familiar with the contents of typical city GIS files so I'll ask a few elementary questions:
1) Does the resulting illustration accurately reflect building setbacks? Are those setbacks explicitly referenced in the database? Or does your code take the footprint area to determine lot coverage and then sort of randomly place the resulting building on the block? Interestingly, the buildings in your computerized drawing all line up and they seem to line the sidewalks or have small front yards and comparatively ample back yards.
2) I don't see a lot of building height variation in your image. Does your code take into account each building's number of floors? If not, it seems like it probably could at some point since that data is likely stored in the same city files as the footprint area.
3) If a missing tooth is a vacant lot, wouldn't that show up as a void in your illustration? There do seem to be some voids in the image. And since there shouldn't be a footprint area for non-existent buildings on vacant lots, your program shouldn't show any evidence of a building there, right?
You certainly succeeded in interesting me in the idea. Nice work.
Follow-up
I should probably provide some additional information on the screen shot. The final results of the analysis provides building height to street width ratios (1:3, 1:6, etc.). So then I display the data using greens to represent good spatial enclosure and red for poor.
Dark Green 1:3 or less
Green 1:3 to 1:6
Yellow 1:6 to 1:8
Orange 1:8 to 1:10
Red 1:10+
1. The results are only as accurate as the GIS data. For the app to work I need, at a minimum, the building footprint and street centerline data. Building footprints are typically generated by a city using an aerial photo so the location could be +/- 5' off. So instead of using building setbacks the app uses the actual building location.
2. The app uses building heights to calculate the spatial enclosure data, preferrably I like to use building heights if its available but I can use the number of floors as well. Attached is a difference image showing a littler more variation.
3. You are correct that missing buildings become obvious in the 3d model. However, I typically take the average spatial enclosure for all the buildings along each block and tie this data back to the street centerline so that I can display the average for each block.
The drawback of this is if a block has 1:3 ratio for the existing buildings, but half the block was razed and is now a parking lot the analyzis will still give the entire block a 1:3 when in reality half the block has no enclosure. I would like modify the code so that I could flag these instances, but coding this have proved to be very difficult.
I added two additional
I added two additional screen shots of the legend and one showing an area with a little more building heigh variation. The second screen shot also shows the average spatial enclosure for each block which is represented by the colored street centerline.