A spatial API for your GitHub-hosted GeoJSON.
Read more in a blog post.
GitHub now supports rendering GeoJSON files. This makes it easy to collaborate on geo data. GitSpatial provides a spatial API for GeoJSON hosted at GitHub.
- Visit http://gitspatial.com
- Authorize the site to access your GitHub repos
- Sync the repos that have GeoJSON in them
- Sync individual GeoJSON files within these repos
- We add a post-receive hook to your GitHub repo so we get notified when you might have updated features
- Utilize the API to query your features
Find all parks within a map view:
http://gitspatial.com/api/v1/JasonSanford/mecklenburg-gis-opendata/parks?bbox=-81.025,35.023,-80.685,35.487
Find all parks within 3000 meters of a point:
http://gitspatial.com/api/v1/JasonSanford/mecklenburg-gis-opendata/parks?lat=35.255&lon=-80.855&distance=3000
GitSpatial is a Django app that uses PostGIS as a backend to GeoDjango. So, you might run into trouble getting dependencies installed.
- GEOS
- GDAL
- Proj
Create a virtual environment. I drop the virtual envrionment within the root of the project. The venv
directory is in .gitignore
.
virtualenv venv
Source to the virtual environment.
source venv/bin/activate
Install dependencies defined in requirements.txt
.
pip install -r requirements.txt
To keep secret keys, passwords and such out of version control, we store them in environment variables. Below are the variables required to run.
AWS_ACCESS_KEY_ID=my-aws-key
AWS_SECRET_ACCESS_KEY=super-secret-aws-secret-access-key
DATABASE_URL=postgis://user:password@host:port/db_name
GITHUB_APP_ID=not-a-secret
GITHUB_API_SECRET=super-secret
Assuming you have a database already created and credentials are in the DATABASE_URL
envrionment variable, we just need to syncdb
to get the necessary tables created. Do not create a superuser if prompted.
python manage.py syncdb
The django web server (gunicorn) and the celery process are defined in Procfile
. Run with Foreman
.
foreman start
Static file deployment is handled by the collectstatic
command. We're using a combination of django-store and boto to automatically collect/push static files to Amazon S3 during deployment.
All static files should be placed in the /static
directory if they need to be deployed.
python manage.py collectstatic
Do it with fab
fab test
Do it with fab
fab deploy