Skip to content
DEQ Environmental Data Viewer
JavaScript HTML C# Python CSS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Build Status


DEQ Environmental Data Viewer

Generic application for searching, viewing and downloading DEQ GIS data and related tables.


Scope of Work

Original Mockup

Config Spreadsheet

Staging Config Spreadsheet

Master Plan

Stage -

Production -


Unit tests are run via intern.

Unit tests URL after running grunt default

Nightly Script

Runs nightly on test and prod servers.

Builds DEQEnviro.json which the web app uses to configure itself. Part of building this json file is getting all of the map service layer indices so it needs to be rerun manually after adding, removing or reordering any of the map service layers.

Make sure that you have a latest version of pip before pip install -r requirements.txt.

This script requires settings/oauth2key.json. Check out the oauth2 gspread docs to learn how to generate it. Make sure to grant read permission to the email address in client_email to the config spreadsheets.

Updates related data in SGID10. Reads sources from the config spreadsheet.

Data Schema Changes

Most updates are taken care of via the config spreadsheet and updating the schema of data.

Adding a new field

  1. Add the field to the "Identify Attributes" column in the config spreadsheet. This will make it show up in the identify pane in the app.
  2. Add the field to the data in SGID10 (prod & staging).
  3. Add the field to the data in staging/deqquerylayers.gdb.
  4. Delete the associated dataset in staging/sgid_stage.gdb if it's there.

Adding a new query layer

  1. Add the new row in the config spreadsheet
  2. Run forklift pallet.
  3. Add new layer to maps/MapService.mxd or maps/Secure.mxd and republish.
  4. Manually run to get the layer number from the map service of the newly added layer.

Deploy Steps

  1. Set up and install ArcGisServerPermissionsProxy.
    • Import RavenDB and web.config from previous server.
  2. Set up users & roles in ArcGIS Server
    • Create new roles called deq_water & deq_admin.
    • Create users with the same names as the roles. Use the password from the Permission Proxy web.config.
  3. Publish maps/MapService.mxd and maps/Secure.mxd to a DEQEnviro folder in ArcGIS Server.
    • Secure should be locked down to just the deq_admin and deq_water roles.
  4. Publish ExportWebMap service to the DEQEnviro folder using maps/PrintTemplates/Portrait.mxd as the default template.
    • Make sure that the server can resolve the domain name that the app is hosted on (e.g. If it can't you will need to edit the hosts file. This is required for the ExportWebMap service.
    • synchronous
  5. Run and publish scripts/download/DeqEnviro.pyt/download as Toolbox/download in the same DEQEnviro folder.
    • pip install xlsxwriter on the hosting servier fom the python installation that ArcGIS Server uses (x64).
    • pip install xlsxwriter on the publishing server for the python installation that ArcGIS Desktop uses (x32).
    • You can use these inputs as a test:
  6. Add repo to forklift.
    1. Copy scripts/nightly/databases & scripts/nightly/settings/ from old server.
    2. Download and install the latest oracle instant client.
    3. From within the forklift environment: pip install -r .\scripts\nightly\requirements.txt
  7. Build and deploy the application by running grunt build-prod && grunt deploy-prod.
    • You will need to run scripts/nightly/ to generate DEQEnviro.json before you can load the application for the first time.
You can’t perform that action at this time.