Skip to main content
Log in

Applicability of open-source web mapping libraries for building massive Web GIS clients

  • Original Article
  • Published:
Journal of Geographical Systems Aims and scope Submit manuscript

Abstract

The increasing capabilities of web browsers and the growing spread of JavaScript have an impact on the development of web-based GIS systems. While in traditional Web GIS applications the client-side component is only responsible for creating representation models, modern geographically enabled JavaScript libraries have extended capabilities, making them capable of doing extensive tasks, like complex geographical analyses. This paper identifies the most capable libraries for being the basis of a Web GIS client (Cesium, Leaflet, NASA Web World Wind, OpenLayers 2, and OpenLayers 3) and compares them. The libraries are compared by their GIS feature coverage and some quality metrics. OpenLayers 3 is identified for being the most capable library by supporting nearly 60% of the examined GIS features, its small size, and moderate learning curve. For comparing the learning curves of JavaScript libraries, a new metric named Approximate Learning Curve for JavaScript is proposed, which is based on other software metrics.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2

Similar content being viewed by others

Notes

  1. Of course, the items can be restructured or modified based on other aspects until they give an overall picture of a functional GIS.

  2. Whether WebGL Earth is more of a façade due to its dependence on Cesium than an adapter is debatable.

References

  • Adobe (2016) Adobe®roadmap for the Flash®runtimes. Technical report

  • Agrawal S, Gupta RD (2014) Development and comparison of open source based Web GIS frameworks on WAMP and Apache Tomcat Web Servers. Int Arch Photogramm Remote Sens Spat Inf Sci XL(4):1–5

    Article  Google Scholar 

  • Albrecht J (1998) Universal analytical GIS operations—a task-oriented systematization of data structure-independent GIS functionality. Transatl Perspect, Geogr Inf Res, 577–591

  • Amato M, Ring K (2015) Getting Serious with JavaScript. In: Cozzi P (ed) WebGL insights. CRC Press, Boca Raton, pp 49–70 chapter 4

    Chapter  Google Scholar 

  • Bostock M, Ogievetsky V, Heer J (2011) D\(^3\): data-driven documents. IEEE Trans Vis Comput Graph 17(12):2301–2309

    Article  Google Scholar 

  • Brackin R, Gonçalves P (2014) OGC OWS context conceptual model version 1.0.0. Technical Report 12-080r2, Open Geospatial Consortium

  • Doyle A (2000) OpenGIS Web Map server interface implementation specification revision 1.0.0. Technical Report 00-028, Open Geospatial Consortium

  • Eriksson O, Rydkvist E (2015) An in-depth analysis of dynamically rendered vector-based maps with WebGL using Mapbox GL JS. Master’s thesis, Linköpings Universitet, Linköping, Sweden

  • Esri (2015). ArcGIS 10.3.1 for server functionality matrix. Technical report

  • Farkas G (2015) Comparison of Web Mapping Libraries for Building WebGIS Clients. Master’s thesis, University of Pécs, Pécs, Hungary

  • Fenton NE, Neil M (1999) Software metrics: successes, failures and new directions. J Syst Softw 47(2–3):149–157

    Article  Google Scholar 

  • Fowler M, Beck K, Brant J, Opdyke W, Roberts D (1999) Refactoring: improving the design of existing code. Addison-Wesley Professional

  • Haklay M, Singleton A, Parker C (2008) Web Mapping 2.0: the neogeography of the GeoWeb. Geogr Compass 2(6):2011–2039

    Article  Google Scholar 

  • Hamilton EL (2014) Client-side versus server-side geoprocessing. Master’s thesis, University of Wisconsin—Madison, Madison, WI, USA

  • Król K, Szomorowa L (2015) The possibilities of using chosen jQuery JavaScript components in creating interactive maps. Geomat Landmanag Landsc 2:45–54

    Article  Google Scholar 

  • Lindley C (2009) jQuery Cookbook: solutions and examples for jquery developers. O’Reilly Media, Inc, Newton

    Google Scholar 

  • Maguire DJ (1991) An overview and definition of GIS. Geogr Inf Syst Princ Appl 1:9–20

    Google Scholar 

  • Maguire DJ (2008) ArcGIS: general purpose GIS software system. In: Shekhar S, Xiong H (eds) Encyclopedia of GIS. Springer, New York, pp 25–31

    Chapter  Google Scholar 

  • McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng SE–2(4):308–320

    Article  Google Scholar 

  • Meaden GJ, Chi TD (1996) Geographical information systems applications to marine fisheries. Technical report, Food and Agriculture Organization of the United Nations, Rome

  • Nguyen V, Deeds-Rubin S, Tan T, Boehm B (2007) A SLOC counting standard. Technical Report USC-CSSE-2007-737, Center for Systems and Software Engineering

  • Orlik A, Orlikova L (2014) Current trends in formats and coordinate transformations of geospatial data—based on mygeodata converter. Cent Eur J Geosci 6(3):354–362

    Google Scholar 

  • Percivall G (2010) Progress in OGC web services interoperability development. In: Di L, Ramapriyan HK (eds) Standard-based data and information systems for earth observation. Springer, Berlin, pp 37–61

    Chapter  Google Scholar 

  • Poorazizi ME, Hunter AJ (2015) Evaluation of web processing service frameworks. OSGEO J 14:29–42

    Google Scholar 

  • Ramsey P (2007) The state of open source GIS. Technical report, Refractions Research Inc., Suite 300–1207 Douglas Street Victoria, BC, V8W-2E7

  • Revesz P (2008) Constraint databases, spatial. In: Shekhar S, Xiong H (eds) Encyclopedia of GIS. Springer, New York, pp 157–160

    Chapter  Google Scholar 

  • Roth R, Donohue R, Sack C, Wallace T, Buckingham T (2014) A process for keeping pace with evolving web mapping technologies. Cartogr Perspect 78:25–52

    Google Scholar 

  • Shalloway A, Trott JR (2002) Design patterns explained a new perspective on object-oriented design. Addison-Wesley Professional, Boston

    Google Scholar 

  • Steiniger S, Bocher E (2009) An overview on current free and open source desktop GIS developments. Int J Geogr Inf Sci 23:1345–1370

    Article  Google Scholar 

  • Steiniger S, Hunter AJ (2013) The 2012 free and open source GIS software map—a guide to facilitate research, development, and adoption. Comput Environ Urban Syst 39:136–150

    Article  Google Scholar 

  • Thrall SE, Thrall GI (1999) Desktop GIS software. In: Longley PA, Goodchild MF, Maguire DJ, Rhind DW (eds) Geographical information systems abridged. Wiley, Hoboken, pp 331–345

    Google Scholar 

  • Wang ZY, Wu WM (2014) Technique of Javascript code obfuscation based on control flow tansformations. Appl Mech Mater 519–520:391–394

    Google Scholar 

  • Wendlik V, Karut I, Behr F (2011) Tiling concepts and tile indexing in internet mapping APIs. In: Applied geoinformatics for society and environment 2011—geoinformation for a better world, pp 116–121

  • Westervelt J (2004) GRASS roots. In: Proceedings of the FOSS/GRASS users conference, pp 1–10

Download references

Acknowledgements

I would like to thank the numerous anonymous reviewers for their precious time dedicated to the evaluation of this paper, their valuable comments and suggestions, which helped me shape it in its current, enhanced form. I would also like to thank my colleague, András Hervai, for sharing his thoughts on software metrics, which can directly affect user experience.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Gábor Farkas.

Appendices

Appendix 1: JavaScript routine for measuring the exposed functions of a library

figure a

Appendix 2: Detailed support table of the candidate libraries

Category

Cesium

Leaflet

NASA WWW\(^\mathrm{a}\)

OL 2\(^\mathrm{b}\)

OL 3\(^\mathrm{b}\)

Rendering

 Hardware acceleration

1

0

1

0

0.5

 Render geometry

1

1

1

1

1

 Render raster

0

0

0

0

0

 Render image

1

1

1

1

1

 Blend layers

1

0

0

0

0.5

Formats—vector

 ESRI shapefile

0.5

0.5

1

0.5

0.5

 KML

1

0.5

0.5

1

1

 GeoJSON

1

1

1

1

1

 WFS

0

0.5

0

1

1

 Write transaction

0

0.5

0

1

1

Formats—raster

 GeoTiff

0.5

0.5

0.5

0.5

0.5

 Arc/Info ASCII GRID

0

0

0

0

0

 WCS

0

0

0

0

0

Formats—image

 JPEG

1

1

1

1

1

 PNG

1

1

1

1

1

 WMS

1

1

1

1

1

Formats—image—tile service

 WMTS

1

0.5

1

1

1

 TMS

1

1

0

1

0.5

 Slippy map

1

1

1

1

1

 Google maps

0

0.5

0

1

0.5

 ArcGIS REST API

1

0.5

0

1

1

 Bing maps

1

0.5

1

1

1

Database—connection

 PostGIS

0

0

0

0

0

 SpatiaLite

0

0

0

0

0

 MySQL

0

0

0

0

0

Database—functionality

 Using DBMS

0

0

0

0

0

 Query/filter

0

0.5

0

1

0

 Query language

0

0

0

0

0

Data—pre-process

 On-the-fly transformation

1

0

1

0

0.5

 Read attribute data

1

1

0

1

1

 Z, and M coordinates

1

0

0.5

0

1

 Geometry types

0.5

0.5

0.5

0.5

0.5

 Spatial indexing

0

0

0

0

1

 Geometry validation

0

0

0

0

0

 Geometry simplification

0.5

0.5

0

0

1

 Attribute table

0

0

0

0

0

Data—conversion

 Interpolate

0

0

0

0

0

 Raster to vector

0

0

0

0

0

 Vector to raster

0

0

0

0

0

Data—manipulation

 Update attribute data

1

1

0

1

1

 Update geometry

0

1

0

1

1

 Field calculator

0

0

0

0

0

 Add/remove layer

1

1

1

1

1

 Change layer order

1

1

0.5

1

1

 Typed layers

0

0

0

1

0

Data—analysis

 Basic geoprocessing

0.5

0.5

0.5

0.5

0.5

 Topological analysis

0.5

0.5

0.5

0.5

0.5

 Modify image

0

0

0

0

0.5

 Modify raster

0

0

0

0

0

 Raster algebra

0

0

0

0

0

 Classification

0

0

0

0

0

 Convolution\(^\mathrm{c}\)

0

0

0

0

0

 Write WPS request

0

0.5

0

1

0.5

Projection

 Transform vector

1

1

1

1

1

 Warp raster

1

0

1

0

1

 Well-known projections\(^\mathrm{d}\)

0.5

0.5

0.5

0.5

0.5

 Custom projections

0

0.5

0.5

1

1

Interaction

 Draw features

0

0.5

0

1

1

 Modify features

0

0.5

0

1

1

 Snap points

0

0.5

0

1

1

 Modify view\(^\mathrm{e}\)

1

0.5

1

0.5

1

 Select features

1

0.5

0.5

1

1

 Query

0

0.5

0.5

0.5

0.5

 Measure

0

0.5

0

1

0

 Change time

1

0.5

0

0.5

0

 Mouse coordinates

0

0.5

1

1

1

Representation—styling

 Style vector

1

1

1

1

1

 Style raster

0

0

0

0

0.5

 Thematic maps\(^\mathrm{f}\)

1

1

1

1

1

Representation—Carto. e.\(^\mathrm{g}\)

 Scale bar

0

1

0

1

1

 North arrow

0

0

1

0

0

 Legend

0

0

0

0

0

 Graticule

0

0.5

0

1

1

 Text box

0

0

0

0

0

 Overview map

0

0.5

0

1

0.5

  1. \(^\mathrm{a}\) Web World Wind
  2. \(^\mathrm{b}\) OpenLayers
  3. \(^\mathrm{c}\) Also known as moving window (GRASS) and focal statistics (ArcGIS)
  4. \(^\mathrm{d}\) Projections in the EPSG database
  5. \(^\mathrm{e}\) Ability to pan, zoom, and rotate the map
  6. \(^\mathrm{f}\) Ability to create choropleth and proportional symbol maps from vector data
  7. \(^\mathrm{g}\) Cartographic elements

Appendix 3: Example JavaScript function

figure b

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Farkas, G. Applicability of open-source web mapping libraries for building massive Web GIS clients. J Geogr Syst 19, 273–295 (2017). https://doi.org/10.1007/s10109-017-0248-z

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10109-017-0248-z

Keywords

JEL Classification

Navigation