Wednesday, December 1, 2010

Extending the reach of GIS with Google Maps: Ubisense myWorld

Editor’s note: Today we have Peter Batty from Ubisense to talk about how the company is using Google Maps API Premier to make sense of complicated GIS data. This is cross-posted on the Google Enterprise blog.



Large utilities and telcos have very large amounts of geospatial data about their network assets, typically hundreds of tables and millions of records, and complex rules for how these should be displayed on a map. Ubisense myWorld is a Software as a Service (SaaS) product that brings the ease of use and performance of Google Maps to the challenge of presenting these complex network maps in a way which is simple to use. myWorld uses the Google Maps JavaScript API V3 with Google Maps API Premier.

The data for these network maps is stored and maintained in a Geographic Information System (GIS). These systems have been around a lot longer than Google Maps, for 30 years or so, and tend to be powerful but complex to use. We have focused on working with data from GE Smallworld for utility GIS, but can also work with data from ESRI and others. We render the network data from the GIS to raster map tiles to create an image map overlay that is displayed on top of the Google Maps basemap. The advantage of this approach versus using a vector data format is that it is much easier to match the cartographic design of the network maps used in the GIS, and the users expect consistency between the systems.

All features on the map need to be clickable so that users can display information about any of the network items such as cables, poles, transformers, etc. To handle this we just define a click event that queries a server to find items close to that point. We use a system called Arc2Earth Cloud, which stores spatial data in Google App Engine.

One cool feature of our application is its tight integration with Google Street View. You can click on an object on the map, such as a pole or a building, and see a Street View of that object. This gives the user additional information that they can't get from their existing GIS database. We calculate the right bearing for the Street View automatically, and this works surprisingly well, given the potential for mismatches between the Street View and GIS location data. When necessary, the user can adjust and save the view, over-riding the automatic view. We can display markers in the Street View and click on them to display attributes of poles or other characterisitcs - this is a great feature of the V3 API.

The JavaScript API gives us great portability across multiple platforms. Mobile applications are very important in utilities, as access to and update of map data is often done by field workers. Being able to access the same functionality not only in desktop browsers but on smart phones such as the iPhone or Android, or tablets such as the iPad, is a major benefit. Our main application runs really well on the iPad without any change, and we also provide the same functionality but with modified layout on smart phones. We take advantage of the GPS devices in the phones and link to the built-in maps applications for routing.

I've developed geospatial applications on many platforms over the past 20 years, and have been really impressed with how quickly we were able to develop a pretty sophisticated application with Google Maps V3 JavaScript API, while keeping everything very simple for users. We have a lot of ideas for further enhancements, we are just scratching the surface!