Skip to content

Raster layer (file)

View on GitHubSample viewer app

Create and use a raster layer made from a local raster file.

screenshot

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

  1. Create a Raster from a raster file.
  2. Create a RasterLayer from the raster.
  3. Add it as an operational layer with map::operationalLayers()::append(rasterLayer).

Relevant API

  • Raster
  • RasterLayer

Offline Data

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

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

RasterLayerFile.cppRasterLayerFile.cppRasterLayerFile.hRasterLoader.qmlRasterLayerFile.qml
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 114 // [WriteFile Name=RasterLayerFile, Category=Analysis] // [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]  #ifdef PCH_BUILD #include "pch.hpp" #endif // PCH_BUILD  // sample headers #include "RasterLayerFile.h"  // ArcGIS Maps SDK headers #include "Basemap.h" #include "Envelope.h" #include "Error.h" #include "LayerListModel.h" #include "Map.h" #include "MapQuickView.h" #include "MapTypes.h" #include "MapViewTypes.h" #include "Point.h" #include "Raster.h" #include "RasterLayer.h"  // Qt headers #include <QFuture> #include <QStandardPaths> #include <QUrl> #include <QtCore/qglobal.h>  using namespace Esri::ArcGISRuntime;  // helper method to get cross platform data path namespace {  QString defaultDataPath()  {  QString dataPath;   #ifdef Q_OS_IOS  dataPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);  #else  dataPath = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);  #endif   return dataPath;  } } // namespace  RasterLayerFile::RasterLayerFile(QQuickItem* parent /* = nullptr */):  QQuickItem(parent) { }  RasterLayerFile::~RasterLayerFile() = default;  void RasterLayerFile::init() {  qmlRegisterType<MapQuickView>("Esri.Samples", 1, 0, "MapView");  qmlRegisterType<RasterLayerFile>("Esri.Samples", 1, 0, "RasterLayerFileSample"); }  void RasterLayerFile::componentComplete() {  QQuickItem::componentComplete();   const QString dataPath = defaultDataPath() + "/ArcGIS/Runtime/Data/raster/";   // find QML MapView component  m_mapView = findChild<MapQuickView*>("mapView");  m_mapView->setWrapAroundMode(WrapAroundMode::Disabled);   Basemap* basemap = new Basemap(BasemapStyle::ArcGISImageryStandard, this);  m_map = new Map(basemap, this);  m_mapView->setMap(m_map);   // Create a map using a raster layer  createAndAddRasterLayer(dataPath + "Shasta.tif"); }  void RasterLayerFile::createAndAddRasterLayer(QString dataPath) {  // correct data path if contains file:/ prefix  if (dataPath.contains("file:/"))  dataPath = QString(QUrl(dataPath).toLocalFile());   //! [RasterLayerFile cpp new raster layer]  Raster* raster = new Raster(dataPath, this);  RasterLayer* rasterLayer = new RasterLayer(raster, this);  //! [RasterLayerFile cpp new raster layer]   connect(rasterLayer, &RasterLayer::doneLoading, this, [this, rasterLayer](const Error& loadError)  {  if (!loadError.isEmpty())  return;   m_mapView->setViewpointCenterAsync(rasterLayer->fullExtent().center(), 80000);  });   m_map->operationalLayers()->clear();  m_map->operationalLayers()->append(rasterLayer); }

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