We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Getting The Best Performance For GeoJSON Map Visualizations: PostGIS Vs CouchDB Backend

Formal Metadata

Title
Getting The Best Performance For GeoJSON Map Visualizations: PostGIS Vs CouchDB Backend
Title of Series
Number of Parts
95
Author
License
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language
Production PlaceNottingham

Content Metadata

Subject Area
Genre
Abstract
In order to deliver rich user experience to user, features (attribute data and geometries) have to be sent to the client for mouse-over visual effects, synchronization between charts, tables and maps, and on-the-fly classifications. GeoJSON is one of the most popular encodings for the transfer of features for client-side map visualization. The performance of client visualizations depends on a number of factors: message size, client memory allocation, bandwidth, and the speed of the database back-end amongst the main ones. Large GeoJSON-encoded datasets can substantially slow down loading and stylization times, and also crash the browser when too many geometries are requested. A combination of techniques can be used to reduce the size of the data (polygon generalization, compression, etc). The choice of an open-source DBMS for geo-spatial applications used to be easy: PostGIS is powerful, well-supported, robust and fast RDBMS ? On the other hand, unstructured data, such as (Geo)JSON, may be better served by document-oriented DBMS such as Apache CouchDB. The performance of PostGIS and CouchDB in producing GeoJSON polygons with different combination of factors that are known to affect performance was tested: compression of GeoJSON (zip) to reduce transmission times, different levels of geometry generalization (reducing the number of vertices in transferred geometries), precision reduction (the reduction of numbers of decimal digits encoding coordinates), and the use of a topological JSON encoding of geometries (TopoJSON) to avoid redundancy of edges transferred. We present the results of a benchmark exercise testing the performance of an OpenLayers interface backed by a persistence layer implemented using PostGIS and CouchD. Test data were collected using an automated test application based on Selenium, which allowed to gather repeated observations for every combination of factors and build statistical models of performance. These statistical models help to pick the best combination of techniques and DBMS, and to gauge the relative contribution of every technique to the overall performance.