首页 / 浏览问题 / 组件GIS / 问题详情
.net拓扑错误检查无重复点规则的问题
20EXP 2021年01月20日

使用无重复点规则进行检查时出现了这样的问题。想知道原因

1个回答

您好,您可以看到异常信息已经告诉您是写入收限,写入参数只有一个,存放检查结果的数据源。

您用来存放检查结果的数据源error,仅在您的磁盘路径下进行创建,并没有在该工作空间中打开,因此无法写入检查结果。
10,598EXP 2021年01月20日
DatasourceConnectionInfo info = new DatasourceConnectionInfo();
info.EngineType = EngineType.UDBX;
info.Server = @"C:\Users\Administrator\Desktop\dmdz.udbx";
Workspace workspace = new Workspace();
Datasource datasource = workspace.Datasources.Open(info);
info.Server = @"C:\Users\Administrator\Desktop\dmdzError.udbx";
info.Alias = "CA";
Datasource error = workspace.Datasources.Create(info);
if (error.IsOpened)
{
      error.Close();
}
error = workspace.Datasources.Open(info);
DatasetVector datasetVector = datasource.Datasets["地名地址"] as DatasetVector;
TopologyValidator.Validate(datasetVector, null, TopologyRule.PointNoIdentical,0,null,error,"error");

按你所说在工作空间中打开,但还是出现了之前的错误

我这边使用您的代码测试是没有问题的呢。

您可以检查下您的矢量数据集是否获取成功,如在使用"地名地址"获取数据集前对datasource.Datasets使用.Contains()方法检查该名称是否存在。

也可以在调用TopologyValidator.Validate前,断点查看下您的datasetVecto数据集,error数据源到底是哪一个获取失败为null。

datasetVector数据集、error数据源没有一个是获取失败的。

栈异常信息是这样的。

我这边以您的代码形式进行了测试也是可以的您可以参考一下。这边测试版本是iobject .net 10i

您那边可能存在的问题:
矢量数据集中的二维点数据集才可以进行重复点拓扑检查。

数据应该是没有问题的。容限改成0.001的话就能够正常出结果。但是如果是0的话就会有异常,而且用iDesktop,容限填0的话也会出问题,iDesktop会自己退出。
你很好这边胫骨测试,正常情况下容限为0并不会导致iDesktop或者Iobject在拓扑检查时出现错误,应该是您的数据存在问题。

1.检查您数据集中是否存在1条以上的记录;

2.数据集参数异常,对数据集重新计算范围,并在数据集属性中清楚容限。

若仍崩溃,请您尝试新建点数据集进行拓扑检查。

若仍崩溃,请您放松您的软件版本于我。
...