Purpose: To calculate the cell areas on an oblate spheroidal planet.
A ``cell'' is defined as a region bounded by two meridians of
longitude and two meridians of latitude. It is approximately a
rectangular patch (except for cells near the two poles, which are
spherical triangles). To better approximation, a cell is a
trapezoid. Here, we rigorously derive the area.
We define f as the flattening of the sphere,
| (1) |
We begin with the definition of surface area in polar coordinates,
| (2) |
The figure of an oblate spheroid is given (to order f2) by,
| (3) |
| (4) |
|
|
|
|
|
|
II:
|
III:
|
IV:
|
Putting it all together, Eq. (9) becomes:
| (14) |
Now time for the sanity checks:
|
Table of Sample Areas, in [km2] | ||
latitude [deg] | spheroid | sphere |
89.75 | 3.808761 | 3.834437 |
89.25 | 11.425984 | 11.502999 |
88.75 | 19.042372 | 19.170685 |
88.25 | 26.657368 | 26.836910 |
87.75 | 34.270416 | 34.501092 |
87.25 | 41.880961 | 42.162646 |
46.25 | 605.586083 | 607.693848 |
45.75 | 611.119569 | 613.210359 |
45.25 | 616.607171 | 618.680173 |
44.75 | 622.048454 | 624.102871 |
44.25 | 627.442986 | 629.478041 |
43.75 | 632.790338 | 634.805275 |
31.25 | 749.956218 | 751.286874 |
30.75 | 753.937761 | 755.236626 |
30.25 | 757.861900 | 759.128863 |
29.75 | 761.728314 | 762.963290 |
29.25 | 765.536684 | 766.739614 |
28.75 | 769.286698 | 770.457548 |
2.25 | 878.102361 | 878.111163 |
1.75 | 878.373461 | 878.378803 |
1.25 | 878.576806 | 878.579550 |
0.75 | 878.712379 | 878.713390 |
0.25 | 878.780168 | 878.780312 |
The following IDL procedure evaluates our expression for the case of Mars (a=3397 km):
radius=3397.d0 ; equatorial, in km
f=0.00647630 ; flattening
gs=0.5d0 ; gridsize, in degrees
halfgs=gs/2.d0
outfile='spheroid_area.dat'
openw,unit,outfile,/get_lun
printf,unit,'latitude Area(km2,sphere) Area(km2,spheroid)'
for lat=90-halfgs,-90+halfgs,-gs do begin
top=lat+halfgs & bot=lat-halfgs
area=!dtor*gs*radius2*(dotrig(top,f,gs)-dotrig(bot,f,gs))
sphere_area=!dtor*gs*radius2*(sin(!dtor*top)-sin(!dtor*bot))
printf,unit,lat,area,sphere_area,format='(1x,f6.2,2(3x,f12.6))'
endfor
close,unit
print,'Done. Data written to ',strn(outfile)
DONE:
stop
end
function dotrig,lat,f,gs
f2=f*f & f3=f2*f & f4=f3*f
sinlat=sin(lat*!dtor) & sinlat2=sinlat*sinlat
sinlat3=sinlat3 & sinlat5=sinlat5
sinlat7=sinlat7 & sinlat9=sinlat9
sinlat11=sinlat11
term1=sinlat-(f/3.d0)*sinlat3+(f2/5.d0)*sinlat5
term2=-(12.d0/5.d0)*f2*sinlat5+(13.d0/14.d0)*f2*sinlat7-(f2/12.d0)*sinlat9
term3=(12.d0/7.d0)*f3*sinlat7-(8.d0/3.d0)*f3*sinlat9+(12.d0/11.d0)*f3*sinlat11
term4=(9.d0/20.d0)*f4*sinlat5-(9.d0/14.d0)*f4*sinlat7+(f4/64.d0)*sinlat9
print,term1,term2,term3,term4
return,(term1+term2+term3+term4)
end
`\`= `^^I=
SPHEROID_AREA