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.
Similar content being viewed by others
Notes
Of course, the items can be restructured or modified based on other aspects until they give an overall picture of a functional GIS.
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
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
Bostock M, Ogievetsky V, Heer J (2011) D\(^3\): data-driven documents. IEEE Trans Vis Comput Graph 17(12):2301–2309
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
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
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
Lindley C (2009) jQuery Cookbook: solutions and examples for jquery developers. O’Reilly Media, Inc, Newton
Maguire DJ (1991) An overview and definition of GIS. Geogr Inf Syst Princ Appl 1:9–20
Maguire DJ (2008) ArcGIS: general purpose GIS software system. In: Shekhar S, Xiong H (eds) Encyclopedia of GIS. Springer, New York, pp 25–31
McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng SE–2(4):308–320
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
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
Poorazizi ME, Hunter AJ (2015) Evaluation of web processing service frameworks. OSGEO J 14:29–42
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
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
Shalloway A, Trott JR (2002) Design patterns explained a new perspective on object-oriented design. Addison-Wesley Professional, Boston
Steiniger S, Bocher E (2009) An overview on current free and open source desktop GIS developments. Int J Geogr Inf Sci 23:1345–1370
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
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
Wang ZY, Wu WM (2014) Technique of Javascript code obfuscation based on control flow tansformations. Appl Mech Mater 519–520:391–394
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
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
Corresponding author
Appendices
Appendix 1: JavaScript routine for measuring the exposed functions of a library
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 |
Appendix 3: Example JavaScript function
Rights and permissions
About this article
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
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10109-017-0248-z
Keywords
- Approximate Learning Curve for Javascript
- Client-side library
- Comparison
- Massive client
- Software metrics
- Web GIS