首页 / 浏览问题 / 组件GIS / 问题详情
pg数据源线拓扑处理出错
25EXP 2024年07月23日

iobjectsjava-11.0.1,打开pg数据源,其中已存在表作为数据集,没有smid字段。

使用idesktopx11i操作没有问题。

使用iobjectsjava的TopologyProcessing.clean方法,日志报错:

2024-07-23 14:01:17 [error] 错误:  字段 "smid" 不存在
LINE 1: SELECT "gid" FROM public."道路中心线"  order by SmID
                                                        ^
HINT:  也许您想要引用列"道路中心线.gid"。
, ThreadID: 3312, Timespan(ms): 885719, ResourceID: -100, SourceCode: g:\teamcity\ugo1100\01_sourcecode\src\enginepgis\ugeditrecordsetpgis.cpp(350)
2024-07-23 14:01:17 [error] 记录集查询ID失败, ThreadID: 3312, Timespan(ms): 0, ResourceID: EKa026, SourceCode: g:\teamcity\ugo1100\01_sourcecode\src\enginepgis\ugeditrecordsetpgis.cpp(394)
2024-07-23 14:01:17 [error] 获取数据失败, ThreadID: 3312, Timespan(ms): 0, ResourceID: ELc083, SourceCode: g:\teamcity\ugo1100\01_sourcecode\src\enginepgis\ugeditrecordsetpgis.cpp(247)
2024-07-23 14:01:17 [error] 查询结果记录集指针为空, ThreadID: 3312, Timespan(ms): 0, ResourceID: EKb002, SourceCode: g:\teamcity\ugo1100\01_sourcecode\src\enginepgis\ugdatasetvectorpgis.cpp(413)
 

1个回答

您好,桌面版本也是11.0.1吗

方便的话可以贴下代码,我本地测试下
955EXP 2024年07月23日

idesktopx-11.0.0,数据源使用DatasourceConnectionInfo打开的PGGIS数据源,取到数据集后只进行了构造TopologyProcessingOptions,TopologyProcessing.clean操作,返回false。

TopologyProcessingOptions options = new TopologyProcessingOptions();
options.setLinesIntersected(false);
options.setOvershootsCleaned(false);
options.setUndershootsExtended(true);
options.setAdjacentEndpointsMerged(false);
options.setRedundantVerticesCleaned(false);
options.setDuplicatedLinesCleaned(false);
options.setPseudoNodesCleaned(false);
options.setOvershootsTolerance(0.1d);
options.setUndershootsTolerance(0.1d);
options.setVertexTolerance(0.001d);
boolean result = TopologyProcessing.clean(datasetVector, options);

pg中道路中心线表字段:

您好,我这里参考了您的代码,结果一切正常,如果您确认了数据没有问题,可以考虑更新下组件版本,本地使用的组件版本为supermap-iobjectsjava-11.1.1-22519-105418-win-all

...