On the last Mendeley hackday we had an external guest (and Mendeley user): Nicolas Manaud from the project Where on Mars?.
ESA (European Space Agency) will send a rover to Mars. On the webpage “Where on Mars?” it is possible to see areas where the rover might land and visualise the constraints: elevation, latitude (to maximise the hours of the Sun), areas with geological interest, etc.
Where on Mars? website uses CartoDB extensively which has been a very good discovery for me! (and I plan to use it for some other projects soon). I’ve done or worked on a few projects with maps like Benches iOS app (based on OpenStreetMap , find Mendeley users web app, or the very simple “find the middle point” map. I’ve used Google Maps API to add markers and work with them and lastly I’ve been using OpenStreetMap (big fan!) and Leaflet to do similar things.
I know how difficult is to represent data on maps. Leaflet is a good piece of software and, very importantly, it’s easy to plug it with any other system and host yourself. But Leaflet has some limitations (adding too many points in a map will make it too slow, but clustering points sometimes is not what one would like to have).
Before CartoDB I used tools like PostgreSQL, Leaflet and Flask (a Python microframework) and I think “what to do” for someone who hasn’t done it before from getting a CSV file with positions and data until having a map with these positions and data there and a basic interactive system could take hours (of work, not of CPU time). Very likely I would get the CSV file, put into PostgresSQL, create a small API to get data from PostgreSQL, show it using Leaflet. Then add some user interface: what happens when a user clicks a point, how to change the information dialogue, etc.
Using CartoDB is possible to do all all the basic operations and much more using only the mouse! I uploaded a 150 MB CSV file which converted automatically into a database table. I only had to indicate the latitude and longitude columns and then I could very easily setup the representation of my data. And it uses OpenStreetMap.
CartoDB even has a Python module that allows editing and querying of data (even with the a browser or with a Python module). Data changing over time (like positions) is easy to represent and it’s possible to embed the map in other places, etc.
Also, CartoDB allows users to change the basemaps so “Where on Mars?” project can use their basemaps for Mars instead of the Earth maps. And it’s easy to publish maps and datasets, embed them on other websites, etc.
I had a very good hackday and one of the reasons was CartoDB and how easy was to work with it. Another reason was Nicolas Manaud who had some ideas about what to do and knew CartoDB so he did part of the CartoDB job and I did some Python scripts using the Mendeley API.
After the hackday I used a little bit CartoDB and had good fun as well.
It’s important to note that obviously CartoDB charges per data size and might change the terms and conditions at any moment, etc. An important advantage of Leaflet+PostgreSQL+Flask (or some other application server) is that could be hosted easily in any place and then we would have all the stack with open source tools (I really like it). But for quick hacks or some visualizations if we don’t mind using a third party service CartoDB really rocks.