Saya mencari yang setara dengan fungsi matlab ini areaquad di Python.

Area = ArmageQuad (Lat1, Lon1, Lat2, Lon2) mengembalikan area permukaan yang dibatasi oleh paralel Lat1 dan Lat2 dan Meridian Lon1 dan Lon2. Area keluaran adalah sebagian kecil dari luas area 4π, sehingga hasilnya berkisar antara 0 hingga 1.

Apakah Anda tahu bagaimana saya bisa menghitung ini menggunakan Python? Adakah tips sangat dihargai!

1
thomaschhh 4 April 2021, 00:13

1 menjawab

Jawaban Terbaik

Tidak sulit untuk menghitungnya, jika Anda membutuhkannya hanya untuk bidang. di sini adalah rumus untuk menghitung total luas permukaan sphere antara dua lintang. Begitu:

h = sin(lat2)-sin(lat1)
Az = 2 * pi * h

Sekarang, kita dapat menemukan proporsi wilayah yang dibatasi antara dua longitudes:

Aq = Az * (lon2-lon1)/(2*pi)

Dan akhirnya, untuk membuat hasil sepersekian dari permukaan unit sphere, bagi dengan 4*pi. Menyatukan semua, dengan penyederhanaan dan mengambil unit sudut ke akun:

 A = (sind(lat2)-sind(lat1)) * deg2rad(lon2-lon1) / (4*pi);

Semoga Anda dapat menerjemahkannya ke Python.

enter image description here

Edit: Inilah yang saya dapatkan di R2020b untuk kasus pengujian Anda:

lat1 = -90; lat2 = -89; lon1 = -180; lon2 = 180;
A = (sind(lat2)-sind(lat1)) * deg2rad(lon2-lon1) / (4*pi)

A =
7.6152E-05.

enter image description here

Juga, sekitar Aq tidak hadir dalam rumus akhir:

h = sin(lat2)-sin(lat1)
Az = 2 * pi * h
Aq = Az * (lon2-lon1)/(2*pi)
   = 2*pi*h*(lon2-lon1)/(2*pi) // reducing 2*pi
   = h * (lon2-lon1)
   = (sin(lat2)-sin(lat1))*(lon2-lon1)
A  = Aq/(4*pi)
   = (sin(lat2)-sin(lat1))*(lon2-lon1)/(4*pi)
0
saastn 4 April 2021, 21:30