This is a Django app that was generated by running paster create -t openblock openrural. It starts as a thin wrapper around ebpub, and like any such django app it may be customized by adding templates, modifying urls.py, etc.
For more documentation, see http://openblockproject.org/docs/install/custom.html
For deployment with apache's mod_wsgi, there is a suitable wsgi script in the wsgi/ directory.
There are more example config files in etc/.
Clone Open Rural and create a new virtualenv:
$ git clone git://github.com/openrural/openrural-nc.git
$ cd openrural-nc/
$ mkvirtualenv --distribute -p python2.6 openrural
If you're on Ubuntu 11.04, install GDAL the hard way. The commands are:
$ gdal-config --version
1.6.3
$ pip install --no-install "GDAL>=1.6,<1.7a" # adjust version as needed
$ rm -f $VIRTUAL_ENV/build/GDAL/setup.cfg
$ cd $VIRTUAL_ENV/build/GDAL
$ python setup.py build_ext --gdal-config=gdal-config \
--library-dirs=/usr/lib \
--libraries=gdal1.6.0 \
--include-dirs=/usr/include/gdal \
install
Install the OpenRural packages:
$ cd openrural-nc/
$ pip install -r requirements/deploy.txt
$ pip install --no-index \
--find-links=file:$PWD/requirements/sdists/ \
-r requirements/ebdata.txt \
-r requirements/ebpub.txt \
-r requirements/obadmin.txt \
-r requirements/openrural.txt
$ add2virtualenv .
If you're developing OpenBlock, you should install the development version:
$ mkvirtualenv --distribute -p python2.6 openrural
$ pip install -r requirements/deploy.txt
$ fab develop:../openblock,no_index=True
$ pip install -r requirements/dev.txt
$ add2virtualenv .
Create a PostgreSQL database for development:
$ createdb --template=template_postgis openblock_devel
Create a local settings file:
$ cp openrural/local_settings.py.example openrural/local_settings.py
Edit local_settings.py
and extend from the project settings module you want to work on:
1c1
< from openrural.settings import *
---
> from openrural.settings_whiteville import *
Point Django do your local settings and initialize the database:
$ export DJANGO_SETTINGS_MODULE=openrural.local_settings
$ django-admin.py syncdb --migrate
If everything went smoothly, you can now runserver:
$ django-admin.py runserver
To import data for Columbus County, NC:
$ django-admin.py import_nc_zips
$ django-admin.py import_county_streets 37047
$ django-admin.py import import_columbus_county
Where 37047 is the U.S. Census county ID for the county you want to import (37047 = Columbus County, NC).
For example, to import data for Orange County:
$ django-admin.py import_nc_zips
$ django-admin.py import_county_streets 37135
$ django-admin.py import_location_zip http://web.co.orange.nc.us/gisdownloads/city.zip
$ wget http://web.co.orange.nc.us/gisdownloads/city.zip -O city.zip; \
unzip -d city city.zip; \
rm city.zip; \
import_locations --type-name=City --type-name-plural=Cities cities ./city/; \
rm -rf ./city
$ wget http://web.co.orange.nc.us/gisdownloads/townships.zip -O townships.zip; \
unzip -d townships townships.zip; \
rm townships.zip; \
import_locations --type-name=Township --type-name-plural=Townships townships ./townships/; \
rm -rf ./townships
We'll use the U.S. Census Bureau TIGER/Line data for North Carolina, specifially 23MB of 5-Digit ZIP Code Tabulation Area (2002):
$ wget http://www2.census.gov/geo/tiger/TIGER2009/37_NORTH_CAROLINA/tl_2009_37_zcta5.zip
$ unzip tl_2009_37_zcta5.zip -d zipcodes
$ import_zips_tiger -v -b zipcodes/
Now we'll get the block data, including Columbus County data:
- Place (Current)
- All Lines
- Topological Faces (Polygons With All Geocodes)
- Feature Names Relationship File
You can import these like so:
$ wget http://www2.census.gov/geo/tiger/TIGER2009/37_NORTH_CAROLINA/tl_2009_37_place.zip \
http://www2.census.gov/geo/tiger/TIGER2009/37_NORTH_CAROLINA/37047_Columbus_County/tl_2009_37047_edges.zip \
http://www2.census.gov/geo/tiger/TIGER2009/37_NORTH_CAROLINA/37047_Columbus_County/tl_2009_37047_faces.zip \
http://www2.census.gov/geo/tiger/TIGER2009/37_NORTH_CAROLINA/37047_Columbus_County/tl_2009_37047_featnames.zip
$ unzip -d blocks \*.zip
$ import_blocks_tiger --city=WHITEVILLE \
--filter-bounds=1 \
blocks/tl_2009_37047_edges.shp \
blocks/tl_2009_37047_featnames.dbf \
blocks/tl_2009_37047_faces.dbf \
blocks/tl_2009_37_place.shp
Derive streets and intersections from the blocks data:
$ populate_streets -v -v -v -v streets
$ populate_streets -v -v -v -v block_intersections
$ populate_streets -v -v -v -v intersections
To log debugging information to the database for later analysis, you can use the DatabaseHandler with specific loggers:
LOGGING = {
'handlers': {
'database': {
'level': 'DEBUG',
'class': 'openrural.error_log.logger.DatabaseHandler',
},
},
'loggers': {
'ebpub.streets.blockimport': {
'handlers': ['database',],
'level': 'DEBUG',
}
}
}
This will, of course, slow down any intensive operation as it is continually interacting with the database.