怎么样处理X/Y Domain导致ITopologicalOperator:Intersect出错问题?
怎么样处理X/Y Domain导致ITopologicalOperator:Intersect出错问题?
睡了一觉起来,继续思考这个问题。记得曾经用IFeatureCursorBuffer接口的时候,说一定要用IFeatureCursorBuffer2,会不会这里也要用ITopologicalOperator2呢?但是这次没有这么幸运,依旧是失败,不过也很正常,因为符合通常的逻辑,新的接口只是对老接口的扩展。看来是没折了,我突然在ArcCatalog的帮助中看到这样一句话:
Calculate precision
First you must calculate an appropriate precision by choosing your storage units and calculating your precision accordingly. Set your storage units to be 10 times smaller than the best precision of your data collection. This will ensure that the precision of your data collection is maintained in the geodatabase regardless of how you manipulate the data with ArcGIS (geoprocessing, topology cluster tolerance, geometry operations, and so on).(//Building a geodatabase/Setting an appropriate geodatabase spatial domain中有一段Calculate precision)
但是根据这个原则来看的话,我的设置没有问题,storage units=9.31E-5,而数据精度也就1E-3,十倍可以保证。但是出问题的地方,最小距离为2E-5,而且是不同的FeatureClass之间,难啊!
突然我想到了Topology平面拓扑,通过建拓扑也许可以解决这个问题。果然在Wizard中看到
Enter a cluster: 0.0001919
The cluster tolerance is a distance range in which all vertices and boundaries are considered as identical, or coincident. Vertices and endpoints falling within the cluster tolerance are snapped together.
同时设置图斑的rank比村界线高,这样村界线往图斑靠。创建Topology后,然后Validate。
再次运行程序进行图斑分割,跑了1hr14min终于跑完,结果完全正确!但是这样也比较麻烦,创建Topology速度很慢,而且必须要有ArcEditor的License才行。
此外为什么会出现这样的问题,多了一个(0,0)?
有没有什么办法检测结果是否出错?
有没有办法检测数据集是否存在这样的问题,不通过建拓扑有没有办法修复呢?