Data layers

Feature layer displaying road traffic data from a hosted feature layer

What is a data layer?

A data layer, also known as an operational layer, is a client-side layer that can access geographic data from a data source. You use a data layer to display geographic data on top of a basemap layer in a map or scene. The data source for the layer can be a data service or a file such as a Shapefile or GeoJSON file.

You can use data layers to:

  • Display feature or tile data from feature services, vector tile services, or image tile services.
  • Display layers with renders and symbols (data-driven styles).
  • Access data through SQL and spatial queries.
  • Provide access to data attributes for point, line, and polygon feature data.
  • Add, update, and delete feature data.

How a data layer works

A data layer provides access to geographic data that is displayed in a map or scene. Each layer references a file or service data source. The data source contains either as vector data (points, lines, polygons and attributes) or raster data (images). Different types of layers can access and display different types of data.

The data for a data layer is typically stored in ArcGIS as a data service. You can use feature services, vector tile services, and image tile services to host your data. Learn more in Data hosting.

To add a data layer to a map or scene, you typically add imagery or tile layers first, and then polygons, lines, and points layers last. A map or scene controls the order of the layers, and the map or scene view combines the layers to create the final display.

Figure 1: Data layers are added on top of a basemap layer.

Types of data layers

You can use different types of data layers to access and display different types of data in your applications. Data layers can access ArcGIS data sources and other types of data sources such as OGC data and files.

Different data layers provide different types of functionality. The functionality available is largely dependent on the capabilities of the API and the data source. For example, a feature layer can access a feature service and perform queries, edits, and data export, whereas a vector tile layer can only access tiles from a vector tile service.

ArcGIS data layers

The following layers work with ArcGIS data sources.

LayerData typeDisplayQueryEditOffline*Data sources
Feature layerFeature2D/3DTrueTrueTrueFeature service, shapefile, geodatabase
Vector tile layerVector Tile2D/3D**FalseFalseTrueVector tile service, vector tile package (.vtpk)
Feature collection layerFeature2D/3DTrueTrueTruePortal item, web map, feature set / query result
Annotation layer***Feature2DTrueTrueTrueFeature service
Tile layerImage Tile2D/3DFalseFalseTrueTile service, tile package (.tpk/.tpkx)
Raster/Imagery layerRaster2D/3DFalseFalseTrueImage service (ASRP/USRP, CRF, DTED, GeoTIFF/TIFF, HFA, HRE, IMG, JPEG, JPEG2000, NITF, PNG, RPF, SRTM (HGT), USGS DEM)
Scene layerI3S3DFalseFalseTrueScene service
Map image layerImage2D/3DFalseFalseTrueMap service (Offline requires local server)
Stream layerFeature2D/3DFalseFalseFalseStream service
* Offline layers can be used with ArcGIS Maps SDKs for Native Apps.

** ArcGIS Maps SDK for JavaScript only.

*** ArcGIS Maps SDKs for Native Apps only.

OGC data layers

The following layers work with OGC data sources.

LayerData typeDisplayQueryEditOffline*Data sources
Feature layerFeature2D/3DTrueTrueTrueWFS, GeoPackage
Raster layerRaster2D/3DTrueFalseTrueGeoPackage
KML layerFeature/Image2D/3DTrueTrueTrueKML file (.kml, .kmz)
WMS layerImage2D/3DFalseFalseFalseWMS service
WMTS layerImage Tile2D/3DFalseFalseFalseWMTS service
OGC feature layerFeature2D/3DFalseFalseFalseOGC API Features service
* Offline layers can be used with the ArcGIS Maps SDKs for Native Apps.

Other data layers

The following layers work with non-ArcGIS data sources.

LayerData typeDisplayQueryEditOffline*Data sources
CSV layer**Feature2D/3DTrueFalseFalseCSV file (.csv)
GeoJSON layer**Feature2D/3DTrueTrueFalseGeoJSON file or service
OpenStreetMap layerVector Tile2D/3DFalseFalseTrueOSM Vector tile service
Vector tile layerVector Tile2D/3D**FalseFalseFalseVector tile service (Mapbox specification)
Web tile layerImage Tile2D/3DFalseFalseFalse{level},{row},{col} Image tile service
Raster/Imagery layer***Raster2D/3DFalseFalseFalseRaster files e.g. GeoTiff, Mr. Sid
* Offline layers can be used with the ArcGIS Maps SDKs for Native Apps.

** ArcGIS Maps SDK for JavaScript API only.

*** ArcGIS Maps SDKs for Native Apps only.

Code examples

Display feature data from a feature service

This example uses a feature layer to access and display features from a feature service. A feature layer is used to display points, lines, or polygons from a layer in a feature service. To access attribute values, they need to be requested from the service. You can also override the default symbols for the features by using a renderer. Learn more about renderers in Styles and data visualiziation.

Steps

  1. Create a map or scene.
  2. Create a feature layer and reference a feature service with a URL or item ID.
  3. Add the feature layer to the map or scene.

Map

ArcGIS Maps SDK for JavaScriptArcGIS Maps SDK for JavaScriptArcGIS Maps SDK for .NETArcGIS Maps SDK for KotlinArcGIS Maps SDK for JavaArcGIS Maps SDK for Qt (C++)ArcGIS Maps SDK for Qt (QML)ArcGIS API for PythonEsri LeafletMapLibre GL JSOpenLayers
Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
      const trailheadsLayer = new FeatureLayer({
        url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads_styled/FeatureServer/0"
      });
      map.add(trailheadsLayer);

      const trailsLayer = new FeatureLayer({
        url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trails_styled/FeatureServer/0"
      });
      map.add(trailsLayer,0);

      const parksLayer = new FeatureLayer({
        url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Parks_and_Open_Space_styled/FeatureServer/0"
      });
      map.add(parksLayer,0);

Scene

ArcGIS Maps SDK for JavaScriptArcGIS Maps SDK for JavaScriptArcGIS Maps SDK for .NETArcGIS Maps SDK for JavaArcGIS Maps SDK for Qt (C++)ArcGIS Maps SDK for Qt (QML)ArcGIS API for PythonCesiumJS
Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
      const trailheadsLayer = new FeatureLayer({
        url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads_styled/FeatureServer/0"
      });
      scene.add(trailheadsLayer);

      const trailsLayer = new FeatureLayer({
        url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trails_styled/FeatureServer/0"
      });
      scene.add(trailsLayer,0);

      const parksLayer = new FeatureLayer({
        url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Parks_and_Open_Space_styled/FeatureServer/0"
      });
      scene.add(parksLayer,0);

Display tile data from a vector tile service

This example uses a vector tile layer to access and display data from a vector tile service. The layer works with the service to access the tile data as well as the styles for the data. The styles can also be overridden on the client to change how the layer is displayed in a map or scene.

Steps

  1. Create a map or scene.
  2. Create a vector tile layer and reference a vector tile service with a URL or item ID.
  3. Add the layer to the map or scene.
ArcGIS Maps SDK for JavaScriptArcGIS Maps SDK for JavaScriptArcGIS Maps SDK for .NETArcGIS Maps SDK for KotlinArcGIS Maps SDK for JavaArcGIS Maps SDK for Qt (C++)ArcGIS Maps SDK for Qt (QML)ArcGIS API for PythonEsri LeafletMapLibre GL JSOpenLayers
Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
    esriConfig.apiKey = "YOUR_API_KEY";

    const vtlLayer = new VectorTileLayer({
      url: "https://vectortileservices3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Santa_Monica_Mountains_Parcels_Styled/VectorTileServer/resources/styles/root.json",
      opacity: 0.75
    });

    const map = new Map({
      basemap: "arcgis-light-gray",
      layers: [vtlLayer]
    });

Display data from a GeoJSON file

This example uses a GeoJSON layer to access and display data in a GeoJSON file. The file contains features with a geometry (point, line, or polygon) and attributes. When features are loaded by the layer, they can be styled and the data can be accessed like features in feature layers.

Steps

  1. Get the URL to the hosted GeoJSON data file.
  2. Create the layer and set the URL.
  3. Add the layer to a map or scene.
ArcGIS Maps SDK for JavaScriptArcGIS Maps SDK for JavaScriptArcGIS API for PythonEsri LeafletMapLibre GL JSOpenLayersCesiumJS
Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
        const geojsonLayer = new GeoJSONLayer({
          url: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojson",
          copyright: "USGS Earthquakes"
        });

        esriConfig.apiKey = "YOUR_API_KEY";

        const map = new Map({
          basemap: "arcgis-light-gray",
          layers: [geojsonLayer]
        });

Display data from a WMS service

This example uses a WMS layer to display data from an OpenGIS® Web Map Service Interface Standard (WMS) service. The layer displays geo-registered map images from one or more distributed geospatial databases. For more information about this service and specification, visit OGC WMS.

Steps

  1. Get the URL to the WMS service.
  2. Create the layer and set the URL. Define which sublayers to display.
  3. Add the layer to a map or scene as a basemap or data layer.

ArcGIS API for JavaScript ArcGIS API for JavaScript ArcGIS Maps SDK for .NETArcGIS Maps SDK for KotlinArcGIS Maps SDK for SwiftArcGIS Maps SDK for JavaArcGIS Maps SDK for Qt (C++)ArcGIS Maps SDK for Qt (QML)ArcGIS API for Python
Expand
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
        const layer = new WMSLayer({
          url: "https://ows.terrestris.de/osm/service",
          sublayers: [
            {
              name: "OSM-WMS" //OpenStreetMap WMS by terrestris GmbH and Co. KG.
            }
          ]
        });

        const map = new Map({
          basemap: {
            baseLayers: [layer]
          }
        });

Tutorials

Services

Basemap styles service (v1)

Access basemap styles such as streets, navigation, and imagery for maps and scenes.


Feature service

Add, update, delete, and query feature data.


Vector tile service

Store and access vector tile data.


Map tile service

Store and access map tile data.

API support

2D Display3D DisplayBasemap layersBasemap placesData layersGraphicsWeb mapsWeb scenes
ArcGIS Maps SDK for JavaScript1
ArcGIS Maps SDK for .NET
ArcGIS Maps SDK for Kotlin
ArcGIS Maps SDK for Swift
ArcGIS Maps SDK for Java
ArcGIS Maps SDK for Qt
ArcGIS API for Python
ArcGIS REST JS22
Esri Leaflet34
MapLibre GL JS34
OpenLayers134
CesiumJS34
Full supportPartial supportNo support
  • 1. Display places only.
  • 2. Access via HTTP request and authentication.
  • 3. Access via Feature layer or Map tile layer.
  • 4. Access via layers.

Tools

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.