我想根据点A B和C的位置来计算点D的位置,其中我知道点A相对于D和D相对于B和c相对于D的角度。
实际上,A B和C点是我用GPS标记的3个位置,D点是我试图获得GPS位置的放射线照相动物的位置。通过知道无线电项圈动物的方向相对于北方而获得的角度。
我已经编写了算法,但我知道我不能直接将GPS坐标放入其中,并且必须将它们转换为然后再转出。我一直在谷歌搜索,我有点困惑,笛卡尔或UTM的使用更适合这个吗?
如何将GPS转换为UTM?我搜索过,我有点困惑。一些转换谈论度数分钟和秒,我的GPS似乎给了我一个额外的数字,所以它的N 68.21.446和`W 12.14.284
考虑到它的相关性,我假设在我的计算中该区域是2d以使事情变得更简单。
感谢您的帮助。 这是代码虽然我不确定它是否需要:
#10/09/2013
#Enter your points for locations A B and C
#AN and AW is your first GPS points AA is the angle
AN<-10
AW<-0
AA<-45
#BN and BW are your second
BN<-10
BW<-0
BA<-0
#CN and CW are your third
CN<-0
CW<-10
CA<-90
#Convert these to ?
#work out distance
#For each co ordinate and angle, you need to calculate y=mx+c to make a line
#From these 3 lines, you can work out where they intersect
#If the angle is 0 it wont work, so make it very close to 0.
if(AA==0) {AA<-0.00001}
if(BA==0) {BA<-0.00001}
if(CA==0) {CA<-0.00001}
#Convert all angles to radians
AAr<-(AA*pi)/180
BAr<-(BA*pi)/180
CAr<-(CA*pi)/180
#Calculate M which is 1/tan(b)
AM<-1/tan(AAr)
BM<-1/tan(BAr)
CM<-1/tan(CAr)
#Calculate C the equation constant
#c=y-m*x
AC<-AW-AM*AN
BC<-BW-BM*BN
CC<-CW-CM*CN
#Caclulate intersections
#A and B
XAB<-(AC-BC)/(BM-AM)
YAB<-(AM*XAB+AC)
#B and C
XBC<-(BC-CC)/(CM-BM)
YBC<-(BM*XBC+BC)
#C and A
XAC<-(CC-AC)/(AM-CM)
YAC<-(CM*XAC+CC)
#Work out average of these 3 points
(XofABC<-(XAB+XBC+XAC)/(3))
(YofABC<-(YAB+YBC+YAC)/(3))
#Convert this back into GPS coordinate
`
答案 0 :(得分:0)
UTM对于这种操作非常方便,因为它们基于方形映射数据并且是平面2D x-y笛卡尔系统。
但要注意它们的局限性,特别是对高纬度地区。请注意,您选择的系统与您的位置相关 - 如果您使用错误的系统,某些基准系统会非常扭曲。
不确定为什么在R?中标记了这个?
代码看起来应该没问题。
答案 1 :(得分:0)
使用spTransform
包中的rgdal
函数完成坐标系转换。在将坐标转换为UTM坐标之前,您需要将坐标转换为十进制度数。
那么,你的“N 68.21.446”十进制度是多少?嗯,我不确定。它的68 +(21/60),但你需要找出最后一个数字是什么。它可能是a)千分之一秒(如果它的第一个数字是6或更多那么看起来很可能)或b)两位数秒,然后是十分之几秒。
对于a)N 68.21.446则是68 +(21/60)+(446/1000)/ 60十进制度。
对于b)N 68.21.446则是68 +(21/60)+(44/3600)+(6/36000)十进制度。
你必须使用一些字符串匹配函数来拆分它。
获得十进制度数后,使用这些数字创建空间点数据框,将其CRS设置为GPS坐标系(可能是EPSG代码4326),然后使用spTransform
转换为您的UTM代码 - 使用适合你经度的那个。
除非它的北极熊或帝企鹅和距离不是几十公里,否则UTM坐标应该是一个很好的近似于正方形网格。更大的误差来源是你的角度测量!
关于这个问题,我确实开始编写一个R包,用于通过无线电测向设备进行定位,实现文献中的一些统计方法。你会在这里找到:https://github.com/barryrowlingson/telemetr
如果您对该软件包有任何意见,请通过该github网站向我发送,而不是在StackOverflow上。