What’s new with JavaScript and geospatial – wrapup from the js.geo event
My brain is overflowing at the end of the two days, and I have lots of things I want to look into more. This post is mainly a list of items I found interesting with some links. Apologies in advance to anyone / anything I missed out! Without further ado …
D3
D3 is a very cool general purpose JavaScript interactive visualization library, developed by Mike Bostock, that includes some good (mainly vector) geospatial capabilities. This was probably the hottest topic at the conference, lots of people talking about it and incorporating it into demos. Here’s a blog post from CartoDB with some examples. D3 supports a new format calledTopoJSON, which is similar to geoJSON, but supports topology to eliminate redundancy. For polygon data this can reduce data volumes by around 80% (compared to regular geoJSON). It also lends itself to robust simplification of polygons.
LEAFLET
Several presentations, including this one by Aaron Ogle, confirmed the impression I had that the Leaflet JavaScript mapping API has great momentum. Matt Priour in his presentation on OpenLayers acknowledged as much with his pitch that OpenLayers was “almost as convenient as Leaflet and twice as powerful”. One of the key selling points of Leaflet is its simplicity. Matt said that in discussions about OpenLayers 3 there were proponents of just moving to adopt Leaflet instead of doing a major redevelopment of OpenLayers, but it was decided for various reasons that OpenLayers 3 was needed – you can see further discussion on its aims here. It’s important to be aware that OpenLayers 3 will not be compatible with OpenLayers 2, it’s going to be a fresh start. We are looking seriously at using Leaflet for a future version of our Ubisense myWorld application.
CARTODB
I continue to be very impressed with CartoDB. They first launched the product at FOSS4G in Denver in 2011, and released Version 2 in November 2012, with lots of cool new features. These include a new system called Torque which does beautiful spatio-temporal visualizations, and new density maps using either hexagons or squares. I definitely plan to work on including CartoDB in the solutions that we’re offering. Check out Andrew Hill’s presentation.
MAPSTRACTION
Andrew Turner gave a lightning talk about Mapstraction, a library that provides an abstraction layer for the major mapping APIs. Last time I looked at this I had the impression it wasn’t being very actively developed, but it seems I was misinformed! This is something I want to investigate further too. There’s a nice sandbox demo site here.
MAPBOX
The folks at MapBox also continue to do a whole range of interesting things, from their TileMill map rendering product to a range of map sharing tools at Mapbox.com to their iPad application. A little while ago I did a simple demo with some utility data using various bits of MapBox infrastructure, borrowing heavily from this example (you’ll probably need a browser other than Internet Explorer for these to work). As well as giving a workshop, Will White talked about their server side architecture which uses node.js (JavaScript on the server).
UBISENSE MYWORLD
I did a short presentation and demo on what we’re up to with Ubisense myWorld, building web applications for utilities and telecoms using Google Maps and various open source products. I’ll do a longer post soon on what we’ve been up to recently, but we got some good interest in what we’ve done with Google Street View, including the overlay of linear objects like gas pipes, and also in work we did to help a customer with recovery efforts after Hurricane Sandy. Thanks to Steve Citron-Pousty for his summary:
WEBGL
Brendan Kenny from Google gave an interesting talk on WebGL, which brings high performance 3D (and 2D) graphics to (most) web browsers (no prizes for guessing which one is the main exception!). He did a really impressive demo that involved displaying very large numbers of points in the browser with dynamic charts based on the current map window and dynamic filtering tools.
MISCELLANEOUS OTHER LINKS
In no particular order …
npm is “Node Packaged Modules” which was highly recommended by Will White for managing either server side or client side JavaScript Code.
openweathermap.org is a cool resource for free and open weather data.
Backbone.js and Marionette.js, which builds on top of Backbone, were highly recommended by Dave Bouwman as frameworks for building complex JavaScript applications. I definitely plan to look more at these for what we’re doing. Ember.js was also mentioned as an alternative.
Max Ogden’s geoJSON utilities got several mentions, a lightweight JavaScript library that supports some core spatial operations like point in polygon, distance and more on geoJSON data.
The Google Visualization API looks like a nice library for visualizing data tables and charts.
PhantomJS is a headless webkit browser that is useful for various things including browser screen capture and testing. This blog post talks about using it to implement a web map printing tool. Alfred Sawatzky talked about how he used this to capture periodic screen shots of his company iFactor’s outage maps during the Hurricane Sandy recovery.
Rickshaw.js is a JavaScript toolkit for creating interactive time series graphs.
The ESRI CityEngine Web Viewer is a cool application for viewing 3D city models in a browser without any plugins. You can see various examples here, press the play button at the bottom left for an automated tour of a model. This one in Philadelphia is impressive.
Simtable are doing interesting things with projecting animated data onto 3D models.
MongoDB is a scalable open source NoSQL database that provides geospatial support – up until now just for points, but about to have support for any geoJSON geometry and operations like point in polygon etc. Steve Citron-Pousty ran a workshop on this which I would have liked to have gone to, but I went to the MapBox / CartoDB one instead.
So, lots of things to research and absorb!!
Update: Tyler Burgett also shared some excellent detailed notes, and Steve C-P has posted agood summary too.