حساب خطوط الطول / الغاز الطبيعي المسال من زوايا تراكب الأرض من KML ملف

StackOverflow https://stackoverflow.com/questions/1624574

  •  06-07-2019
  •  | 
  •  

سؤال

ولست بحاجة للعثور على زوايا في خطوط الطول / الغاز الطبيعي المسال من تراكب الأرض معين في ملف KML إما في بي أو جافا سكريبت.

وأي بمعنى. لمثال محدد لست بحاجة للحصول من:

  <LatLonBox>
    <north>60.406505416667</north>
    <south>60.400570555556</south>
    <east>5.3351572222222</east>
    <west>5.3190577777778</west>
    <rotation>3.7088732260919</rotation>
  </LatLonBox>

لإحداثيات الزاوية

SW: 60.400316388889;5.3194425
SE: 60.400824722222;5.3355405555556
NE: 60.406759444444;5.3347738888889
NW: 60.406251388889;5.3186730555556

ويمكنني الحصول على وسيلة أخرى (حوالي على الأقل، رمز PHP تعطى) من قبل

$w=($nw_lng+$sw_lng)/2;
$e=($ne_lng+$se_lng)/2;
$n=($ne_lat+$nw_lat)/2;
$s=($se_lat+$sw_lat)/2;
$rot= rad2deg (atan ( ( $nw_lng - $sw_lng ) / ($sw_lat - $nw_lat ) / 2  ) );

وينبغي أن يكون من السهل الحصول على ظهره، ولكن لقد استعملت ساعات لهذا دون الوصول إلى هناك. أي نصائح؟

هل كانت مفيدة؟

المحلول

وتحتاج إلى استخدام كروية علم المثلثات أو جزء من <لأ href = "HTTP: / /en.wikipedia.org/wiki/Spherical_geometry "يختلط =" نوفولو noreferrer "> كروية الهندسة للحصول على دقة كاملة. ومع ذلك، منذ كنت تتعامل فقط مع قطعة صغيرة من المجال، والهندسة الإقليدية تفعل إذا كنت تتذكر شيئا واحدا.

وكما يزيد من الطول وخطوط العرض الحصول على أقرب معا. على سبيل المثال، بالقرب من القطب الشمالي، وخطوط العرض ولمس تقريبا. لذلك تشترط الخلافات خط العرض، وتناقص لهم من قبل mulitlying بعامل كوس (خطوط الطول). من شأنها أن تعطيك جيدة بما فيه الكفاية دقة عن تطبيقك.

 $n = 60.406505416667;
 $s = 60.400570555556;
 $e = 5.3351572222222;
 $w = 5.3190577777778;
 $rotn = 3.7088732260919;

 $a = ($e + $w) / 2.0;
 $b = ($n + $s) / 2.0;
 $squish = cos(deg2rad($b));
 $x = $squish * ($e - $w) / 2.0;
 $y = ($n - $s) / 2.0;

 $ne = array(
   $a + ($x * cos(deg2rad($rotn)) - $y * sin(deg2rad($rotn))) /$squish,
   $b + $x * sin(deg2rad($rotn)) + $y *cos(deg2rad($rotn))
   );
 $nw = array(
   $a - ($x * cos(deg2rad($rotn)) + $y * sin(deg2rad($rotn))) /$squish,
   $b - $x * sin(deg2rad($rotn)) + $y *cos(deg2rad($rotn))
   );
 $sw = array(
   $a - ($x * cos(deg2rad($rotn)) - $y * sin(deg2rad($rotn))) /$squish,
   $b - $x * sin(deg2rad($rotn)) - $y *cos(deg2rad($rotn))
   );
 $se = array(
   $a + ($x * cos(deg2rad($rotn)) + $y * sin(deg2rad($rotn))) /$squish,
   $b + $x * sin(deg2rad($rotn)) - $y *cos(deg2rad($rotn))
   );
 print_r(array(
 'sw'=>$sw,
 'se'=>$se,
 'ne'=>$ne,
 'nw'=>$nw,
 ));

وبلدي $squish المتغير هو كوس (اللات) التي ذكرتها. ودي السحق هناك بالنسبة للجزء نسبي من أطوال الأفقية. الجدول شرط يبدو مثل هذا:

NE: (a + x cos A - y sin A, b + x sin A + y cos A)
NW: (a - x cos A - y sin A, b - x sin A + y cos A)
SW: (a - x cos A + y sin A, b - x sin A - y cos A)
SE: (a + x cos A + y sin A, b + x sin A - y cos A)

وربما tttppp يمكن أن تفسر الاختلافات من الجدول tttppp ل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top