首页 / 浏览问题 / 组件GIS / 问题详情
C#二次开发Layer3DDataset获得模型数据集
2EXP 2021年04月06日

layer3DDataset.ToDatasetVector(layer3DDataset.Dataset.Datasource, "道路合并model");

此方法无法使用,目标就是想生成个贴完图的模型数据集

使用产品:iobject.net 9D 2019 操作系统:win7 x64
数据类型: 文件型udb
问题详细描述:

1。udb道路数据集合并

2。合并后的数据集贴图生成图层  Layer3DDataset layer3DDataset = sceneObject.Layers.Add(targetDataset, layer3DSettingVector, true); 图层已正常出现在球形场景

3。layer3DDataset.ToDatasetVector(layer3DDataset.Dataset.Datasource, "道路合并model");出错E:\Csupermap-idesktop.net-9.1.2-38169-win64-bin-zip-chs\log

当天运行多次  第一次出现过

使用产品 

1个回答

您好,您的该工作空间、数据源、数据集在桌面端中能否正常打开操作?
10,538EXP 2021年04月06日
- IsColorByCategory 'layer3DDataset.IsColorByCategory' threw an exception of type 'System.ObjectDisposedException' bool {System.ObjectDisposedException}

+        CollectionDatasetCount    '((SuperMap.Data.DatasetVector)layer3DDataset.Dataset).CollectionDatasetCount' threw an exception of type 'System.InvalidOperationException'    int {System.InvalidOperationException}
 

+        CollectionDatasetInfos    '((SuperMap.Data.DatasetVector)layer3DDataset.Dataset).CollectionDatasetInfos' threw an exception of type 'System.InvalidOperationException'    System.Collections.Generic.List<SuperMap.Data.CollectionDatasetInfo> {System.InvalidOperationException}
 

这三个错误有影响么

使用layer3DDataset.ToDatasetVector时会有此错误;

Layer3DDataset layer3DDataset = sceneObject.Layers.Add(targetDataset, layer3DSettingVector, true);

此语句会有

+        IsUseEffect    'layer3DSettingVector.IsUseEffect' threw an exception of type 'System.NullReferenceException'    bool {System.NullReferenceException}
+        UpdateSize    'layer3DSettingVector.UpdateSize' threw an exception of type 'System.NullReferenceException'    uint {System.NullReferenceException}
 

最后两个上传图片的时候告诉我上传太多一个小时后再来

主要是实在没有深究   图层右键保存模型数据集也好使  就是c#写代码报错 我也实在没招了

//工作空间及三维场景部分
workspace = SuperMap.Desktop.Application.ActiveApplication.Workspace;

            sceneControl = new SceneControl();
            sceneControl.Scene.Workspace = workspace;
            sceneControl.Dock = DockStyle.Fill;
            this.Controls.Add(sceneControl);
            sceneControl.Refresh();






            //Thread.Sleep(30000);




//贴图及模型生成部分
            DatasetVector datasetVector=workspace.Datasources[0].Datasets["道路合并"] as DatasetVector;
            Scene scene=sceneControl.Scene;

            Layer3DDataset layer3DDataset = TestLayer3DSettingDatasetVector(datasetVector, scene, "chartlet", "crosswise", "lengthways");
            sceneControl.Scene.EnsureVisible(layer3DDataset);
            layer3DDataset.ToDatasetVector(workspace.Datasources[0], "道路合并model");

发现上述代码上下两部分  分成两个按钮顺序点击  不会有错误

放到一个按钮运行就出问题

即使我设置了长达30秒的阻塞  依然无效

如何解决  让我一个按钮就完成功能
阻塞、方法、api什么的没有影响,您的问题很明显了,是操作数据的读写失败。

数据的读写失败调试,可能是占用、锁定、打开不成功、为空、实例化失败、赋值失败等等,参数出错的问题会出现在你实例化这个参数到您过程中使用赋值的每一步,都有可能,而不是在方法这里,方法调用失败是返错误或者方法报错,而不是参数报错。

您应该去学习以下c#开发的基础知识,程序调试、bug调试、调试过程中的参数检查等等的开发基础技术。
...