如何在C# WPF环境的ArcGIS Runtime中获取本地栅格文件波段数
栅格波段数获取方案
原有实现问题根因
你当前使用的IdentifyLayerAsync是用于指定位置的栅格像元查询接口,返回结果受识别范围、位置是否落在无数据区域、图层加载状态影响,天然存在返回空的概率,该接口设计用途不是读取栅格固有属性。
推荐实现方案
ArcGIS Runtime 100.x及以上版本中,Raster实例自带的元数据属性RasterInfo可直接读取波段数,不需要依赖任何交互识别操作,稳定性和性能远高于原有实现,示例代码如下:
// 先确保图层加载完成,若图层刚初始化可先主动触发加载 if (_rasterLayer.LoadStatus != Esri.ArcGISRuntime.LoadStatus.Loaded) { await _rasterLayer.LoadAsync(); } // 直接从栅格元数据读取波段数 int bandCount = _rasterLayer.Raster.RasterInfo.BandCount;
补充说明
- 该方法直接读取栅格文件头的元数据信息,和栅格内容、显示位置无关,不会出现偶发获取失败的问题
- 若你是直接通过本地文件路径初始化Raster,不需要绑定到图层也可直接读取:
Esri.ArcGISRuntime.Rasters.Raster localRaster = new Esri.ArcGISRuntime.Rasters.Raster("你的栅格文件路径"); await localRaster.LoadAsync(); int bandCount = localRaster.RasterInfo.BandCount;
内容的提问来源于stack exchange,提问作者Priyanka Ravi
相关产品推荐
相关产品推荐

