首页 / 浏览问题 / 组件GIS / 问题详情
iObject.Net 10.2.1创建纯属性表问题
35EXP 2022年04月06日

使用产品:iObject.net 10.2.1

问题描述:目前我有一个矢量数据集,我想要选取这个矢量数据集属性表中的两列(也就是两个字段的信息),导出为一个新的纯属性表(Tabular类型),但是我在Datasets类里面,只能找到创建矢量、栅格等数据集的函数,请问什么方法能直接实现我想要的效果?由于没有模板数据集,所以

CreateFromTemplate这个方法也用不了

1个回答

您好,根据您的描述,建议您参考以下流程进行实现:

  1. 通过 Datasets.Create 方法新建 Tabular 类型数据集(将 DatasetVectorInfo 对象的类型设置为 DatasetType.Tabular);
  2. 通过 datasetVector.AppendFields 为新建的 Tabular 类型数据集添加 SmID 字段;
  3. 使用 Recordset 将源矢量数据集的 SmID 字段值依次写入新建的 Tabular 数据集中;
  4. 通过 datasetVector.AppendFields 方法,以 SmID 字段值为链接字段,填充您需要导入的其他字段值。

这里是我本机编写的测试代码可供您参考:


                    DatasetVectorInfo datasetVectorInfo = new DatasetVectorInfo();
                    datasetVectorInfo.Type = DatasetType.Tabular;
                    datasetVectorInfo.Name = "test";
                    DatasetVector datasetVector = workspaceControl.WorkspaceTree.Workspace.Datasources[0].Datasets.Create(datasetVectorInfo);
                    Recordset recordset1 = datasetVector.GetRecordset(false, CursorType.Dynamic);
                    Recordset recordset = srcDatasetVector.GetRecordset(false, CursorType.Static);
                    bool i = datasetVector.AppendFields(srcDatasetVector, "SmID", "SmID", new string[] { });
                    do
                    {
                        var smid = recordset.GetFieldValue("SmID");
                        recordset1.AddNew(null, new Dictionary<string, object>() { { "SmID", smid } });
                        recordset1.Update();
                    } while (recordset.MoveNext());
                    recordset1.Dispose();
                    bool j = datasetVector.AppendFields(srcDatasetVector, "SmID", "SmID", new string[] { "Country_CH", "Capital_CH" });

希望可以帮到您。

2,168EXP 2022年04月06日
...