Building a VGI Web Map 1: Goal and workplan
It's clear from my previous two posts that I want to learn how to build a web map. So, this post to lay out my roadmap forward.
Front end: A beautiful web-map with an intuitive UI, layer controls and the ability for a user to add point, line and polygon features, and to describe those features.
Back end: Upload and display data via layers on the map, moderation controls, make selected data 'private', download the spatial data (+ meta data) in a GIS friendly format such as .shp or .geojson.
I am modeling my outcome on the look, feel and function of two maps:
After some discussion and a great email from Hugh Stimson where he explained the components, and range of options he considered to build his Salish Sea Spill Map, I think I have a way forward - my specific project needs include:
Database: The options for this include CartoDB, Fusion Tables and MySQL or PostGIS. I think that I have settled on CartoDB as a middle road - perhaps a little harder to learn than Fusion Tables, but with some more functionality (i.e. I understand that the logic of CartoDB can include moderation by 'queuing' the VGI content for approval by a moderator). I am learning PostGIS as the standard DB, but find it frustrating and will switch over if I get good enough to manage it.
Base Map: I have not settled on this yet, but think that I will use a simple OSM derivative map, something like the MapBox Streets or Stamen Toner. The point of this base-map is to provide enough geographic detail that (1) the additional layers of data make sense, and (2) so that a VGI contributor can select the correct geographic area in which to add their data.
User Interface: There are a range of functions that need to be accommodated, which include:
- Zoom control
- Layer control
- Dialog boxes
- Navigation bar
- Forms (and perhaps some form validation)
- VGI Input
To do this, I think we will need to run Bootstrap and Leaflet, but I am not certain and need to delve into this in greater detail.
The final configuration will be CartoDB + Leaflet + JS.
- Consult with my team to ensure my thinking is correct, and to rough out a more detailed requirements list.
- Start using CartDB and Leaflet to build a basic web map as a prototype
- Build this basic map out until I meet the requirements.
The Plan B
Deploy a 'personal' instance of Ushahidi if Plan A takes to long or is simply beyond my skill.
I plan on regular updates to document my progress and to ask for help. If you are reading this, and are interested in contributing some skill, time, or simply advice, please let me know by email or twitter. I can't pay you, but I will buy you coffee, maybe lunch and, if you build something, will defiantly give you credit on the map.