首页 / 浏览问题 / 组件GIS / 问题详情
.NET10i 中 VectorToRaster()方法返回null
1EXP 2020年03月03日

使用产品:iObjects .NET 10i 操作系统:win10 x64
数据类型:sourceDataset 类型为二维面数据,
问题详细描述:

使用ConversionAnalyst.VectorToRaster 方法,返回数据为null:

        //矢栅转换
        public DatasetGrid VectorToRaster1(Dataset sourceDataset, Datasource targetDatasource)
        {
            try
            {
                //检查是否存在与结果数据集同名的数据集,如存在则删除
                string targetDatasetName = "resultRaster";
                if (targetDatasource.Datasets.Contains(targetDatasetName))
                {
                    targetDatasource.Datasets.Delete(targetDatasetName);
                }

                //实例化一个转换参数设置对象
                ConversionAnalystParameter conversionParameter = new ConversionAnalystParameter();

                conversionParameter.SourceDataset = sourceDataset;
                conversionParameter.TargetDatasource = targetDatasource;
                conversionParameter.TargetDatasetName = targetDatasetName;
                conversionParameter.PixelFormat = PixelFormat.Double;
                conversionParameter.ValueFieldName = "Value";
                conversionParameter.CellSize = 0.5;

                //转换
                DatasetGrid resultDatasetGrid = ConversionAnalyst.VectorToRaster(conversionParameter);
                return resultDatasetGrid;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
                return null;
            }
        }

问题:设置断点调试,侦听器在这段代码运行时没有任何报错,但是resultDatasetGrid的值始终都为null。
问题重现步骤:

1.这是获取数据集的操作

                //连接工作空间,显示数据
                v_workspace = new Workspace();
                v_mapControl = new MapControl();
                v_mapControl.Dock = DockStyle.Fill;
                this.Controls.Add(v_mapControl);
                v_mapControl.Map.Workspace = v_workspace;       //绑定
                WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo(fileName+".smwu");
                v_workspace.Open(workspaceConnectionInfo);
                
                Datasets datasets = v_workspace.Datasources[0].Datasets;
               
                //将数据添加到地图
                if (datasets.Contains(datasetName))
                {
                    this.v_mapControl.Map.Layers.Add(datasets[datasetName], true);
                    SetLayerStyle(v_mapControl.Map.Layers[0], Color.Red, 0.2);
                    v_mapControl.Map.Refresh();      //刷新地图
                }

                //调整mapControl1的状态
                v_mapControl.Action = SuperMap.UI.Action.Pan;

                ///获取参与数据转换的数据集
                v_datasource = v_workspace.Datasources[0];
                v_dataset = v_datasource.Datasets[datasetName];

2. 矢栅转换步骤已写在最前面

3. 这是调用矢栅转换方法的代码:

//调用矢栅转换方法
g_datasetGrid = VectorToRaster1(v_dataset,v_datasource);

----再然后调用g_datasetGrid时才会捕捉到错误(因为其值为null)。

4. 这是调试过程中,运行到 return resultDatasetGrid ; 时,监视的几个对象的值:

名称                     |值

sourceDataset     |{SuperMap.Data.DatasetVector}

resultDatasetGrid|null

不知道是哪里出了差错,望路过的大佬们指点一二,感激不尽!!!

1个回答

你好, 看代码没有明显 错误,可能是参数填写有问题,导致生成的grid为空,建议在idesktop上面把二维面转换一下 ,如果能成功,把idesktop上面的参数填写在.net接口里。
2,432EXP 2020年03月03日
...