GeoData-Checkout is an open data platform for geospatial and time-enabled data. Data is stored inside MongoDB and made available to users in an interactive timeline/map, time-enabled KML for Google Earth, and GeoJSON.
Step 1: Draw a polygon around your neighborhood ( using Leaflet.js polygon editing tools )
Step 2: Click the "View Web Map" link and you will land on an interactive timeline-map ( powered by Mapbox.js )
Step 3: Download options include KML or GeoJSON. When you open the KML file in Google Earth, it will open a timeline control.
MongoDB is a NoSQL database which supports geospatial queries. The drawn polygon is saved as a CustomGeo, and its points are used to make this query:
timepoint.TimePoint.find( {
ll: {
"$within": {
"$polygon": poly
}
}
})
Leaflet.js from Cloudmade, MapBox.js from MapBox, Leaflet.js Pan Control, Node.js
The timeline code was repurposed to show a building timeline for Historic Macon.
The Historic Chicago app uses neighborhood-drawing and timeline components to make sense of 400,000+ buildings and build dates from the City of Chicago
Poang (github) is a Node.js/MongoDB app built using the Express framework. Poang uses Everyauth for local authentication, Mongoose-Auth to connect Everyauth to MongoDB (and Mongoose as the ODM) for account persistence, and Connect-Mongo as a session store. Most of the code in app.js was generated by Express and all of the code in auth.js after the Comment schema is straight from the Mongoose-Auth docs.
For testing, Poang uses the Mocha test framework, should for assertions, Sinon.JS for mocks & stubs, and Zombie.js for lightweight integration testing.
For more details, please see BeyondFog's blog post that walks through the various tests in Poang.
-
Do a git clone:
git clone git://github.com/codeforamerica/geodata-checkout.git
-
cd into the project directory and then install the necessary node modules:
npm install -d
-
start up MongoDB if it's not already running:
mongod --noprealloc --nojournal
-
start the node process:
node app.js
-
add a geospatial index to the "ll" field in your MongoDB settings
heroku create APP_NAME
git push heroku master
After you have created a new app on Heroku and pushed the code via git, you will need to use the Heroku Toolbelt from your command line to add the free MongoLab starter addon:
heroku addons:add mongolab:starter
Go to Heroku, click on Apps and then on this app's Addons panel. On the MongoLab admin panel, add a geospatial index to the "ll" field
POST each of your TimePoints to /timeline using a script such as https://gist.github.com/3853444
POST body should include these variables:
- lat = latitude
- lng = longitude
- start = StartMonth
- end = EndMonth