OpenTreeMap is a wiki-inspired, web-based geographic tree inventory application that enables individuals, organizations, and governments to work together and collaboratively map the urban forest. OpenTreeMap is a project of Azavea, Urban Forest Map, and Urban Ecos. The code is currently being used to create PhillyTreeMap.org, UrbanForestMap.org,…
JavaScript Python PHP
Pull request Compare This branch is 900 commits behind OpenTreeMap:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
classfaves
mapserver
profiles
qs_tiles
registration_backend
static
templates
treekey
treemap
utils
wsgi-scripts
.gitignore
Choices.sql
LICENSE
README.md
README.txt
__init__.py
global_context.py
manage.py
settings.py
settings_audit.py
settings_philadelphia.py
settings_sanfrancisco.py
urls.py

README.md

OpenTreeMap Logo

Updates? Issues? Questions?

For updates join the announcement email list here: http://groups.google.com/group/opentreemap-user For issues or questions you can try mailing the user list: http://groups.google.com/group/opentreemap-user or connect with us via IRC at #opentreemap on freenode

Installation Instructions

Required programs:

  • Webserver - Apache2 is recommended
  • Database - Postgres 8.4 + postgis 1.5 is recommended, Something compatable with Django required
  • Map tile renderer - GeoServer(java) on tomcat is recommended (port 8081)
  • SMTP service - sendmail is recommended
  • tile caching service - tilecache is recommended (port 8080 through apache)
  • Python 2.7

Required libraries from aptitude

  • python-django (version 1.3)
  • libapache2-mod-wsgi
  • python-psycopg2 (only for postgres access)
  • binutils
  • libgeos-3.2.0
  • libgeos-cl
  • libgdal1-1.6.0
  • libproj0
  • python-django-tagging
  • python-imaging
  • python-xlrd
  • python-feedparser
  • python-memcache
  • python-beautifulsoup
  • python-django-debug-toolbar
  • python-simplejson
  • python-django-extensions
  • python-gdal

Required libraries from the web

Patches:

Fix to proj to deal with spherical mercator
    wget http://download.osgeo.org/proj/proj-datumgrid-1.4.tar.gz
    tar -xzf /proj-datumgrid-1.4.tar.gz
    cd proj-datumgrid-1.4
    nad2bin null < null.lla
                            sudo cp null /usr/share/proj
Get django-sorting and fix bug
    git clone git://github.com/directeur/django-sorting.git
            Apply patch to django-sorting:
        https://github.com/directeur/django-sorting/issues#issue/8
                    -including comment by Alsaihn
            sudo cp django-sorting -R /usr/local/lib/python2.6/dist-packages/django_sorting
Get django-shapes and remove HttpResponse call
    wget https://bitbucket.org/springmeyer/django-shapes/get/tip.tar.gz
    In shapes/views/export.py - zip-response method - change >
        # Stick it all in a django HttpResponse
        #response = HttpResponse(zip_stream, mimetype=mimetype)
        #response['Content-Disposition'] = 'attachment; filename=%s.zip' % file_name.replace('.shp','')
        #response['Content-length'] = str(len(zip_stream))
        #response['Content-Type'] = mimetype
        #response.write(zip_stream)
        return zip_stream

Get django-reputation and fix default config and user bug
    svn checkout http://django-reputation.googlecode.com/svn/trunk/ django-reputation
            cd django-reputation
            sudo cp django_reputation -R /usr/local/lib/python2.6/dist-packages/django_reputation
            Change default config and user bug: (b/c it doesn't seem to accept values in settings.py)
                    cd /usr/local/lib/python2.6/dist-packages/django_reputation
                    In config.py - <change values as needed>
        In model.py - change >
            ....
            relevent_reputation_actions = UserReputationAction.onbjects.filter(user=user).filter........
            ....
            if expected_delta <= MAX_REPUTATION_GAIN_PER_DAY and expected_delta >= -1 * MAX_REPUTATION_LOSS_PER_DAY:
                delta = action_value
            elif expected_delta > MAX_REPUTATION_GAIN_PER_DAY:
                delta = 0
            elif expected_delta < MAX_REPUTATION_LOSS_PER_DAY:
                delta = 0
            ...
Fix Tilecache TMS issue if needed
            In tilecache/Services/TMS.py - change >
                    ...
                    elif len(parts) < 2:
                            return self.serviceCapabilities(host, self.service.layers)
                    else:
                + parts = parts[-5:]
                            layer = self.getLayer(parts[1])
                            if len(parts) < 3:
                            return self.layerCapabilities(host, layer)
                    ...