I'm looking at displaying a frequently updated (potentially thousands of points per second) global dataset of locations on a tiled slippy map. Functionally I'm just going to be putting a marker down to show the presence of an event as opposed to necessarily providing an indicator as to the number of events a given marker represents.

This level of write throughput basically indicates using a partitioned datastore (Cassandra or initially Azure Table) where one partition corresponds to a single quadtile on the standard web mapping projection. Given the number of points I believe I'll need to load the data by tile, presumptively using https://github.com/glenrobertson/leaflet-tilelayer-geojson/ on a Leaflet map, while to support lower zooms I'll have to coarsen the resolution of the points to reduce the total number.

I'm only going to be able to pull the entire tile represented by a partition because the ability to do a range query (normally used for retrieving subtiles) is instead used for time ranges. This means in order to support ~Z1 to ~Z15 I would need either one set of data per zoom level, or to have 'native' data available for a smaller number of zoom levels with some combination of under zooming (is there a term for that?) and over zooming.

So to achieve this my thought was to have data available in partition per tile at Z3 ~10 mile resolution (Z1-Z5), Z8 ~500 meter resolution (Z6-Z10), Z13 ~20 meter resolution (Z11-Z15). Then add this data as 3 data layers, doing underzoom on the server side (ie at Z6 loading 16 Z8 tiles worth of data on the server side), and mark MaxNativeZoom to get 2 levels of client size over zoom.

Is this a reasonable approach to displaying this data, or is there a likely better approach?

For example, would it be better to just use three layers with MaxNativeZoom for each set to the maximum intended server side underzoom (downside is extra data on scrolling, upside no loads for the same data)? Is another tradeoff on amount of data vs zoom level more sensible? Is there a good way (and reason) to expose this as one layer as in this question? Would Polymaps work better since it's dynamic data (despite the project not getting any updates in 2 years)? etc.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.