1

我想根据点 AB 和 C 的位置计算点 D 的位置,我知道点 A 相对于 D 和 D 相对于 B 和 c 相对于 D 的角度。

实际上,点 AB 和 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

`

4

2 回答 2

0

UTM 非常适合此类操作,因为它们基于方形映射基准并且是平面 2D xy 笛卡尔系统。

但要注意它们的局限性,尤其是在高纬度地区。请注意,您选择的系统与您所在的位置相关——如果您使用错误的系统,某些基准系统将会非常扭曲。

不知道为什么这在 R 中被标记?

代码看起来应该没问题。

于 2013-09-11T01:10:53.647 回答
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 上。

于 2013-09-11T06:59:04.813 回答