Search our website

Connecting clients

Documentation

You can connect to Discover using a variety of desktop and web clients, including QGIS, ArcGIS Pro, AutoCAD, and ArcGIS Online. These instructions generally apply to the WMTS links, but the WMS process is usually similar (if not identical).

If your client asks for authentication info, you can leave that section blank. Discover handles authentication through the unique links sent to each user.

QGIS

QGIS , opens in a new tab is a fully-featured open source desktop GIS application that makes it easy to use Discover services alongside many other data layers.

  1. Go to Layer → Add Layer → Add WMS/WMTS Layer... (opens the Data Source Manager)
  2. Click the New button at the top to add a new connection
  3. Choose a name for the Name field ("UGRC Discover" works great)
  4. Enter your WMTS link into the URL field
  5. Leave everything else as it is and click OK
  6. Click Close on the Data Source Manager
  7. Expand the WMS/WMTS item in the Browser panel to see the Discover server with the name you provided. Expand the server item to browse the layers and add them to your map.

ArcGIS Pro

For ArcGIS Pro, you'll add Discover as a new WMTS server and then browse the services available. Check out Esri's documentation , opens in a new tab for the most up-to-date instructions.

ArcGIS Online

You can add , opens in a new tab individual layers within Discover as items in ArcGIS Online, making them available in both web maps and ArcGIS Pro through your organization's content.

You can also add WMTS layers , opens in a new tab directly to web maps.

Remember! If you want to use licensed links for the high-res imagery in a publicly-available webmap, you need to request a set of locked-down links.

CAD programs

Check out AutoCAD's documentation , opens in a new tab for adding Discover layers via WMS. You may be able to use WMTS as well, but we've not seen good success with it so far due to AutoCAD's implementation of the WMTS protocol.

For other CAD programs, please check the product's documentation for WMS or WMTS support.

Custom web apps

The ArcGIS Maps SDK for JavaScript , opens in a new tab provides a class for interacting with these services, called a WebTileLayer , opens in a new tab . Using this class is as simple as passing in the URL to the WMTS service with the appropriate level, column, and row tokens. For example:

require([
      "esri/Map",
      "esri/views/MapView",
      "esri/layers/WebTileLayer"
    ], function (Map, MapView, WebTileLayer) {
      const map = new Map();

      const layer = new WebTileLayer({
        urlTemplate:
          "https://discover.agrc.utah.gov/login/path/bottle-apple-crater-oberon/tiles/lite_basemap/{level}/{col}/{row}"
      });

      map.add(layer);

      const view = new MapView({
        container: "viewDiv",
        map: map,
        center: [-111.5, 40],
        zoom: 11
      });
    });

There is one caveat to using discover services with WebTileLayer; it does not store metadata about the service. The piece of metadata that will affect developers the most is the cache level information. WebTileLayer's cache levels are based on a suggested set that is common amongst popular tile providers. The suggested set uses 0 through 19. If the base map you are using deviates from these levels (most of our base maps are 0-19 but there are a few exceptions , opens in a new tab ), you will be responsible for setting those values or you will not be given the UI to see the full tile set. As you can see in the sample below it takes a fair amount of work.

require([
      "esri/Map",
      "esri/views/MapView",
      "esri/layers/WebTileLayer",
      "esri/layers/support/LOD",
      "esri/layers/support/TileInfo"
    ], function (Map, MapView, WebTileLayer, LOD, TileInfo) {
      const tileSize = 256;
      const earthCircumference = 40075016.685568;
      const inchesPerMeter = 39.37;
      const initialResolution = earthCircumference / tileSize;

      const dpi = 96;
      const maxLevel = 12;
      const squared = 2;
      const levelsOfDetail = [];

      for (let level = 0; level <= maxLevel; level++) {
        const resolution = initialResolution / Math.pow(squared, level);
        const scale = resolution * dpi * inchesPerMeter;

        levelsOfDetail.push(
          new LOD({
            level,
            scale,
            resolution
          })
        );
      }

      const map = new Map();

      const tileInfo = {
        dpi: dpi,
        size: tileSize,
        origin: {
          x: -20037508.342787,
          y: 20037508.342787
        },
        spatialReference: {
          wkid: 3857
        },
        lods: levelsOfDetail
      };

      const layer = new WebTileLayer({
        urlTemplate:
          "https://discover.agrc.utah.gov/login/path/your-quad-word-here/tiles/lite_basemap/{level}/{col}/{row}",
        tileInfo
      });

      map.add(layer);

      const view = new MapView({
        container: "viewDiv",
        map,
        center: [-111.5, 40],
        zoom: 11
      });
    });

UGRC has a widget called layer-selector , opens in a new tab that handles these issues as well as makes working with base maps more streamlined. It's main purpose is to provide users the ability to quickly switch between base maps and toggle associated overlays.