Skip To Content ArcGIS for Developers Sign In Dashboard

ArcGIS Runtime SDK for Qt

Feature layer (GeoPackage)

Sample Viewer View Sample on GitHub

Display features from a local GeoPackage.

Use case

A GeoPackage is an OGC standard, making it useful when your project requires an open source data format or when other, non-ArcGIS systems may be creating the data. Accessing data from a local GeoPackage is useful when working in an environment that has an inconsistent internet connection or that does not have an internet connection at all. For example, a department of transportation field worker might source map data from a GeoPackage when conducting signage inspections in rural areas with poor network coverage.

How to use the sample

Pan and zoom around the map. View the data loaded from the geopackage.

How it works

  1. Create a GeoPackage by passing the URL string to the .gpkg file.
  2. Load the GeoPackage with GeoPackage.load
  3. When it's done loading, get the GeoPackageFeatureTable objects from the geopackage with geoPackage.geoPackageFeatureTables
  4. Create a FeatureLayer for each feature table and add it to the map as an operational layer. Add each to the map as an operational layer with map.operationalLayers.append(featureLayer)

Relevant API

  • Map
  • FeatureLayer
  • GeoPackage
  • GeoPackageFeatureTable

Offline data

Read more about how to set up the sample's offline data here.

Link Local Location
Aurora, Colorado GeoPackage <userhome>/ArcGIS/Runtime/Data/gpkg/AuroraCO.gpkg

About the data

The map shows point locations of public art installations in Aurora, Colorado.

Tags

feature table, geopackage, gpkg, OGC, package, standards

Sample Code

import QtQuick 2.6
import Esri.ArcGISRuntime 100.9
import Esri.ArcGISExtras 1.1

Rectangle {
    id: rootRectangle
    clip: true
    width: 800
    height: 600

    readonly property string dataPath: System.userHomePath + "/ArcGIS/Runtime/Data/gpkg/"

    MapView {
        id: mapView
        anchors.fill: parent

        Map {
            id: map
            BasemapLightGrayCanvas {}

            // Load the GeoPackage once the Map loads
            onLoadStatusChanged: {
                if (loadStatus === Enums.LoadStatusLoaded)
                    gpkg.load();
            }

            // set an initial viewpoint
            ViewpointCenter {
                Point {
                    y: 39.7294
                    x: -104.8319
                    spatialReference: Factory.SpatialReference.createWgs84()
                }
                targetScale: 200000
            }
        }
    }

    // Declare a GeoPackage
    GeoPackage {
        id: gpkg
        path: dataPath + "AuroraCO.gpkg"

        // Wait for the GeoPackage to load successfully
        onLoadStatusChanged: {
            if (loadStatus !== Enums.LoadStatusLoaded)
                return;

            if (!gpkg.geoPackageFeatureTables.length > 0)
                return;

            // Get the first feature table
            const gpkgFeatureTable = gpkg.geoPackageFeatureTables[0];
            // Create a FeatureLayer with the table
            const featureLayer = ArcGISRuntimeEnvironment.createObject("FeatureLayer", {featureTable: gpkgFeatureTable});
            // Append the layer to the map
            map.operationalLayers.append(featureLayer);
        }
    }
}