Architectural Design Pattern for Web Mapping with an Open Source Implementation

One of the advantages of travelling as much as I do, is that I have a high probability of meeting interesting people who are doing very innovative things.  I’m currently in Australia to attend next week’s GITA conference in Sydney, and on my way here I ran into Sam Majid of Ennoble Consultancy in Melbourne.  Sam, whom I have known for several years, has implemented a classic architectural design pattern for web-based mapping that can provide scalable, high performance mapping on low cost hardware. 

Architectural Design Pattern for Web Mapping

The design pattern is a three tier architecture, comprised of a client, typically desktop, Geospatial_web_architecture_design_
tablet or hendheld running a web browser, a middle tier where pre-rendered map tiles are cached, and a data server, where geospatial and other data is stored.  The reason that this is such a successful architecture for low cost, high performance computing is that navigation operations, panning and zooming, only require loading and unloading cache tiles and do not require accessing the data server. Since a pan or zoom operation can involve typically a thousand features, loading a few tiles is much more efficient from a CPU and I/O perspective and dramatically reduces the load on the data server.  The other key to this architecture is that the user only updates the data store, never the cache, so there is only one point of truth.  The cache is refreshed by a background process running in the middle tier or data tier.

Open Source Implementation

Sam has developed his implementation using open source geospatial components, including Open Layers, FDO, and MapGuide Open Source.  Open Layers provides a Javascript-based client-side application environment that will run without a plug-in in any browser supporting Javascript.  Since he chose to use the FDO API, Sam’s application can directly access for both read and update widely used geospatial datastores including shape, Oracle Spatial, ArcSDE (GeoDatabase), MySQL, PostGIS, KML, and SQL Server 2008 Spatial.  Sam showed me an application using this architecture, where the client was in Kuala Lumpur, the cache was in Australia, and the data server was in California.  Performance was impressive, definitely worth taking a look at.

Geoff Zeiss

Geoff Zeiss

Geoff Zeiss has more than 20 years experience in the geospatial software industry and 15 years experience developing enterprise geospatial solutions for the utilities, communications, and public works industries. His particular interests include the convergence of BIM, CAD, geospatial, and 3D. In recognition of his efforts to evangelize geospatial in vertical industries such as utilities and construction, Geoff received the Geospatial Ambassador Award at Geospatial World Forum 2014. Currently Geoff is Principal at Between the Poles, a thought leadership consulting firm. From 2001 to 2012 Geoff was Director of Utility Industry Program at Autodesk Inc, where he was responsible for thought leadership for the utility industry program. From 1999 to 2001 he was Director of Enterprise Software Development at Autodesk. He received one of ten annual global technology awards in 2004 from Oracle Corporation for technical innovation and leadership in the use of Oracle. Prior to Autodesk Geoff was Director of Product Development at VISION* Solutions. VISION* Solutions is credited with pioneering relational spatial data management, CAD/GIS integration, and long transactions (data versioning) in the utility, communications, and public works industries. Geoff is a frequent speaker at geospatial and utility events around the world including Geospatial World Forum, Where 2.0, MundoGeo Connect (Brazil), Middle East Spatial Geospatial Forum, India Geospatial Forum, Location Intelligence, Asia Geospatial Forum, and GITA events in US, Japan and Australia. Geoff received Speaker Excellence Awards at GITA 2007-2009.

View article by Geoff Zeiss

Be the first to comment

Leave a Reply

Your email address will not be published.


*