0

ポイント(座標)と見出し(方向/方位角)のデータベースがあります。kmlで見出し方向を指すパイ型セクター(LinearRing)を作成したいと思います。誰かがphpを使用してこれを構築する方法について何か提案がありますか?

4

1 に答える 1

0

OK、phpは私の強みではありません。これはあなたを助けるかもしれない疑似コードです(*)。

「半径 r の球で、指定された方位角と範囲で大円上の点を計算します。PHI、LAMBDA、PHI0、LAMBDA0、および AZ はラジアン単位の角度で、RNG は R と同じ単位を持つ距離です。」

INPUT: phi0, lambda0, az, rng, r
OUTPUT: phi,lambda 

rng = rng / r; // Convert the range to an angle on the sphere (in radians).

epsilon = 1.7453e-07; // Set tolerance
if(phi0 >= pi / 2 - epsilon) // starting at north pole
    az = pi; 
if(phi0 <= epsilon - pi / 2) // starting at south pole
    az = 0; 

// Calculate coordinates of great circle end point using spherical trig.
phi = asin( sin(phi0) * cos(rng) + cos(phi0) * sin(rng) * cos(az) );

lambda = lambda0 + atan2( sin(rng) * sin(az) , cos(phi0) * cos(rng) - sin(phi0) * sin(rng) * cos(az) );

phi0lambda0は初期座標で、azは進行方向です。パイの円セグメントを形成するポイントを取得するために、az +/- 特定の範囲を変化させます残りは簡単です。

(*) ソース: http://mind.cog.jhu.edu/courses/680/octave/Installers/Octave/Octave.OSX10.6/Applications/MATLAB_R2009b.app/toolbox/map/map/private/greatcirclefwd.m

于 2012-12-05T19:37:19.497 に答える