One of the biggest announcements in 2015 was Google’s decision to end support for their Google Maps Engine and Google Earth Enterprise Client solutions. These solutions allow users to create their own custom maps and globes on private networks, or replace the default content served by Google with content from your own organization. You can read more about Google’s decision on their blog here and here, and even read an update to Terms of Service last week for Google Earth Pro. So naturally many of us at Boundless have fielded questions about how OpenGeo Suite could be used to create a replacement or improvement to GME and GEE. My colleague Sean Brady inked a blog about OpenGeo Suite-based alternatives back in April, so with the beginning of the New Year I thought I would revisit the topic and delve a bit deeper.
At the most basic level, it’s important to understand Boundless has options for recreating and improving the capabilities of Google Earth Enterprise Fusion Server (henceforth called Fusion Server), Google Earth Enterprise Client (henceforth called Google Earth or GEE) and Google Maps Engine (henceforth called Google Maps or GME) clients. The following paragraphs will illustrate how to use OpenGeo Suite to replace all components.
The good news is the management of imagery, terrain and vector data can already be done using existing capabilities in GeoServer, the foundational map and feature server in OpenGeo Suite. The even better news is the ability to convert those dynamic services into cached tiled services also already exists through the use of GeoWebCache, a Java-based web application for caching tiles, also included with OpenGeo Suite. The best news is both of these capabilities are open source and leverage OGC formats for communication, which means you are free to choose from any number of clients for the visualization and analysis of data in your organization without locking into a proprietary option.
Using GeoServer to Publish Content
GeoServer is an open-source application server for publishing spatial data as web services. Designed for interoperability, it publishes data from any major spatial data source using open standards set forth by the OGC. These include Web Feature Service (WFS), Web Map Service (WMS), and Web Coverage Service (WCS). GeoServer is free software and is licensed under the GNU General Public License.
GeoServer’s wheelhouse is ingesting and converting raster and vector content so that it could be published out as web services to a 2D or 3D client. Since it has the flexibility and versatility common to open source software, GeoServer ships with native support for many different database, raster and vector formats:
- Supported Database Formats
- Oracle Spatial
- PostgreSQL / PostGIS
- Esri ArcSDE
- IBM DB2
- Microsoft SQL Server
- Supported Vector Formats
- Esri Shapefile
- MapInfo MIF/MID
- Supported Raster Formats
- ERDAS Imagine
Additionally, GeoServer leverages the ImageIO-Ext GDAL libraries to read additional raster and data formats. So with the help of the GDAL libraries, it’s hard to find a format of data that GeoServer can’t support. You can be confident that GeoServer will support any investments your organization has already made for imagery and vector data. Oh yeah, and GeoServer natively supports the publishing and converting of KML files, so you don’t have to worry about losing all of your existing KML files. And like most geospatial software, GeoServer gives you the ability to publish one or more layers at a time. This gives you the option to publish a single layer on its own, or you can use Layer Groups to publish several layers of raster or vector datasets together as a single composite service. Once published, GeoServer exposes data as OGC web services or in a myriad of other formats including KML, GML, Shapefile, GeoRSS, GeoJSON, CSV, Excel, PDF, SVG, JPEG, GIF, PNG, and more.
Creating Tile Cache with GeoWebCache
Ever wonder why Google Maps or Apple Maps performs so quickly in your web browser and on your mobile phone? Those maps are tile-cached maps. Tile caching essentially pre-renders every map request across the globe, and at all zoom levels, so that there is no delay in panning and zooming. You can see an example of cached tiles loading in Google Maps below. Inside OpenGeo Suite GeoWebCache can cache map tiles coming from a variety of sources including GeoServer. Tile cache is then exposed as WMTS, TMS, and Google Maps KML in order to accelerate and optimize data delivery to end clients. So GeoServer, alongside GWC, can provide caching and optimized performance for any local data your organization maintains, effectively replacing the functionality of what the Fusion Server did. GWC is open source as well, licensed under the GNU Lesser General Public License (LGPL).
Much the same as Fusion Server, GWC can be scaled to handle big cache jobs by clustering two or more GWC machines together and dividing large jobs into pieces (we call them seed jobs). However, GWC also gives you some extra flexibility when it comes to creating cache that Fusion Server does not. For instance, you can cache an entire dataset at once, or you can choose to focus caching efforts only at specific geographic areas. So rather than ‘re-cooking’ the entire globe when only a few frames have changed, you can choose the bounding box of the new frames as the area of extent to cache. This drastically reduces the time it takes to update cached web services with updated datasets.
Additional Capabilities to Maximize Your Globes
There are a few additional capabilities offered in OpenGeo Suite that maximize your ability to perform visualization and analysis through OpenGeo Suite. For example, while GeoServer can support publishing elevation/terrain services today, future releases will also support the ability to publish multiple resolutions of terrain data through the same service. This will offer users a ‘best-of’ terrain service in their globes, allowing them to see the most optimal terrain dataset over a given area.
GeoServer also supports a TIME attribute in GetMap requests for layers that are properly configured with a time dimension. This is used to specify a temporal subset for rendering. For example, you might have a single dataset with weather observations collected over time and choose to plot a single day’s worth of observations. The attribute to be used in TIME requests can be set up through the GeoServer web interface by navigating to Layers -> [specific layer] -> Dimensions tab. The format used for specifying a time in the WMS TIME parameter is based on ISO-8601 (times may be specified up to a precision of 1 millisecond). GeoServer will apply the TIME value to all temporally enabled layers in the LAYERS parameter of the GetMap request. Layers without a temporal component will be served normally, allowing clients to include reference information like political boundaries along with temporal data.
GeoServer allows you to process imagery either before or after the images has been ingested into it. For example, you may wish to use GDAL to convert imagery from one format to another before publishing as a web service. Similarly, you may wish to reduce the bit-depth of a raster. These are analytical capabilities one would perform prior to publishing the raster as a web service. However, you are also able to perform some processing after the raster has been published. For instance, you may wish to request a different band combination for a raster. Such analysis can be performed dynamically through the use of style layer descriptors (SLD), which return the resultant image with different styling.
Replacing the Google Maps Client
Replacing the Google Earth Client
Browser-based thin clients are great, but not all users have browsers that support WebGL. Furthermore, some users are working with data whose size exceeds what a browser can render effectively. So if either of these situations sounds like you, then you are probably looking for thick-client solution (read: installed on desktop computer) for replacing Google Earth.
There are several good proprietary solutions that exist, all which give you the ability to visualize data in 3D and perform a set of geospatial analysis. But in keeping with our open source spirit I am going to focus on three open source solutions I think best meet the need of replacing Google Earth.
For starters there is NASA World Wind. World Wind was developed at NASA Ames Research Center as an SDK (software development kit) that developers can use to build their own 3D client applications. World Wind has many features, and supports many different file types. You can have a look at the examples on the World Wind Demos page, including the KML viewer application in the screenshot below.
Next on the list is osgEarth. Like World Wind, osgEarth is a C++ geospatial SDK and terrain engine that can be used by developers to create 3D clients. As its name implies, osgEarth is build on the openscenegraph 3D graphics framework. You can get a look at the types of clients you can create with the osgEarth SDK by visiting their gallery.
The last project worth mentioning is Marble, incubated within OSGeo. Unlike World Wind and osgEarth, Marble is a ready-to-use solution, not an SDK (although it does have an SDK so you can extend it). It has the same look and feel as Google Earth, comes pre-loaded with datasets, and is ready to use the moment it is installed. Marble is built on the Qt framework, a cross-platform application framework, so it is supported on Linux, Mac and Windows (QGIS is built on this same framework). Marble is licensed as GNU Lesser General Public License (LGPL).
Putting it all Together
While at Boundless we have our opinions about best ways forward to accomplish or exceed what you may have previously created with Google, what’s most important for you to understand is there are a variety of paths to accomplish your goals and there are undoubtedly additional capabilities out there for you to use. Each organization has unique challenges that will make the integration of one of these technologies better suited than the others. We just want to point out that open source options do exist. Open Layers and Cesium make a great combo for thin-client 3D rendering. QGIS is great thick-client for rendering maps in 2D, and World Wind, osgEarth, and Marble are all great choices for rendering 3D globes.
But regardless of the client you use to visualize and analyze your data, know that the capability for creating cached basemaps and globes already exists through the use of GeoServer and GeoWebCache. The beauty of open source and open standards is you can switch your client at any time without having to change the format of your cached basemaps or locking into a single vendor while maintaining maximum interoperability with other organizations and applications. So be sure to contact us if you would like more information about how Boundless can help migrate your organization to an open source replacement for the Google Enterprise architecture.