Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Django web application to collect geospatial features and manage feature collection among groups of users
JavaScript Python HTML CSS
Branch: develop


Geographic Work Queueing and Tasking System

GeoQ video

GeoQ is an open source (MIT License) geographic tasking system that allows teams to collect geographic structured observations across a large area, but manage the work in smaller geographic regions. Large areas can be quickly broken up into small 1km squares and assigned to a team. System transparency informs all groups about workflow to avoid duplication of effort.

The GeoQ software was developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with The MITRE Corporation. The government has "unlimited rights" and is releasing this software to increase the impact of government investments by providing developers with the opportunity to take things in new directions. The software use, modification, and distribution rights are stipulated within the MIT license.

Pull Requests

If you'd like to contribute to this project, please make a pull request. We'll review the pull request and discuss the changes. All pull request contributions to this project will be released under the MIT license.

Software source code previously released under an open source license and then modified by NGA staff is considered a "joint work" (see 17 USC § 101); it is partially copyrighted, partially public domain, and as a whole is protected by the copyrights of the non-government authors and must be released according to the terms of the original open source license.

In the News

For current news regarding GeoQ, see our Wiki Page


GeoQ Main page

List of active jobs

Details of a job

Importing a complex shapefile as work cells

Work cell status

Drawing observations within a work cell

Creating observations and socially tagging them

Viewing work cells and observations in Google Earth

Work cells in Google Earth

This project relies heavily on open source packages, particularly:

Django under BSD

Leaflet under BSD

Postgres under PostgreSQL license

PostGIS under GPL version 2

GeoQ Configuration

The geoq/ file contains installation-specific settings. The Database name/pw and server URLs will need to be configured here.

GeoQ Installation

Cloud Installation::

  1. You can optionally deploy GeoQ with all dependencies to a Virtual Machine or a cloud VM (such as an Amazon Web Services EC2 box) by using the chef installer at

  2. Chef scripts are our preferred method of automating cloud builds

Mac OSX Development Build Instructions::

  1. Install PostGIS 2.0 using instructions at There are several options there, but for most, the easiest option is to follow the Homebrew instructions. If you don't have Homebrew installed, you can either buid it securely yourself or follow the quick (yet not secure) one line instruction at

    One exception: Instead of using brew to install postgres, it's usually easier to install from After installing, add the app's bin directory (/Applications/ to your PATH.

  2. (Optional) Install a Geoserver (we recommend the OGC Geoserver at

  3. Make sure Python, Virtualenv, npm, and Git are installed

    % Note that some distros (Debian) might need additional libraries:
    % sudo apt-get build-dep python-psycopg2
    % (optional) sudo apt-get install sendmail
  4. Install and setup geoq:

    % mkdir -p ~/pyenv
    % virtualenv --no-site-packages ~/pyenv/geoq
    % source ~/pyenv/geoq/bin/activate
    % git clone
  5. Create the database and sync dependencies and data:

    % cd geoq
    % pip install paver
    % paver install_dependencies
    % paver createdb
    % paver create_db_user
    % paver sync
  6. Modify local settings (modify entries below based on your system settings):

    % cd geoq
    % cat >
      EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
      EMAIL_PORT = 25
      EMAIL_HOST = "localhost"
      MEDIA_ROOT = '/opt/src/pyenv/geoq/geoq-django'
      STATIC_ROOT = '{0}{1}'.format('/usr/src/static/', STATIC_URL_FOLDER)
  7. (Optional) Load development fixtures:

    % paver install_dev_fixtures # creates an admin/admin superuser
  8. Build user accounts:

    % python createsuperuser
  9. Install less and add its folder ("type -p less") to your bash profile:

    % npm install -g less
    % python collectstatic
  10. Start it up!

    % paver start_django

CentOS Development build instructions (tested on CentOS 6.6)::


  • Python 2.6+
  • Postgres 9.X (stock pg_hba.conf configuration)
  • virtualenv
  • node / npm

From a shell:

virtualenv ~/geoq
cd ~/geoq
source bin/activate
git clone
cd geoq
sudo -u postgres psql << EOF
create role geoq login password 'geoq';
create database geoq with owner geoq;
\c geoq
create extension postgis;
create extension postgis_topology;

pip install paver
paver install_dependencies
paver sync
paver install_dev_fixtures

npm install -g less
cat << EOF > geoq/
STATIC_ROOT = '{0}{1}'.format('', STATIC_URL_FOLDER)

All that's left is to create a super user account => python createsuperuser and then you're ready to start GEOQ!

paver start_django
Something went wrong with that request. Please try again.