虽然知道一些关于X/Y Domain的东西,但是没想到它会导致Intersect方法出错。我在将图斑按照村界线进行分割,以便能够按照村为单位统计各种图斑的面积,26万多个图斑,绝大部分都是正确的,只有149个结果不对,有一到两个线连接到非常遥远的(0,0)点,还有一个图斑更加夸张,两条圆弧连到原点,一条弯月非常壮观。
我仔细分析原因,线的另一头基本上都是从界线相距很近的地方引出,非常近只有0.000023m。在Domain是
(-100000,100000)时,精度为10737.418225,一个单位为9.313E-5,此时结果是错误的。但是如果调整Domain为(8094.503665,76813.980369)此时精度为31249.999971,一个单位为3.2E-5,结果就是正确的。
3.2E-5与2.3E-5,大致相当,而9.3E-5则是2.3E-5的好几倍,结果导致出错。
我现在还没有找到如何回避这样的问题,虽然找出了原因,但是问题没有解决。整个上海市的范围精度只能到9.3E-5,如何保证能够正确地计算出结果?这看来是ArcGIS的一个Bug,但是是什么原因导致这样的错误呢,怎么回避这样的问题呢?还得继续研究!
我在Personal Geodatabase上工作,除了这个问题,还有一个问题也很头痛,几百条上千条记录程序工作正常,但是到26万条的时候,程序在StopEditing的时候出错。MDB文件从开始的180M增长到将近1G,硬盘狂转一阵子就出错了。我后来是干脆放弃Undo了,直接写结果才算出来。数据量一大,什么问题都来了。还有很多奇怪的问题,写下来太多了!
我仔细分析原因,线的另一头基本上都是从界线相距很近的地方引出,非常近只有0.000023m。在Domain是
(-100000,100000)时,精度为10737.418225,一个单位为9.313E-5,此时结果是错误的。但是如果调整Domain为(8094.503665,76813.980369)此时精度为31249.999971,一个单位为3.2E-5,结果就是正确的。
3.2E-5与2.3E-5,大致相当,而9.3E-5则是2.3E-5的好几倍,结果导致出错。
我现在还没有找到如何回避这样的问题,虽然找出了原因,但是问题没有解决。整个上海市的范围精度只能到9.3E-5,如何保证能够正确地计算出结果?这看来是ArcGIS的一个Bug,但是是什么原因导致这样的错误呢,怎么回避这样的问题呢?还得继续研究!
我在Personal Geodatabase上工作,除了这个问题,还有一个问题也很头痛,几百条上千条记录程序工作正常,但是到26万条的时候,程序在StopEditing的时候出错。MDB文件从开始的180M增长到将近1G,硬盘狂转一阵子就出错了。我后来是干脆放弃Undo了,直接写结果才算出来。数据量一大,什么问题都来了。还有很多奇怪的问题,写下来太多了!