ให้เส้นบนพื้นผิวโลกฉันจะวางเส้นตั้งฉากกับมันได้อย่างไร


9

ให้เส้นบนพื้นผิวโลกฉันจะวางเส้นตั้งฉากกับมันได้อย่างไร

ขอโทษถ้านี่เป็นคำถามง่าย ๆ ฉันคิดว่านี่จะเป็นงานที่ตรงไปตรงมา แต่ก็พิสูจน์ได้ว่าใช้งานง่าย

ฉันเริ่มต้นด้วยเส้นสีฟ้าในภาพด้านล่าง (ดูลิงค์ - ฉันยังไม่สามารถอัพโหลดตัวเลขได้) ฉันพบเส้นตั้งฉากโดยการคำนวณความชันของเส้นสีน้ำเงิน (m) จากนั้นวางแผนอีกเส้น (สีเขียว) ด้วยการไล่ระดับสี -1 / m เมื่อฉันพล็อตบรรทัดใน Matlab (โดยใช้ 'พล็อต' และ 'ความเท่ากันของแกน') พวกมันดูตั้งฉากตามที่คาดไว้

http://imgur.com/7qMkx

อย่างไรก็ตามเมื่อฉันส่งออกบรรทัดเหล่านี้ไปยัง Google Earth (โดยใช้กล่องเครื่องมือ KML) พวกเขาจะไม่ดูตั้งฉากอีกต่อไป (ดูลิงค์ด้านล่าง; บรรทัดที่สั้นกว่าคือเส้นสีฟ้าจากรูปก่อนหน้า)

http://imgur.com/ncJQ7

ฉันเข้าใจว่าสิ่งแปลก ๆ เกิดขึ้นบนพื้นผิวโค้ง แต่ฉันคิดว่าอย่างน้อยก็ควรมองในแนวตั้งฉากในพื้นที่ ฉันสงสัยว่าสิ่งนี้เกี่ยวข้องกับการฉายภาพใน Google Earth โดยเฉพาะความจริงที่ว่าเซลล์กริดดูเหมือนจะมีความยาวด้านที่คล้ายกันโดยประมาณ แต่ขอบตามยาวมีความยาว = 1 องศาในขณะที่ขอบ latitudinal มีความยาว = 0.5 ระดับ.

ดังนั้นโดยสรุป:

  • วิธีการของฉันในการหาเส้นตั้งฉากนั้นใช้ได้บนพื้นผิวโค้งหรือไม่ (เช่นการพล็อตบรรทัดที่มีการไล่ระดับสี -1 / m)
  • ในภาพ Google Earth เส้นตั้งฉากดูตามที่คาดไว้หรือเป็นสิ่งที่แปลกไปไหม

UPDATE:

เพื่อให้บริบทเพิ่มเติม: ฉันกำลังดูข้อมูลเรดาร์ที่นำมาจากเครื่องบิน พื้นที่หลายสีเป็น 'แนว' ที่บันทึกการสังเกต เส้นสีฟ้าที่ฉันเริ่มด้วยคำอธิบายข้างต้นขนานกับแนว: นี่คือสายการบินของเครื่องบิน (เครื่องบินเคลื่อนที่ไปในทิศตะวันตกเฉียงใต้ประมาณ เรดาร์จะมองไปในทิศทางมุมฉากกับสายการบินทางด้านซ้าย ฉันพยายามวาดเส้นตั้งฉากกับสายการบิน นี่ควรเป็นทิศทางที่เรดาร์มองและควรตัดแนวอย่างประณีต อย่างที่คุณเห็นนี่ไม่ใช่กรณี

ป้อนคำอธิบายรูปภาพที่นี่


2
ที่จริงแล้ว Google แสดงมุมได้อย่างถูกต้องในขณะที่พล็อต Matlab ของคุณไม่ได้ ...
whuber

ขอบคุณสำหรับการตอบกลับ นั่นหมายความว่าเส้นที่ฉันคำนวณไม่ได้ตั้งฉากกับของจริงเหรอ? หรือหมายความว่าวิธีที่ฉันดูบรรทัดใน Matlab นั้นผิดพลาดอย่างใด? ฉันใช้คำสั่ง 'เทียบเท่าแกน' ใน Matlab เพื่อโน้มน้าวตัวเองว่าเส้นตั้งฉาก แต่ฉันคาดว่าสิ่งนี้จะไม่แสดงถึงความโค้งของโลก
Paul Keating

2
การตีความครั้งแรกของคุณถูกต้อง Paul การใช้ (lon, lat) ราวกับว่าพวกเขาเป็นพิกัดคาร์ทีเซียนบิดเบือนทิศทางดังนั้นอย่างยิ่งที่มุมส่วนใหญ่บิดเบือนอย่างเห็นได้ชัด ดังนั้นการใช้สูตรคาร์ทีเซียน -1 / m จะไม่ทำให้คุณใกล้เคียงกับมุมฉากยกเว้นในทิศทางที่โชคดีสองทาง (หรือที่เส้นศูนย์สูตร) เพื่อให้วิธีการทางเลือกมันจะช่วยให้รู้ว่า "เส้น" ชนิดใดที่คุณต้องการ (เช่นเส้นโค้งหรือเส้นโค้งตัวอย่าง) จุดประสงค์ของคุณในการวางแผนและระยะเวลาที่จะต้องใช้ (ความยาวสั้นอนุญาตให้ใช้การประมาณแบบง่าย)
whuber

2
BTW คุณสามารถเรียนรู้มากมายเกี่ยวกับปัญหาเหล่านี้ได้โดยอ่านหัวข้อในเว็บไซต์ของเราเกี่ยวกับการคาดการณ์ที่สอดคล้องกัน
whuber

ขอบคุณมาก ๆ น่าสนใจมาก. ฉันได้ให้บริบทเพิ่มเติมในคำอธิบายปัญหาข้างต้น ความยาวที่ฉันต้องการนั้นค่อนข้างสั้น (ความกว้างของแถบที่แสดงด้านบนซึ่งเป็นไม่กี่สิบองศา) ดังนั้นคำแนะนำใด ๆ เกี่ยวกับการประมาณที่ถูกต้องจะได้รับการชื่นชมมาก ขอบคุณสำหรับลิงค์ - ฉันจะตรวจสอบ
Paul Keating

คำตอบ:


10

หลักการที่สง่างามให้คำตอบง่ายๆ:

ทุกจุดบนพื้นผิวโค้งเรียบราบเรียบในขนาดใหญ่พอสมควร

ซึ่งหมายความว่าหลังจากเลียนแบบการเปลี่ยนพิกัด (โดยปกติจะเกี่ยวข้องกับการลดขนาดของหนึ่งในนั้น) เราสามารถใช้สูตรของเรขาคณิตแบบยุคลิดเช่นทฤษฎีบทพีทาโกรัสสำหรับการคำนวณระยะทางและสูตรเชิงลบ - ส่วนกลับ - ลาด

ด้วยพิกัดละติจูดและลองจิจูดบนทรงกลม (อยู่ห่างจากเสาซึ่งลองจิจูดกลายเป็นเอกพจน์) สิ่งที่เราต้องทำก็คือลดทิศทางทิศตะวันออก - ตะวันตกเพื่อสะท้อนความยาวของเส้นแวงที่หดตัวในระดับหนึ่งเมื่อเข้าใกล้เสา ด้วยแบบจำลองทรงกลมของโลกการหดตัวนั้นได้รับจากโคไซน์ของละติจูด นี่เป็นเพียงการเปลี่ยนแปลงอัตราส่วนของโครงเรื่องไม่มีอะไรเพิ่มเติม

สิ่งนี้ใช้ได้กับภูมิภาคที่ขยายละติจูดไม่เกินสองสามองศาเหนือ - ใต้และไม่เข้าใกล้ขั้วทั้งสอง

ดังนั้นสิ่งที่คุณต้องทำคือ:

  1. คูณลองจิจูดทั้งหมดด้วยโคไซน์ของละติจูดทั่วไป

  2. คำนวณเส้นตั้งฉาก

  3. เลิกทำการปรับพิกัด

ตัวอย่างเช่นสมมติว่าแทร็กของเครื่องบินนำมาจาก (lon, lat) = (-78, 40) ถึง (-79, 41) เราอาจใช้ละติจูดทั่วไปให้อยู่ระหว่าง 40 ถึง 41 เช่น 40.5

ขั้นตอนที่ 1 พิกัดที่ปรับคือ (-78 * cos (40.5), 40) = (-59.31167, 40) และ (-79 * cos (40.5), 41) = (-60.07207, 41)

ขั้นตอนที่ 2 คำถามเสนอให้ทำเช่นนี้โดยใช้วิธีลบความสัมพันธ์ซึ่งกันและกัน นั่นจะถูกต้อง แต่มันจะล้มเหลวในบางกรณี (ซึ่งความชันไม่สิ้นสุด) มันเป็นเรื่องทั่วไปและมีประสิทธิภาพมากกว่าในการใช้เลขคณิตของเวกเตอร์ นี่คือวิธีการคำนวณ

เวกเตอร์ทิศทางสำหรับเส้นทางของเที่ยวบินคือการกระจัดตั้งแต่ต้นจนจบ

v =  (-60.07207, 41) - (-59.31167, 40)
  =  (-0.7604, 1.0).

การหมุนเวกเตอร์ใด ๆ (x, y) ที่มุมขวาตามเข็มนาฬิกาจะสร้าง (y, -x) จากนั้นทิศทางตั้งฉากไปทางขวาคือ

w = (1.0, 0.7604).

ตามทฤษฎีบทพีทาโกรัสความยาวของเวกเตอร์นี้คือสแควร์รูทของผลรวมของกำลังสองของสัมประสิทธิ์

|w| = sqrt(1^2 + 0.7604^2) = 1.256268

ลองขยับสมมุติว่า 0.2 องศาตามเวกเตอร์นี้จากจุดเริ่มต้นของการบินของเครื่องบิน จุดเริ่มต้นอยู่ที่ (-59.31167, 40) และการกระจัดคือ 0.2 / | w | คูณ w, สิ้นสุดที่เวลา

(-59.31167, 40) + 0.2 / 1.256268 * (1.0, 0.7604) = (-59.15247  40.12106).

ขั้นตอนที่ 3 หากต้องการยกเลิกการปรับค่าให้แบ่งพิกัดแรกของคะแนนผลลัพธ์ใด ๆ ด้วยโคไซน์เดียวกันกับที่ใช้ในขั้นตอนที่ 1:

(-59.15247/cos(40.5), 40.12106) = (-77.79064, 40.12106)

หากคุณพล็อตจุดเหล่านี้โดยใช้อัตราส่วน 1: 1 มุมจะปรากฏเป็นป้านแทนที่จะเป็นมุมฉาก แต่ถ้าคุณเปลี่ยนอัตราส่วนภาพเป็น 1: cos (40.5) (ประมาณ 4: 3) มุมจะปรากฏอย่างถูกต้องเป็น 90 องศา เมื่อคุณพล็อตจุดโดยใช้เส้นโครงที่สอดคล้องกันรวมถึง Mercator ของ Google มุมก็จะถูกต้องเช่นกัน


2
นี่มันสุดยอดมาก ขอบคุณมาก ๆ. มันเป็นคำอธิบายที่ชัดเจนมากว่าฉันไปผิดทางไหนและฉันจะแก้ไขปัญหาได้อย่างไร ฉันลงเอยด้วยการใช้ฟังก์ชัน 'azimuth' และ 'reckon' ของ Matlab เพื่อให้ได้เส้นตั้งฉาก แต่มันก็ดีที่ได้เห็นรายละเอียดเพิ่มเติม ขอบคุณมาก.
Paul Keating
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.