论文作者 陈东
空间数据编码化计算
继续昨天的问题,分别探讨两种解决思路的可行性
重定义加减法
先解决分级、秒级编码的问题。因为二者格式相同,所以应该能够套用统一方法解决问题。
测试数据 59’59” ,在+1s的情况下,应得出结果 1° 但在网格运算中 其结果为 59’60”
其层级为 21层(1”) 同时要考虑61”的情况 ,例如 21层级对应跨度30m左右 如果计算该网格东边1830m处网格 即为61”
解决加减法的问题 首先要研究加减法的当前实现算法。
此处引用了wupenm的思路
http://blog.csdn.net/wupenm/article/details/49963011
对于二进制加法运算,若不考虑进位,则1+1=0, 1+0=1, 0+1=1, 0+0=0,通过对比异或,不难发现,此方法与异或类似。因而排除进位,加法可以用异或来实现。
然后考虑进位,0+0的进位是0,1+0的进位为0,只有1+1时进位才为1,该操作与位运算的&操作相似。
对于分级编码的运算,若不考虑进位,则正常加法运算。 然后考虑进位,如果大于59,则进1
对于进位需要重新计算
思路如下:
Step 1:正常计算加减法A+B=C;
Step 2: 计算度、分的进位,如果有进位,加上4'(4")*进位差(C_degree-A_degree,C_minute-A_minute ) 返回Step 1.若无进位,进行Step 3
Step 3: 判断分级、秒级编码是否超过60,如有超过,进行进位运算,进行Step 1.如果没有,则运算结束,返回运算值。
减法同样适用。
建立网格宽度矩阵
借鉴齐师兄的论文思路,通过事先简历网格距离矩阵,来计算网格间距离。
参考距离:44°附近的网格距离 其误差在6%内
4”层级以下均可以均分,所以存储4”对应层级的网格宽度
通过事先建立的经向、纬向网格距离矩阵 来计算网格间的距离
通过不断调用对应数列中的值 来叠加两个网格间的距离、
针对不同层级的网格 可以通过该层级的网格宽度进行父子关系运算。
其实质为 预先判断网格是否为空,而不采取计算的方式 空间换时间
判断网格是否真实
利用上一篇文章提到的 JE(Code) 算子同样可以判断网格是否真实
20160728