ArcGIS Runtime 100.2中如何加載Raster和Mobile Mosaic Dataset

ArcGIS Runtime 100.2中如何加載Raster和Mobile Mosaic Dataset

衆所周知,ArcGIS中可以將數據分爲矢量數據和柵格數據,矢量數據簡單來說就是點、線、面,以座標形式進行存儲;而柵格則是按行和列(或格網)組織的像元(或像素)矩陣,其中每個像元都包含一個信息值(例如溫度、高程等)。柵格可以是數字航空像片、衛星影像、數字圖片、掃描的地圖,可以用作底圖、表面地圖等,在數據分析以及製圖過程中發揮着舉足輕重的作用。既然柵格數據這麼重要,ArcGIS Runtime也必然要對其進行支持,其中ArcGIS Runtime 100.0版本中增加了對本地柵格數據以及移動鑲嵌數據集的支持,下面就看一下最新版ArcGIS Runtime 100.2中可以加載哪幾種類型的柵格數據以及如何加載。

1,本地Raster files

ArcGiS Runtime 100及以後版本可以直接加載本地的柵格數據,支持常用的如GeoTIFF、IMG、JPEG、PNG等格式,使用絕對路徑方式即可:

Raster myRaster = new Raster(pathToRaster);
await myRaster.LoadAsync();
// create a RasterLayer using the Raster
RasterLayer RasterLayer = new RasterLayer(myRaster);

2,加載GeoPackage中的Raster

GeoPackage是一個開放的、基於標準的、平臺獨立的、便攜的、自描述的以及緊湊的存儲空間信息的格式。其遵循OGC標準,本質是一個SQLite數據庫,可以同時包含矢量和柵格數據。GeoPackage是Runtime 100.2新支持的格式,首先看一下如何創建GeoPackage,並導入數據:

(1)ArcMap中找到Create SQLite Database工具,參數Spatial Type選擇GEOPACKAGE,如下圖:

1

(2)創建成功後使用Add Raster to GeoPackage工具將Raster導入到該.gpkg中:

2

然後可以使用下面代碼加載.gpkg中的Raster了,當然一般.gpkg可能是別的軟件生成的。

// Open a local GeoPackage (.gpkg)
GeoPackage myGeoPackage = await GeoPackage.OpenAsync(geoPackageFilePath);

// Get the collection of rasters in the package
IReadOnlyList<GeoPackageRaster> packageRasters = myGeoPackage.GeoPackageRasters;

// Get the first raster in the collection
GeoPackageRaster firstRaster = packageRasters[0];

// Create a RasterLayer using the GeoPackageRaster (which inherits from Raster)
RasterLayer newRasterLayer = new RasterLayer(firstRaster);

結果如圖:

3

3,加載Mobile Mosaic Dataset

Runtime中加載鑲嵌數據集有兩種方式:一種是ArcGIS Pro中使用Mosaic Dataset To Mobile Mosaic Dataset工具將本地的鑲嵌數據集轉爲Mobile Mosaic Dataset,然後加載;另一種是Runtime中新建Mobile Mosaic Dataset,然後添加Raster,下面分別對兩種情況說明一下。

(1)打開Mosaic Dataset To Mobile Mosaic Dataset工具,輸入本地鑲嵌數據集路徑,指定SQLite數據庫位置以及Mobile Mosaic Dataset的名稱,如下圖所示:

4

執行成功後,可以使用下面代碼加載:

var mosaicDatasetRaster = new MosaicDatasetRaster(@"D:\ArcGIS_Runtime_Test\Demo\Data\mobileMosaicDataset\mobileMosaic.sqlite", "test");                 
await mosaicDatasetRaster.LoadAsync();          
if (mosaicDatasetRaster.LoadStatus == LoadStatus.Loaded)
{
    RasterLayer RL = new RasterLayer(mosaicDatasetRaster);
}

結果如圖:

5

tips:這裏有一點需要注意:本地的鑲嵌數據集需要構建概視圖,不然轉爲mobile mosaic dataset後加載會是一片黑色。

(2)Runtime中直接新建Mobile Mosaic Dataset,然後添加Raster。測試代碼如下:

SpatialReference SR = SpatialReference.Create(26915);
            MosaicDatasetRaster rasterMosaic = MosaicDatasetRaster.Create(@"D:\ArcGIS_Runtime_Test\Demo\Data\mobileMosaicDataset\mosaic4.sqlite", "zxy", SR);
            AddRastersParameters parameters = new AddRastersParameters();
            parameters.InputDirectory = @"D:\ArcGIS_Runtime_Test\Demo\Data\mobileMosaicDataset\sourceRaster";
            await rasterMosaic.AddRastersAsync(parameters);           
            await rasterMosaic.LoadAsync();
            if(rasterMosaic.LoadStatus == LoadStatus.Loaded)
            {
                RasterLayer rasterLayer = new RasterLayer(rasterMosaic);

            }

效果圖:

6

Tips:由於沒有構建概視圖,所以只能縮放到很大比例才能顯示出該mobile mosaic dataset。

4,加載影像服務

通過ArcGIS Server,我們可以把柵格數據和鑲嵌數據集發佈爲影像服務,Runtime中可以通過ImageServiceRaster直接加載在線影像服務。

ImageServiceRaster myRaster = new ImageServiceRaster(new Uri("http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer"));
await myRaster.LoadAsync();
// create a RasterLayer using the Raster
RasterLayer RasterLayer = new RasterLayer(myRaster);

文章就寫到這裏吧,歡迎小夥伴們給我留言…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章