現在、Python/Numpy を使用して地理/GPS データを処理しています (大好きです!)。座標ペアで定義された地理的ポイント間の距離を計算する繰り返しのタスクに直面していますpn = [lon, lat]
。
私はこのように使用する関数を持っています:dist = geodistance(p1, p2)
これは線形代数 (ベクトル減算/差分) のユークリッド距離に類似していますが、長方形のユークリッド空間ではなく測地 (球) 空間で発生します。
プログラムでは、ユークリッド距離は次の式で与えられます。
dist = ((p2[0] - p1[0])**2 + (p2[1] - p1[1])**2)**0.5
数学的には、これは「慣用的な」(より適切な言葉がないため) 文と同等です。
dist = p1 - p1 # the "norm" of the vector difference, subtraction.
現在、私は次のように距離を取得しています。
p1 = [-51.598354,-29.953363]
p2 = [-51.598701,-29.953045]
dist = geodistance(p1, p2)
print dist
>> 44.3904032407
私はこれをしたいと思います:
print p2 - p1 # these points now are from some fancy datatype
>> 44.3904032407
そして最終目標:
track = numpy.array([[-51.203018 -29.996149]
[-51.203018 -29.99625 ]
[-51.20266 -29.996229]
[-51.20229 -29.996309]
[-51.201519 -29.99416 ]], dtype=fancy) # (**) or something like
print numpy.diff(track)
>> ndarray([[ 0. ]
[ 7.03531252]
[ 39.82663316]
[ 41.50958596]
[ 172.49825765]])
同様に、2 つのオブジェクトを取りdatetime
、それらを減算すると、演算はオブジェクトを返しtimedelta
ます。2 つの座標を減算し、結果として測地線距離を取得したいと考えています。
クラスが機能するかどうかは疑問ですが、dtype(たとえば、float32の「サブタイプ」)は、リストから配列を作成するときに非常に役立ちます(**これがxmlファイルから読み取る方法です)。
どうもありがとう!