繁体   English   中英

Python 计算以纬线 lat1 和 lat2 以及经线 lon1 和 lon2 为界的表面积

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM