Garis lingkaran besar dalam proyeksi Equirectangular

12

Hanya untuk memastikan bahwa saya berada di jalur yang benar:

Apakah semua lingkaran besar di bola dan dalam proyeksi berbentuk persegi panjang (mis. Lintang, bujur) berpasangan:

  1. meridian (yaitu pergi ke kutub)
  2. dari bentuk tan latitude = sin360(longitude + rotation) * amplitude + offset

(dengan batasan tambahan pada kombinasi offset / amplitudo - jelas, semua jalur lingkaran besar dengan amplitudo 0 juga memiliki offset 0 - khatulistiwa).

Atau adakah jalur lingkaran besar yang tidak cocok dengan skema ini (sekali lagi, hanya dalam sistem koordinat garis bujur, bukan pada proyeksi peta lainnya).

Catatan: Saya menambahkan hal di tanatas setelah memposting pertanyaan, sebagai reaksi terhadap balasan yang sangat baik kepada para penulis. Ternyata itu offsetselalu 0.

Erich Schubert
sumber
Formulir # 2 bukan merupakan kumpulan pasangan (lintang, bujur). Apa artinya? Dan mengapa itu tergantung pada tiga parameter ( rotation,, amplitudedan offset) ketika lingkaran besar secara alami hanya memiliki dua parameter (masing-masing sesuai dengan sepasang titik yang berlawanan secara diametris yang "kutub" dengannya)?
whuber
Ya, ada yang mubazir, tapi formula saya belum siap. Sebagaimana dicatat, amplitude==0menyiratkan offset=0; keduanya jelas digabungkan. Lihat pertanyaan terbaru untuk yang hilang latitudeuntuk membuat hubungan terbentuk dengan baik.
Erich Schubert

Jawaban:

11

Meskipun geodesik memang terlihat sedikit seperti gelombang sinus di beberapa proyeksi, rumusnya salah.

Berikut adalah salah satu geodesik dalam proyeksi Equirectangular. Jelas itu bukan gelombang sinus:

masukkan deskripsi gambar di sini

(Gambar latar belakang diambil dari http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg .)

Karena semua proyeksi Equirectangular adalah transformasi affine dari yang satu ini (di mana koordinat x adalah garis bujur dan koordinat y adalah garis lintang), dan transformasi affine dari gelombang sinus masih merupakan gelombang sinus, kita tidak dapat mengharapkan adanya geodesi dalam bentuk apa pun dari Proyeksi Equirectangular menjadi gelombang sinus (kecuali untuk Equator, yang diplot sebagai garis horizontal). Jadi mari kita mulai dari awal dan menyusun formula yang benar.

Biarkan persamaan geodesik seperti itu berada dalam bentuk

latitude = f(longitude)

untuk fungsi f dapat ditemukan. (Pendekatan ini telah menyerah pada meridian, yang tidak dapat ditulis dalam bentuk seperti itu, tetapi sebaliknya bersifat umum). Konversi ke koordinat Kartesius 3D (x, y, z) memberikan

x = cos(l) cos(f(l))
y = sin(l) cos(f(l))
z = sin(f(l))

di mana l adalah garis bujur dan jari-jari satuan diasumsikan (tanpa kehilangan sifat umum). Karena geodesik pada bola bersinggungan dengan bidang (melewati pusatnya), harus ada vektor konstan (a, b, c) - yang diarahkan antara kutub geodesik - yang dengannya

a x + b y + c z = 0

tidak peduli berapa nilai l mungkin. Memecahkan untuk f (l) memberi

f(l) = ArcTan(-(a cos(l) + b sin(l)) / c)

asalkan c bukan nol. Terbukti, ketika c mendekati 0, kita memperoleh dalam batas sepasang meridian berbeda 180 derajat - tepatnya geodesik yang kita tinggalkan sejak awal. Jadi semuanya baik-baik saja. Ngomong-ngomong, meskipun terlihat, ini hanya menggunakan dua parameter yang sama dengan a / c dan b / c.

Perhatikan bahwa semua geodesik dapat diputar hingga melintasi garis khatulistiwa pada garis bujur nol derajat. Ini menunjukkan bahwa f (l) dapat ditulis dalam bentuk f0 (l-l0) di mana l0 adalah garis bujur dari persimpangan khatulistiwa dan f0 adalah ekspresi dari persilangan geodesik di Meridian Perdana. Dari sini kita mendapatkan formula yang setara

f(l) = ArcTan(gamma * sin(l - l0))

di mana -180 <= 10 <180 derajat adalah garis bujur dari persimpangan khatulistiwa (saat geodesik memasuki Belahan Bumi Utara saat bepergian ke arah timur) dan gamma adalah bilangan real positif. Ini tidak termasuk pasangan meridian. Ketika gamma = 0 itu menunjuk Khatulistiwa dengan titik awal di bujur l0; kita mungkin selalu mengambil l0 = 0 dalam kasus itu jika kita menginginkan parameterisasi yang unik. Masih ada dua parameter, yang diberikan oleh l0 dan gamma saat ini.


Mathematica 8.0 digunakan untuk membuat gambar. Bahkan, itu menciptakan "manipulasi dinamis" di mana vektor (a, b, c) dapat dikontrol dan geodesik yang sesuai langsung ditampilkan. (Itu sangat keren.) Pertama kita mendapatkan gambar latar belakang:

i = Import[
   "http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/\
    Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg"]

Ini adalah kode secara keseluruhan:

Manipulate[
 {a, b, c} = {Cos[u] Cos[v], Sin[u] Cos[v], Sin[v]};
 Show[Graphics[{Texture[i], 
    Polygon[{{-\[Pi], -\[Pi]/2}, {\[Pi], -\[Pi]/2}, {\[Pi], \[Pi]/2}, {-\[Pi], \[Pi]/2}}, 
     VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}], 
  Plot[ArcTan[(a Cos[\[Lambda]] + b Sin[\[Lambda]]) / (-c)], {\[Lambda], -\[Pi], \[Pi]}, 
   PlotRange -> {Automatic, {-\[Pi]/2, \[Pi]/2}}, PlotStyle -> {Thick, Red}]],
   {u, 0, 2 \[Pi]}, {v, -\[Pi]/2, \[Pi]}]
whuber
sumber
Terima kasih. Saya kehilangan itu di arctansuatu tempat. Kira saya mulai dengan arctan latitudesuatu tempat.
Erich Schubert
Saya berharap bisa memilih ini lebih dari sekali!
Ian Turton