Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/JasonSanford/gitspatial
A spatial API for your GitHub-hosted GeoJSON
https://github.com/JasonSanford/gitspatial
Last synced: 5 days ago
JSON representation
A spatial API for your GitHub-hosted GeoJSON
- Host: GitHub
- URL: https://github.com/JasonSanford/gitspatial
- Owner: JasonSanford
- Created: 2013-07-23T21:35:30.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2015-04-09T13:24:58.000Z (over 9 years ago)
- Last Synced: 2024-08-02T12:48:53.912Z (3 months ago)
- Language: Python
- Homepage:
- Size: 1.98 MB
- Stars: 113
- Watchers: 10
- Forks: 11
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-starred - JasonSanford/gitspatial - A spatial API for your GitHub-hosted GeoJSON (others)
README
# GitSpatial
A spatial API for your GitHub-hosted GeoJSON.
Read more in a [blog post](http://geojason.info/2013/gitspatial-a-spatial-api-for-your-github-hosted-geojson/).
## Overview
GitHub now supports [rendering GeoJSON files](https://help.github.com/articles/mapping-geojson-files-on-github). This makes it easy to collaborate on geo data. GitSpatial provides a spatial API for GeoJSON hosted at GitHub.
## How it Works
1. Visit http://gitspatial.com
2. Authorize the site to access your GitHub repos
3. Sync the repos that have GeoJSON in them
4. Sync individual GeoJSON files within these repos
5. We add a post-receive hook to your GitHub repo so we get notified when you might have updated features
6. Utilize the API to query your features### Search by Bounding Box
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
### Search by Point and Radius
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
## Development
GitSpatial is a Django app that uses PostGIS as a backend to GeoDjango. So, you might run into trouble getting dependencies installed.
### Non-Python dependencies
* GEOS
* GDAL
* Proj### Virtual Environment
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
### Environment Variables
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### Database Stuff
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
### Running the App
The django web server (gunicorn) and the celery process are defined in `Procfile`. Run with `Foreman`.
foreman start
### Static Files
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
## Testing
Do it with fab
fab test
## Deploying
Do it with fab
fab deploy