||
在用GPS坐标计算空间两点的距离时,发现R语言中数字精度有问题。
根据经纬度计算距离的公式在这里:http://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html
简单来说,首先计算C,然后计算Distance
C =sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB)
Distance= R*Arccos(C)*Pi/180
同一个点到它自身的距离肯定是0,这时C=1,但是R语言中,这时候的C并不真正等于1(事实上是大于1的),这样在求arccos(C)的时候就会产生na
我采用的解决的方法是
ifelse(dist_c>= 1, dist_c <- 1, dist_c <- dist_c)
即对于大于等于1的c,直接设为1,否则保持不变。
参考:http://stackoverflow.com/questions/14026297/acos1-returns-nan-for-some-values-not-others
这里提到用pmin(),似乎没有解决我的问题
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-20 03:35
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社