Metode untuk menaungi atau melapisi peta raster untuk memantulkan waktu dan cahaya sekitar

14
  • Saya memiliki raster siang hari di daerah studi saya.
  • Saya memiliki 20+ penghitung di area studi yang menghitung "barang" dengan cap waktu.
  • Menggunakan PyEphem I menentukan jenis cahaya sekitar untuk setiap titik data yang dikumpulkan.

Apa yang ingin saya lakukan:

  • Tambahkan overlay abu-abu / semi transparan untuk memantulkan cahaya sekitar (Dusk, Sunrise, day, sunset, dan dark).

  • Tujuan akhir: menghasilkan visualisasi berbasis waktu dari pengumpulan data yang menyoroti waktu hari itu. Atau dapat menghasilkan snapshot pada waktu tertentu dengan overlay warna yang tepat.

  • Pikirkan ini sebagai gambar:

dunia siang / malam sumber

dassouki
sumber
2
Jawaban tambahan (dengan kode Mathematica yang berfungsi ) muncul di Mathematica.stackexchange.com/questions/3326/… .
whuber

Jawaban:

9

Ringkasan

Mengingat posisi matahari, Anda dapat dengan mudah membuat kisi intensitas cahaya permukaan (mengabaikan efek atmosfer dan topografi) dalam koordinat lat-lon. Proyeksi ulang kisi itu seperti yang diinginkan dan tampilkan di peta.

Detail

Rumus adalah yang standar untuk koordinat bola: vektor satuan yang sesuai dengan koordinat bola (lon, lat) adalah

(cos(lon)cos(lat), sin(lon)cos(lat), sin(lat)).

Intensitas tergantung pada cosinus antara unit luar yang arahnya normal ("atas") dan arah ke matahari. Kosinus ini hanyalah produk titik dari dua vektor satuan tersebut. Yaitu, misalkan (x, y, z) menjadi vektor satuan yang menunjuk ke matahari (dalam koordinat geosentris), ubah geodetik (lat, lon) dari setiap titik pusat sel jaringan menjadi vektor satuan (xi, eta, zeta) , dan menghitung

(x,y,z) . (xi, eta, zeta) = x*xi + y*eta + z*zeta.

Hasil apa pun yang kurang dari 0 berhubungan dengan matahari yang tidak terlihat, jadi atur ini ke nol.

Catatan implementasi

Perhitungan ini sangat mudah dilakukan dengan aljabar peta, dimulai dengan kisi-kisi nilai (lat, lon) (begitulah cara saya melakukannya) atau dengan sepasang kisi, satu untuk garis lintang dan lainnya untuk garis bujur (yang adalah bagaimana Anda ingin memiliki untuk melakukannya dengan perangkat lunak ESRI, misalnya).

(Untuk membuat garis lintang atau garis bujur, masing-masing, membentuk koordinat y atau koordinat x, dalam koordinat geografis, lalu memproyeksikannya.) Dari perhitungan informasi awal ini, sekali dan untuk semua, tiga kotak [xi], [eta ], dan [zeta] (atau kisi tunggal bernilai vektor [xi, eta, zeta]) untuk mewakili arah ke atas pada sel kisi. Untuk posisi matahari mana pun, perhitungannya menjadi kombinasi linear sederhana dari [xi], [eta], dan [zeta] yang diberikan di atas; matahari menentukan koefisien x, y, dan z (tentu saja angka-angka saja).

Contoh

Berikut adalah peta dunia dalam proyeksi Plate Carree dari grid intensitas seperti itu (216 x 432 sel).

Intensitas

Meridian utama ada di tengah dan utara di atas, seperti biasa. Untuk perhitungan ini saya menetapkan vektor matahari sebanding dengan (0,6, -0,8, 0,5), untuk mendekati hari musim panas pada siang hari di atas lautan Atlantik tengah. (Dalam retrospeksi, nilai z 0,4 akan lebih realistis; matahari tidak pernah sampai sejauh ini ke utara.)

Overlay alfa (yang membuat area yang lebih cerah sedikit lebih transparan juga) pada peta berwarna Aster menghasilkan gambar ini.

Peta Dunia

Seiring perubahan waktu, vektor matahari (x, y, z) akan dihitung ulang, yang membutuhkan perhitungan ulang dari grid intensitas. Ini perhitungan cepat. Anda tidak perlu resolusi tinggi, baik: Saya hanya menggunakan sepersepuluh resolusi dari grid asli (2160 x 4320 sel) untuk ilustrasi ini. Interpolasi yang digunakan untuk menampilkan grid intensitas kasar berfungsi dengan baik untuk mengisi kekosongan. Ini akan memungkinkan Anda untuk mengubah tampilan hampir secara instan jika Anda suka, membuat animasi yang halus.

whuber
sumber
2
Sangat, sangat baik