كيفية العثور على نقطة في سطح الأرض مع إعطاء نقطة أصل ومسافة واتجاه (السمت)
-
06-07-2019 - |
سؤال
السؤال السابق "الجيولوجية الجيولوجية لإيجاد إحداثيات نقطة من موقع معروف عن طريق المسافة والمحمل" يسأل نفس الشيء ، ولكن الحل الموجود هو تقريب تقريبي. أريد حلًا أكثر دقة. أنا أقارن النتائج مع مسافة دائرة كبيرة الصيغ ، وهي واحدة من الأفضل المسافة الجغرافية الصيغ المعروفة.
المحلول
هذه هي أفضل صيغة رأيتها حتى الآن http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html
a, b = major & minor semiaxes of the ellipsoid
f = flattening (a−b)/a
φ1, φ2 = geodetic latitude
s = length of the geodesic
α1, α2 = azimuths of the geodesic (initial/final bearing)
tanU1 = (1−f).tanφ1 (U is ‘reduced latitude’)
cosU1 = 1/√(1+tan²U1), sinU1 = tanU1.cosU1 (trig identities; §6)
σ1 = atan2(tanU1, cosα1) (1)
sinα = cosU1.sinα1 (2)
cos²α = 1 − sin²α (trig identity; §6)
u² = cos²α.(a²−b²)/b²
A = 1+u²/16384.{4096+u².[−768+u².(320−175.u²)]} (3)
B = u²/1024.{256+u².[−128+u².(74−47.u²)]} (4)
σ = s / b.A (1st approximation), σ′ = 2π
while abs(σ−σ′) > 10-12 { (i.e. 0.06mm)
cos2σm = cos(2.σ1 + σ) (5)
Δσ = B.sinσ.{cos2σm + B/4.[cosσ.(−1 + 2.cos²2σm) − B/6.cos2σm.(−3 + 4.sin²σ).(−3 + 4.cos²2σm)]} (6)
σ′ = σ
σ = s / b.A + Δσ (7)
}
φ2 = atan2(sinU1.cosσ + cosU1.sinσ.cosα1, (1−f).√[sin²α + (sinU1.sinσ − cosU1.cosσ.cosα1)²]) (8)
λ = atan2(sinσ.sinα1, cosU1.cosσ − sinU1.sinσ.cosα1) (9)
C = f/16.cos²α.[4+f.(4−3.cos²α)] (10)
L = λ − (1−C).f.sinα.{σ+C.sinσ.[cos2σm + C.cosσ.(−1 + 2.cos²2σm)]} (difference in longitude) (11)
α2 = atan(sinα, −sinU1.sinσ + cosU1.cosσ.cosα1) (reverse azimuth) (12)
p2 = (φ2, λ1+L)
نصائح أخرى
كم تبعد هاتين النقطتين؟ أنا معجب باستخدام توقعات Gauss-Kruger ، والتي تعمل بشكل جيد إذا كانت النقطتان ضمن 100 ميل بحري أو نحو ذلك. إنه يتمتع بميزة السماح لك بالعمل مع علم المثلثات العادية في الفضاء المحلي ، ثم تحويل ذلك إلى الإحداثيات الجيوديسية.
إذا كانوا بعيدًا عن ذلك ، فأنا أعود إلى دائرة عظيمة ، ولكن مع دائرة نصف قطرها في دائرة نصف قطر انحناء الأرض في نقطة معينة على طول المحمل المطلوب ، محسوبة باستخدام WGS-84 الإهليلجي.