Diberi garis di permukaan bumi, bagaimana saya membuat garis yang tegak lurus terhadapnya?

9

Diberi garis di permukaan bumi, bagaimana saya membuat garis yang tegak lurus terhadapnya?

Mohon maaf jika ini adalah pertanyaan yang sangat sederhana. Saya pikir ini akan menjadi tugas yang mudah, tetapi terbukti kontra-intuitif.

Saya mulai dengan garis biru pada gambar di bawah ini (lihat tautan - Saya belum dapat mengunggah angka). Saya menemukan garis tegak lurus dengan menghitung gradien garis biru (m), kemudian memplot garis lain (hijau) dengan gradien -1 / m. Ketika saya memplot garis dalam Matlab (menggunakan 'plot' dan 'sumbu sama'), mereka terlihat tegak lurus, seperti yang diharapkan.

http://imgur.com/7qMkx

Namun, ketika saya mengekspor baris ini ke Google Earth (menggunakan KML Toolbox), mereka tidak lagi terlihat tegak lurus (lihat tautan di bawah; garis yang lebih pendek adalah garis biru dari gambar sebelumnya).

http://imgur.com/ncJQ7

Saya mengerti bahwa hal-hal aneh terjadi pada permukaan melengkung, tetapi saya pikir garis-garisnya setidaknya harus terlihat tegak lurus secara lokal. Saya menduga ini ada hubungannya dengan proyeksi di Google Earth - khususnya, fakta bahwa sel-sel kisi tampaknya memiliki panjang sisi yang hampir sama, namun tepi longitudinal memiliki panjang = 1 derajat, sedangkan tepi lintang memiliki panjang = 0,5 gelar.

Jadi, dalam ringkasan:

  • Apakah metode saya menemukan garis tegak lurus valid pada permukaan melengkung? (yaitu, merencanakan garis dengan gradien -1 / m)
  • pada gambar Google Earth, apakah garis tegak lurus terlihat seperti yang diharapkan, atau ada sesuatu yang aneh terjadi?

MEMPERBARUI:

Untuk memberikan lebih banyak konteks: Saya melihat data radar yang diambil dari pesawat. Area multi-warna adalah 'petak', di mana pengamatan telah direkam. Garis biru yang saya mulai dengan penjelasan di atas sejajar dengan petak: ini adalah garis penerbangan pesawat (pesawat bergerak ke arah barat daya). Radar melihat ke arah orthogonal ke garis penerbangan, di sebelah kiri. Saya mencoba menggambar garis tegak lurus terhadap garis penerbangan; ini harus menjadi arah yang dilihat radar, dan harus memotong petak dengan rapi. Seperti yang Anda lihat, ini bukan masalahnya.

masukkan deskripsi gambar di sini

Paul Keating
sumber
2
Sebenarnya, Google menggambarkan sudut dengan benar, sedangkan plot Matlab Anda tidak ...
whuber
Terima kasih atas jawabannya, wah. Apakah itu berarti garis yang saya hitung sebenarnya tidak tegak lurus dengan aslinya? Atau apakah itu berarti bahwa cara saya melihat garis di Matlab entah bagaimana salah? Saya menggunakan perintah 'sama dengan' di Matlab untuk meyakinkan diri sendiri bahwa garis-garisnya tegak lurus, tetapi saya berharap ini tidak akan mewakili kelengkungan bumi dengan tepat.
Paul Keating
2
Penafsiran pertama Anda benar, Paul. Menggunakan (lon, lat) seolah-olah itu adalah koordinat Kartesius mendistorsi arah dengan begitu menyedihkan sehingga sebagian besar sudut tampak terdistorsi. Karena itu, menggunakan rumus Cartesian -1 / m bahkan tidak akan membuat Anda dekat dengan sudut kanan kecuali dalam beberapa arah yang beruntung (atau di Equator). Untuk memberikan metode alternatif, akan sangat membantu untuk mengetahui "garis" seperti apa yang Anda inginkan (garis geodesik atau rhumb, misalnya), tujuan Anda dalam memplotnya, dan berapa lama akan diperlukan. (Panjang pendek memungkinkan perkiraan sederhana untuk digunakan.)
whuber
2
BTW, Anda dapat belajar banyak tentang masalah ini dengan membaca beberapa utas di situs kami tentang proyeksi konformal .
whuber
Terima kasih banyak, Whuber. Sangat menarik. Saya telah memberikan lebih banyak konteks dalam deskripsi masalah di atas. Panjang yang saya butuhkan relatif pendek (lebar petak, ditunjukkan di atas, yang merupakan beberapa persepuluh derajat) sehingga setiap saran tentang perkiraan yang valid akan sangat dihargai. Terima kasih juga atas tautannya - saya akan memeriksanya.
Paul Keating

Jawaban:

10

Prinsip elegan memberikan jawaban sederhana:

Semua titik pada permukaan lengkung halus rata pada skala yang cukup besar.

Ini berarti bahwa setelah affine perubahan koordinat (biasanya hanya melibatkan penyelarasan ulang salah satunya), kita dapat menggunakan rumus geometri Euclidean, seperti Teorema Pythagoras untuk menghitung jarak dan rumus kemiringan timbal balik negatif untuk menemukan perpendiculars.

Dengan koordinat lintang dan bujur di bola (jauh dari kutub, di mana bujur menjadi tunggal), yang perlu kita lakukan adalah mengubah skala arah timur-barat untuk mencerminkan panjang menyusut derajat bujur ketika seseorang mendekati kutub. Dengan model bola bumi, susut itu diberikan oleh kosinus garis lintang. Ini hanyalah perubahan dalam rasio aspek plot, tidak lebih.

Ini berfungsi untuk wilayah yang memanjang tidak lebih dari beberapa derajat garis lintang utara-selatan dan tidak mendekati kedua kutub.

Karena itu, yang harus Anda lakukan adalah:

  1. Lipat gandakan semua garis bujur dengan cosinus garis lintang yang khas

  2. Hitung garis tegak lurus.

  3. Batalkan penyesuaian koordinat.

Misalnya, misalkan lintasan pesawat mengambilnya dari (lon, lat) = (-78, 40) ke (-79, 41). Kita dapat mengambil garis lintang tipikal antara 40 dan 41, seperti 40.5.

Langkah 1 Koordinat yang disesuaikan adalah (-78 * cos (40.5), 40) = (-59.31167, 40) dan (-79 * cos (40.5), 41) = (-60.07207, 41).

Langkah 2 Pertanyaan ini mengusulkan melakukan ini menggunakan metode kemiringan timbal balik negatif. Itu akan benar, tetapi dalam beberapa kasus akan gagal (di mana kemiringan tidak terbatas). Lebih umum dan lebih kuat untuk menggunakan aritmatika vektor. Begini cara perhitungannya.

Vektor arah untuk jalur penerbangan adalah perpindahan dari awal hingga akhir,

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

Mengubah vektor apa pun (x, y) pada sudut kanan searah jarum jam menghasilkan (y, -x), di mana arah tegak lurus ke kanan adalah

w = (1.0, 0.7604).

Menurut Teorema Pythagoras, panjang vektor ini adalah akar kuadrat dari jumlah kuadrat dari koefisiennya,

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

Mari kita bergerak, katakanlah, 0,2 derajat di sepanjang vektor ini dari titik awal penerbangan pesawat. Awal adalah di (-59.31167, 40) dan perpindahannya adalah 0.2 / | w | kali w, berakhir pada

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

Langkah 3 Untuk membatalkan penyesuaian, bagi koordinat pertama dari setiap titik yang dihasilkan oleh cosinus yang sama yang digunakan pada Langkah 1:

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

Jika Anda memplot poin-poin ini menggunakan rasio aspek 1: 1, sudut akan tampak lebih tumpul daripada sudut yang tepat. Tetapi jika Anda mengubah rasio aspek ke 1: cos (40.5) (sekitar 4: 3), sudut akan tampak benar menjadi 90 derajat. Saat Anda memplot poin menggunakan proyeksi konformal apa pun - termasuk Google Mercator - sudutnya juga akan benar.

whuber
sumber
2
Ini fantastis, Whuber. Terima kasih banyak. Ini adalah penjelasan yang sangat jelas tentang di mana saya salah, dan bagaimana saya bisa memperbaiki masalahnya. Saya akhirnya menggunakan fungsi 'azimuth' dan 'perhitungan' Matlab untuk mendapatkan garis tegak lurus, tapi ada baiknya untuk melihat penjelasan prinsip pertama yang lebih rinci tentang cara melakukan ini. Terimakasih banyak.
Paul Keating