Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python计算由平行线lat1和lat2以及子午线lon1和lon2限定的表面积_Python_Matlab_Math_Geometry_Area - Fatal编程技术网

Python计算由平行线lat1和lat2以及子午线lon1和lon2限定的表面积

Python计算由平行线lat1和lat2以及子午线lon1和lon2限定的表面积,python,matlab,math,geometry,area,Python,Matlab,Math,Geometry,Area,我正在寻找Python中与此Matlab函数等效的函数 area=areaquad(lat1、lon1、lat2、lon2)返回有边界的表面积 通过平行线lat1和lat2以及子午线lon1和lon2。这个 输出面积是单位球体面积4π的一部分,因此 结果范围从0到1 您知道我如何使用Python计算这个值吗? 任何提示都非常感谢 如果你只需要计算球体,那么计算起来并不难。是计算两个纬度之间球面总面积的公式。因此: h = sin(lat2)-sin(lat1) Az = 2 * pi * h

我正在寻找Python中与此Matlab函数等效的函数

area=areaquad(lat1、lon1、lat2、lon2)返回有边界的表面积 通过平行线lat1和lat2以及子午线lon1和lon2。这个 输出面积是单位球体面积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)
A=
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)

你问之前搜索过这个吗?谷歌的第一个热门话题是。是的,我已经按原样试用过了,但没有结果。我的用例中的输入参数是值=(-90,-180,-89180)#lat,lon,lat,lon,这似乎与pdf中的参数也有很大不同。(-90,180,-89,180)不描述矩形,而是描述一条线。嘿@saastn,这看起来很有希望,谢谢!不过,我对你的函数得到了一个不同的结果。Matlab函数产生9.5674e,Python产生7.6152e-05。我还想知道为什么Aq在A中没有使用。我编辑了我的帖子@thomaschh。如果您在python中得到7.6152e-05,那么这是正确的。我不知道为什么MATLAB会在您的系统上产生不同的结果。这里是7.6152e-05。我在Matlab中仔细检查了函数,我刚刚看到函数的名称是area_quad。该函数的源代码可以在这里找到:无论如何,我想我会使用你的版本。再次感谢你的帮助!