Our Work: Cache Management System

Intermountain Gas typically updated their maps daily. However, because of the time needed to rebuild the cached maps in their geographic information system (GIS), users might not see these updates until weeks later. Intermountain Gas needed a better, more efficient way to build and manage caches.

“The system that RDI developed allows us to easily manage map tiles and ensure our web maps are consistently up to date. For Intermountain Gas, this functionality has become an indispensable addition to our enterprise GIS environment.” —Lance Elroy, GIS Manager, Intermountain Gas Company

The Solution

Resource Data developed the web-based Cache Management System, which can be configured to work with multiple ArcSDE instances and multiple environments.

A key feature of the system is “partial caching.” When map edits are made, the system identifies which parts have been changed and re-caches only those areas—instead of the entire map. With partial caching, updated maps are available within hours instead of weeks.

We also built a graphical user interface, enabling Intermountain Gas to manage the caching process. This interface reports real-time information on caches, including estimated completion time and pending updates in the queue.

The system also self-recovers: if the server loses power, when it comes back up, the Cache Management System picks up where it left off.

Our Approach

We developed the Cache Management System in two phases: the underlying system (which could be run from a command line interface), followed by the web-based user interface.

The underlying portion of the Cache Management System includes a database that stores the information used by the system, a queue engine, and Python scripts for the GIS processes. The system

  • Monitors changes made to a configurable list of map features
  • Intersects the changed features with the cached maps to determine which portions of the cache needed to updated
  • Adds the portions needing to be re-cached to the system’s queue
  • Generates the new cache