![](/img/trans.png)
[英]How to get mean of a variable through time within a given boundarybox (lon1,lon2,lat1,lat2)?
[英]Python calculate surface area bounded by the parallels lat1 and lat2 and the meridians lon1 and lon2
我正在 Python 中寻找与此 Matlab function areaquad
的产品。
area = areaquad(lat1,lon1,lat2,lon2) 返回以纬线 lat1 和 lat2 以及经线 lon1 和 lon2 为界的表面积。 output 面积是单位球体面积 4π 的一小部分,因此结果范围为 0 到 1。
你碰巧知道我如何使用 Python 计算这个吗? 非常感谢任何提示!
如果您只需要球体,那么计算它并不难。 这是计算两个纬度之间球面总面积的公式。 所以:
h = sin(lat2)-sin(lat1)
Az = 2 * pi * h
现在,我们可以简单地求出限制在两个经度之间的区域的比例:
Aq = Az * (lon2-lon1)/(2*pi)
最后,为了使结果成为单位球面的一小部分,将其除以4*pi
。 放在一起,简化并考虑角度单位:
A = (sind(lat2)-sind(lat1)) * deg2rad(lon2-lon1) / (4*pi);
希望你能把它翻译成 python。
编辑:这是我在 R2020b 中为您的测试用例得到的:
lat1 = -90; lat2 = -89; lon1 = -180; lon2 = 180;
A = (sind(lat2)-sind(lat1)) * deg2rad(lon2-lon1) / (4*pi)
一个=
7.6152e-05
此外,关于Aq
不存在于最终公式中:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.