首页 / 浏览问题 / 桌面GIS / 问题详情
该如何将数据集显示出来?
26EXP 2017年07月12日
我调用叠加分析类的裁剪方法,用一个数据集来保存结果,然后我想将这个数据集显示出来,该用哪个控件呢?

1个回答

您好,还是使用MapControl来显示地图,MapControl.Map.Layers.Add(Dataset,Boolean);
5,985EXP 2017年07月12日

报了这个错是什么情况啊?

Dataset类型对象和Layer类型对象的Workspace属性必须引用同一Workspace对象
rdt是怎么获取到的?请截图

DatasetVector result=(DatasetVector)cboriginalDataset.SelectedItem ;//声明并初始化一个用于保存操作结果的数据集
            switch (type)
            {
                case 1: OverlayAnalyst.Clip((DatasetVector)cboriginalDataset.SelectedItem, (DatasetVector)cboverlayDs.SelectedItem, result,pars ); break;
            }
            
            
            Result Result = new Result(result);//将结果数据集对象传给Result窗体
            workspace1.Close();
            workspace2.Close();
            workspace3.Close();
            Result.Show();

还是没看到哪儿有rdt这个数据集的获取,另外怎么关闭了三个工作空间?

我是利用窗体的构造函数来传的值,rdt获取的就是Clip方法里那个用来保存裁剪结果的result数据集.

 public partial class Result : Form
    {
        public Result(DatasourceConnectionInfo dci,DatasetVector rdt)
        {
            
            InitializeComponent();
           
            mapControl1.Map.Workspace = workspace1;
            mapControl1.Map.Layers.Add(rdt,true);
            mapControl1.Refresh();
        }

三个都关了是因为我以为传过来的那个dataset对象还被绑在上一个窗体的workspace里面,所以才会报错,就都关了。但还是没用。

不知道您怎么写的哈,您这三个工作空间是三个不同的工作空间还是同一个工作空间打开关闭了3次?您做的这些工作看起来一个工作空间就完全可以解决了,我们在做东西的时候也是通常只会用到一个工作空间,不知道您的项目有什么特殊需求。
我接触iobjects.net也没多久,可能对于这些应用还不熟练吧。不过关键不在这个上面。

是这样的,我在第一个窗体上调用了叠加分析类的Clip方法,然后我把裁剪出来的数据集传给了下一个窗体,想要在mapcontrol上显示出来,之后我按您的建议调用了maptrol.map.Layers.Add()方法,然后报错了,说我的Dataset类型对象和Layer类型对象的Workspace属性必须引用同一Workspace对象。我不知道这个报错信息该怎么解决。
您的mapcontrol和Dataset是同一个工作空间吗,过程中有没有New新的工作空间?
dataset是由上一个窗体传过来的数据集,我不清楚它现在属于哪个工作空间,可能还是属于它的数据源所在的,之前窗体的那个工作空间吧,但我也不清楚怎么把它绑定到当前窗体的工作空间。

没有new过新的工作空间。
您私信我您的电话号码吧,感觉说不明白了,我最好能远程看一下您的程序
...