How We Build Internal Apps

Posted on 22 Aug 2013 by David Warren

While the most visible projects we work on are visitor-facing, our team also provides design and development support for applications that target our more technical internal users. The Esri server suite (ArcGIS Server and ArcSDE) is a critical component of these applications, as most National Park Service employees use ArcGIS Desktop to create and maintain their GIS data. In this post, I’ll explain how our internal map portal, InsideMaps, leverages ArcGIS Server to allow users to quickly visualize and edit their GIS data in a targeted, usable, and accessible web environment.

The new version of InsideMaps, v2, is under active development, and two launch partners are currently utilizing it: the Division of Fire and Aviation Management and Cape Hatteras National Seashore.

The Anatomy

InsideMaps v2 is built, first and foremost, on top of ArcGIS Server map and feature services. It does, however, use the NPMap Library internally, so it also includes full support for a number of other layer types, including, but not limited to: CartoDB, GeoJSON, KML, and MapBox Hosting.

All InsideMaps applications have the same look-and-feel: The black NPS bar with the application name at the top and the legend and modules to the left-side of the screen. These applications can be built using any four of the base APIs that are supported by the NPMap library: Bing, Google, Leaflet, or Modest Maps. Because of this, it is possible to bring in base map services from a large number of sources, including Bing, Esri, Google, MapBox Hosting, MapQuest, and any other provider that uses either the Tile Map Service or XYZ format.

Although the NPMap library includes a number of modules and tools, InsideMaps v2 overrides most of these with interfaces built specifically for use by a more technical audience. These tools include advanced functionality like uploading Shapefiles and GPX files (coming soon), printing via templates, advanced query/reporting functionality, and edit forms that include full support for ArcGIS Server aliases, default values, field types/constraints, domains, subtypes, and relationships. The support for relationships even includes the ability to access feature classes and tables that are more than one “hop” away.

In addition, InsideMaps v2 supports bringing “live” data in from external systems like the Facility Management Software System, NPS Focus, and the NPS Data Store. This integration of services is where InsideMaps really shines.

An Example

An example.

In the data panel in the screen shot above, you can see a legend displaying two different ArcGIS Server services published and maintained by Cape Hatteras National Seashore. “Access Line” is a map service that displays the current beach access status of roads at the park. “CAHA Birds” is a feature service, running on top of an ArcSDE geodatabase, that displays bird data created by wildlife biologists and technicians working in the field. The InsideMaps application was built to both simplify the workflow for getting data into the system and make interacting with the data easier. This simplification is necessary for two reasons: 1) Most wildlife biologists/technicians don’t have access to and aren’t familiar with using ArcGIS Desktop, and 2) the ArcSDE geodatabase is highly-relational, and therefore unintuitive and difficult for non-technical employees to use.

By publishing the data as a feature service using ArcGIS Server 10.1, the InsideMaps app is able to wrap the service with an easy-to-use interface and allow users to insert, update, and delete spatial and tabular data. Simplified forms help users navigate the relationships - some of which are four “hops” away from a feature class.

About Those Forms

InsideMaps v2 is built using ExtJS 4. ExtJS is an app framework that makes it possible to quickly develop high-performing, usable, and accessible desktop-class applications for the web. The forms you see below allow the user to easily traverse the hierarchy of the database schema. They also, as mentioned above, support all of the features of an ArcGIS geodatabase, including aliases, default values, field types/constraints, domains, and subtypes.

When we start work on a new InsideMaps app, we prefer to simplify the database schema as much as possible up front, as this enhances the user experience and makes everyone’s job easier. In some cases, however, this isn’t an option. In the case of the Cape Hatteras Birds app, the database utilizes the National Park Service’s Natural Resource Database Template. This template is a standard for collecting Natural Resource data, so we didn’t have any flexibility in making changes to the schema. This added quite a bit of complexity to the app development, but we were able to hide some of this complexity by building targeted forms for the various workflows defined and used by the wildlife biologists and technicians working in the field.

Editing Geometries

InsideMaps also includes the ability to insert, update, and delete feature geometries using ArcGIS Server feature services. On the frontend, InsideMaps uses the Google Maps drawing tools, the Leaflet.draw plugin, and some custom JavaScript code to allow users to edit geometries.

This edit functionality works in conjunction with a layer’s edit form to streamline the overall edit process, and all of this works seamlessly behind-the-scenes with ArcGIS Server feature services, so it is fully integrated with Cape Hatteras’ GIS operations. Feature services utilized by InsideMaps can also be brought into ArcGIS Desktop, where they behave like any other layer.

And Finally, Versioning

ArcSDE versioning has proven to be a valuable function for Park Service GIS programs. Both the Cape Hatteras and Wildland Fire geodatabases are maintained by multiple users. In the case of Wildland Fire specifically, park and regional users update spatial data for their area(s) of interest. New data edits are checked by a data manager at the national level and pushed up the default (vetted) version of the geodatabase. Each version that exists in the geodatabase has its own set of services (both map and feature) that the InsideMaps application uses, based on which perspective of the app is being used.


Although the work we do doesn’t always overlap with “traditional” GIS, in the case of our internal apps it is imperative that we provide full support and integration with the Esri suite of tools, as they are the primary tools used by our GIS employees. Because of this, InsideMaps v2 is built with “Class A” support for ArcGIS Server. As we continue to develop v2 out, we will enhance and add new features that increase our integration with ArcGIS Server and make it easy to build simple yet full-featured apps for Park Service employees, contractors, and partners. This is our primary focus for InsideMaps, and we look forward to making the platform a good complement to ArcGIS Server and other Esri server products like ArcGIS Online.