Create and use a raster layer made from a local raster file.
      
  
    
Use case
Rasters can be digital aerial photographs, imagery from satellites, digital pictures, or even scanned maps. An end-user will frequently need to import raster files acquired through various data-collection methods into their map to view and analyze the data.
How to use the sample
The sample will load with a map showing a basemap and a loaded raster layer. Tap on "Add Raster" to browse for a new raster file. On desktop platforms the sample also allows you to drag and drop supported raster files to load.
How it works
To add a RasterLayer as an operational layer from a local raster file:
- Create a 
Mapwith aBasemap. Once this has been loaded, raster layers will be re-projected on the fly to match the map. - Create a 
Rasterfrom a raster file. - Create a 
RasterLayerfrom the raster. - Add it as an operational layer with 
map.operationalLayers.append(rasterLayer). 
Relevant API
- Raster
 - RasterLayer
 
Offline Data
To set up the sample's offline data, see the Use offline data in the samples section of the Qt Samples repository overview.
| Link | Local Location | 
|---|---|
| Shasta.tif raster | <userhome>/ArcGIS/Runtime/Data/raster/Shasta.tif | 
Additional information
See the topic What is raster data? in the ArcMap documentation for more information about raster images.
Tags
data, image, import, layer, raster, visualization
Sample Code
// [WriteFile Name=RasterLayerFile, Category=Layers]
// [Legal]
// Copyright 2016 Esri.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// [Legal]
import QtQuick 2.6
import QtQuick.Controls 2.2
import Esri.ArcGISRuntime 100.15
import Esri.ArcGISExtras 1.1
Rectangle {
    id: rootRectangle
    clip: true
    anchors.fill: parent
    readonly property url dataPath: System.userHomePath + "/ArcGIS/Runtime/Data/raster/"
    readonly property var supportedFormats: ["img","I12","dt0","dt1","dt2","tc2","geotiff","tif", "tiff", "hr1","jpg","jpeg","jp2","ntf","png","i21","ovr"]
    property var rasterLayer: null
    MapView {
        id: mapView
        anchors.fill: parent
        Component.onCompleted: {
            // Set the focus on MapView to initially enable keyboard navigation
            forceActiveFocus();
        }
        Map {
            id: map
            Basemap {
                initStyle: Enums.BasemapStyleArcGISImageryStandard
            }
            //! [RasterLayerFile qml new raster layer]
            RasterLayer {
                Raster {
                    path: dataPath + "Shasta.tif"
                }
                // ...
                //! [RasterLayerFile qml new raster layer]
                onLoadStatusChanged: {
                    if (loadStatus !== Enums.LoadStatusLoaded)
                        return;
                    mapView.setViewpointCenterAndScale(fullExtent.center, 80000);
                }
            }
        }
    }
    Rectangle {
        visible: addButton.visible
        anchors.centerIn: addButton
        radius: 8
        height: addButton.height + (16)
        width: addButton.width + (16)
        color: "lightgrey"
        border.color: "darkgrey"
        border.width: 2
        opacity: 0.75
    }
    Button {
        id: addButton
        anchors {
            bottom: parent.bottom
            horizontalCenter: parent.horizontalCenter
            margins: 32
        }
        text: "Add Raster"
        onClicked: loader.open();
    }
    RasterLoader {
        id: loader
        anchors.fill: rootRectangle
        folder: dataPath
        supportedExtensions: supportedFormats
        onRasterFileChosen: {
            createAndAddRasterLayer(url);
        }
    }
    function createAndAddRasterLayer(rasterUrl) {
        const newRaster = ArcGISRuntimeEnvironment.createObject("Raster", {path: rasterUrl});
        rasterLayer = ArcGISRuntimeEnvironment.createObject("RasterLayer", {raster: newRaster});
        rasterLayer.loadStatusChanged.connect(zoomToRaster);
        map.operationalLayers.clear();
        map.operationalLayers.append(rasterLayer);
    }
    function zoomToRaster(){
        if (rasterLayer === null)
            return;
        if (rasterLayer.loadStatus !== Enums.LoadStatusLoaded)
            return;
        mapView.setViewpointCenterAndScale(rasterLayer.fullExtent.center, 80000);
    }
}