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);

文章就写到这里吧,欢迎小伙伴们给我留言…

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值