1

ポイントABとCの位置に基づいて、ポイントDの位置を計算したいと考えています.Dに対するポイントAの角度と、Bに対するDとDに対するCの角度を知っています.

実際には、ポイント AB と C は、私が GPS でマークした 3 つの場所であり、ポイント D は、GPS の場所を取得しようとしている電波望遠鏡を装着した動物の場所です。無線首輪を付けた動物が北に対してどの方向を向いているかを知ることで得られる角度。

私はアルゴリズムを書きましたが、GPS 座標をそのままアルゴリズムに入れることはできず、それらを変換してから再度変換する必要があることはわかっています。私はグーグルで調べてきましたが、少し混乱しています。これには、デカルトまたはUTMの使用がより適切ですか?

GPS を UTM に変換するにはどうすればよいですか? 検索しましたが、少し混乱しています。一部の変換では、度分と秒が表示されます。私の GPS では、これに追加の数値が表示されるようです。つまり、N 68.21.446 と `w 12.14.284 です。

関連する場合は、計算を少し簡単にするために、面積が2次元であると想定しました。

必要かどうかはわかりませんが、コードは次のとおりです。

#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 座標に変換する前に、座標を 10 進度に変換する必要があります。

では、あなたの "N 68.21.446" は 10 進度で何度ですか? よくわかりません。68 + (21/60) ですが、最後の数字を調べる必要があります。それは、a) 1000 分の 1 秒 (最初の桁が 6 以上の場合、その可能性が高いと思われます) または b) 2 桁の秒、次に 10 分の 1 秒です。

a) の場合、N 68.21.446 は 68 + (21/60) + (446/1000)/60 度です。

b) の場合、N 68.21.446 は 68 + (21/60) + (44/3600) + (6/36000) 10 進度です。

分割するには、いくつかの文字列一致関数を使用する必要があります。

10 進度を取得したら、それらの数値を使用して空間ポイント データフレームを作成し、その CRS を GPS 座標系 (おそらく EPSG コード 4326) に設定し、使用spTransformして UTM コードに変換します - 経度に適したものを使用します。

ホッキョクグマやコウテイ ペンギンがいて、距離が数十 km でない限り、UTM 座標は通常の正方格子の適切な近似値になるはずです。エラーの大きな原因は、角度の測定値です。

その件に関して、私は無線方向探知装置からの位置探知を行うための R パッケージの作成を開始し、文献にある統計手法のいくつかを実装しました。ここで見つけることができます: https://github.com/barryrowlingson/telemetr

そのパッケージについて何かコメントがあれば、StackOverflow ではなく、その github サイトから私に連絡してください。

于 2013-09-11T06:59:04.813 に答える