首页 / 浏览问题 / 组件GIS / 问题详情
两个面融合去除缝隙
33EXP 2017年08月15日
两个面要融合,两个面是挨着的 但没有重叠部分,融合后重叠的部分已经融合但挨着的部分中间会有缝隙,这个缝隙怎么样去掉?

1个回答

您好,您这边最好在合并对象之前,通过拓扑检查“面内无缝隙”将缝隙找出来,再通过调节节点去掉缝隙,没问题了再合并对象。
5,985EXP 2017年08月15日
这个在代码里面怎么实现?
TopologyValidator.Validate 方法 (DatasetVector, DatasetVector, TopologyRule, Double, GeoRegion, Datasource, String)进行拓扑检查

Action.VertexEdit调节节点
这个如果得到他拓扑之后的结果? 比如我要去除规则是面内无重合的,我看他只是检查出的面内有重合的数据集,然后人为去修改,能不能自动去除然后得到结果?
TopologyValidator.FixTopoError 方法 可以自动修复一部分问题,但是不能修复面内无缝隙,需人为修复
就是先

TopologyValidator.Validate 方法 (DatasetVector, DatasetVector, TopologyRule, Double, GeoRegion, Datasource, String)进行拓扑检查,吧错误的数据集检查出来然后在调用

TopologyValidator.FixTopoError 方法进行修复?

是这个样子吧?
DatasetVector dv = datasets.Create(vectorInfo);
//添加面信息//给面数据集添加点集合
                for (int i = 0; i < point2DArray.Length; i++)
                {
                    createGeoRegion(point2DArray[i], dv);
                }

Datasource ds = new Datasource(m_datasource.EngineType);
DatasetVector dvresult = TopologyValidator.Validate(dv, null, TopologyRule.RegionNoOverlap, 10,null, ds, "tpresult");

为什么 dvresult是null?
注意容限的设置,容限的单位与坐标系一致,你可以把容限设置成0试试
设置的0还是返回null
你用iDesktop看能查出来不,还是不行的话,看能不能把数据发给我,我邮箱是hulin@supermap.com
数据已发送,查收下
您好,拓扑检查之前必须先进行拓扑预处理,这样检查的结果才是正确的

拓扑预处理方法:TopologyValidator.Preprocess 方法
...