DatasetMosaic镶嵌无效 添加至场景无效

0 投票

使用产品:.net 9d 操作系统:win10 x64

数据类型:postgis 数据库型

问题详细描述:

1、datasetMosaic.Addfile返回true,但是在超图客户端中预览数据并没有添加的影像文件。

2、datasetMosaic.BuildPyramid()直接报异常。

3、map.Layers.add(datasetMosaic,true)返回Layer为null  datasetMosaic的数据类型该怎么添加至场景中?

7月 22 分类:  38次浏览 | 用户: tianyinwei 初出茅庐 (26 分)

1个回答

0 投票
 
已采纳
第一步:创建镶嵌数据集,并且添加影像到数据集;

DatasetMosaic datasetMosaic = datasource.Datasets.CreateMosaic(datasource.Datasets.GetAvailableDatasetName(filename), prj);
datasetMosaic.AddFiles(new string[1] { filepath });

第二步,构建概视图:

datasetMosaic.BuildOverview(datasetMosaicOverviewPath, 5120, 5120, 3, true, 0);

第三步:添加镶嵌数据集到地图:

 DatasetMosaic dataset = datasource.Datasets[i] as  DatasetMosaic;
                
                LayerMosaicGroup layerMosaicGroup = mapControl.Map.Layers.AddMosaicGroup(dataset, true);
                
                LayerMosaic layerMosaic = layerMosaicGroup.MosaicLayer;

                LayerSettingImage layersetting = layerMosaic.SettingImage as LayerSettingImage;

                layersetting.DisplayBandIndexes = new int[3] { 2, 1, 0 };
                layersetting.DisplayMode = ImageDisplayMode.Composite;
                layersetting.DisplayColorSpace = ColorSpaceType.RGB;
                layersetting.ImageInterpolationMode = ImageInterpolationMode.NearestNeighbor;

                dataset.BuildStatistics();
                ImageStretchOption option = new ImageStretchOption();
                option.StretchType = ImageStretchType.StandardDeviation;
                option.StandardDeviationStretchFactor = 2;
                layersetting.ImageStretchOption = option;
                layersetting.BackgroundColor = Color.FromArgb(0, 0, 0);
                //layersetting.SpecialValueColor = Color.FromArgb(65535, 65535, 55537);
                //layersetting.IsSpecialValueTransparent = true;
                layersetting.IsBackgroundTransparent = true;

                layerMosaicGroup.FootprintLayer.IsVisible = false;
                layerMosaicGroup.BoundaryLayer.IsVisible = false;
                layerMosaicGroup[1].IsVisible=false;
7月 22 用户: 程逸诗 名扬四海 (3,049 分)
采纳于 7月 28 用户:tianyinwei

首先,感谢您的回答。

其次,通过您的回答,确实可以实现。但是这是基于本地的CreateMosaic来实现的。而如果通过获取数据库型数据源中的已经存在的DatasetMosaic或者为数据库型数据源创建CreateMosaic,而后再执行DatasetMosaic.addfiles() 返回为true。但是实际在桌面客户端连接数据库并查看时,datasetmosaic查看却是失败的。通过测试,执行同样的添加、同样的步骤,只是datasetmosaic一个是本地的创建的,一个是数据库型的,则前者是可以的,但后者是不可以的。所以DatasetMosaic.addfiles()是不是并不支持对于数据库型数据源的操作?如果不支持为什么在datasetmosaic.addfiles()的时候又返回true呢。通过检测DatasetMosaic.Stepped 事件,发现本地的和数据库的两个内部的执行的步骤并不一样。这是为什么呢?所有步骤都是一样的,只是一个是本地的一个是数据库的。请您解答。谢谢。

...