文件交换

图像缩略图

geographiclib

版本1.50(115 kB) 查尔斯任课老师
MATLAB实现C ++库的子集,地理LIB
5.0
7评级

32下载

更新2019年9月19日

查看版本历史记录

查看许可证

Geogichlib工具箱
版本1.50 2019-09-19

该工具箱提供了本机MATLAB实现的子集
C ++库,地理电视。此工具箱的关键组件是

*测地线:直接,反,面积计算。
*投影:横向墨克,极性立体图等
*网格系统:UTM,UPS,MGR。
* Geoiroid查找:EGM84,EGM96,EGM2008支持。金宝app
*几何变换:地理周度,当地笛卡尔。
*大椭圆:直接,逆,区域计算。

此工具箱和MATLAB的映射之间存在一些重叠
工具箱。但是,此工具箱提供:

*更好的准确性;
*治疗扁平和聚合物椭圆形;
*金多岩的保证收敛;
*测地线面积和微分性质的计算;
*等距外星值和侏儒的椭圆形版本
投影。

此包的子集以前发布为:

革命椭球上的大测地仪(已弃用)
用于椭圆体(撤回)的测地预测
伟大的椭圆(撤销)

包括单个工具箱中的所有功能允许更容易
分享代码(通过公共私有目录)。

可以在C ++库上进行广泛的文档

https://geographiclib.sourceforge.io/1.50

Geoid查找需要安装一个或多个大地带模型。
给出的说明

https://geographicLib.sourceforge.io/1.50/goid.html#aeodioinst.

此包的更改日志可用

https://geographiclib.sourceforge.io/1.50/changes.html.

引用

查尔斯卡尼(2021年)。geographiclib(//www.tatmou.com/matlabcentral/fileexchange/50605- eadographiclib),Matlab中央文件交换。检索到

意见及评分(23.

查尔斯任课老师

感谢您对这个库的所有努力和支持金宝app
> MATLAB社区。刚刚开始,我就不给它打分了
>然而。报告的一个潜在问题(不是错误)是
>数学作业和地理电视实现之间的差异
> ECC2FLAT功能。当GeographicLib在前目早先的路径上时
>映射工具箱,然后(至少在Matlab 2018A中),抛出错误
>当第5个输入(椭球)是时,映射工具箱的距离内径
>指定。无论是[半法ECC]还是
>使用基准团。我用WGS84ELLIPSOID测试而不是一个
>复杂/延髓价值。

如果地理库和
映射工具箱版本的ECC2FLAT,我会考虑试图使其
定义(和flat2ecc的定义)一致。但是文档
对于ECC2FLAT.

//www.tatmou.com/help/map/ref/ecc2flat.html

说,呼叫序列f = ecc2flat(椭圆体)“将是
在未来的释放中删除“。所以也许我应该紧紧坐着。

>一个无关的有趣的“发现”是我略有不同
>如果我转换,从Mathworks距离的答案
>单独使用的所有点与它们循环。你的
>地理位置是岩石稳定的。

是的,从标量和矢量输入获得相同的结果是一个
设计目标。

注意,对于我的简单测试用例,geoddistance的范围是74%
>(单点转换)至244%(10k点转换)慢于
>距离,但这可能值得一致
>您声称的准确性改进。表现似乎降级了
>,有点数。

好的,谢谢你的信息。我无法访问映射
工具箱,所以我无法独立验证这一点。

我认为(希望!)我的实施可能更快的一个情况
使用GeoDreckon在单个测距仪上计算多个点
(用标量Lat1,Lon1,Azi1和矢量S12调用地理围栏)。

此外,我会好奇映射工具箱现在是如何准确的。
我可以请你检查我吗?下载geodtest.dat

http://do.org/10.5281/zenodo.32156

然后

t = load('geodtest.dat');
S12 = T(:,7);
S12A = GeoDdistance(t(:,1),t(:,2),t(:,4),t(:,5));
S12B =距离(t(:,1),t(:,2),t(:,4),t(:,5),defaultEllipsoId)
erra = abs(S12A-S12);
errb = abs(s12b-s12);
最大(erra)
总和(〜(erra <1e-3)))
max(errb)
总和(〜(errb <1e-3))
......

(向后测试是抓住NANS。)一个距离一次的事实
可能会在法律投入上退回NANS取消资格来自严重使用。
(例如,它不能用于依赖三角形的算法
不平等)。但我不确定情况是否仍然如此。

射线

感谢您对此库的所有努力,并支持Matlab社区。金宝app刚开始,所以我还没有评价这个。要报告的一个潜在问题(不是错误)是ECC2FLAT函数的MathWorks和GeographicLib实现之间存在差异。当GeographicLib在比映射工具箱之前的路径上时,然后(至少在Matlab 2018A中至少),当指定第5个输入(椭ellipsoid)时,从映射工具箱中突出距离。无论是否使用[半草ECC]或副录取素),都会发生这种情况。我用WGS84的测试测试而不是复杂/脯的价值。

一个不相关的有趣“发现”是,如果我单独转换所有点Vs循环,我会从Mathworks距离获得略微不同的答案。你的地理位置是在那个前面稳定的。

请注意,对于简单的测试用例,地理数据率从74%(单点转换)到244%(10k点转换)慢于距离,但可能值得一致,以及您声称的准确性改进。性能似乎逐渐降低。

再次感谢!

Gunnar Zindel.

伟大的套餐!

查尔斯任课老师

帮助Geocent_fwd说,拉特和LON应该是度数的!
[x,y,z] = geocent_fwd(37.0328,15.065,370)
X = 4922883.48104775
Y = 1325070.28306503
Z = 3820522.46838327

让你的一个方向获得一个站点,你
应该使用loccart_fwd而不是geocent_fwd。

蓝眼睛

好的!从你的漂移之间出现一些差异
-----------------------
>>格式长g
>> RAD = PI / 180;
>> LAT = 37.0328 * RAD;
>> LON = 15.065 * RAD;
>> H = 370.0;
>> [x,y,z] = geocent_fwd(lat,lon,h)
X = 6378036.70547581
Y = 29269.4077049027
Z = 71471.7403795619.
和以下发生了https://www.ngs.noaa.gov/cgi-bin/inv_fwd/invers3d.pr.使用结果之前,先前[Sendspace正常工作,请单击两次]并在下面复制(仅限1 ^ ST站)
第一站:CB
x = 4922883.4811 m lat = 37 1 58.08000北
y = 1325070.2831 m lon = 15 3 54.00000东
Z = 3820522.4683 m eht = 370.0000米
----------
干杯

查尔斯任课老师

Sendspace链接似乎要求我创建一个帐户并提供电子邮件。
我没有准备好这样做。所以请弄清楚另一种发送给我的图像的方法。

如果你想要2分之间的欧几里德距离,你可以将它们转换为
与地理位置_FWD的地理统一坐标,然后使用毕达哥拉斯。

蓝眼睛

大地距离增强建议:标记到标记距离btw。两个地面站,如图所示:
https://www.sendspace.com/file/i5sg1u.
是否有可能在此进行链接并链接?或者,替代地,以显示(x,y,z)矩形核心算法?
谢谢提前

蓝眼睛

哦是的!它现在正常工作,函数变为:
---------
功能n = geodsolve59
%检查有点接近靠近180°的宽度。
n = 0;
[S12,AZI1,AZI2] = GeoDdistance(5,0.00000000000001,110,180);
n = n +断言(azi1,0000000000000035,1.5e-14);
n = n + assertequals(azi2,179.99999999999996,1.5e-14);
n = n + assertequals(S12,18345191.174332713,5E-9);
结尾
---------

查尔斯任课老师

@blueeyes您正在误解补丁文件。该规则删除开始行
使用“ - ”并以“+”开头的线路(但使用“+”删除)替换它们。
(基本上,S12测试中的Delta从2.5e-9到5e-9更换。)

蓝眼睛

修改了代码的屏幕截图
---------
https://www.sendspace.com/file/5nr3nm.
---------

蓝眼睛

我的GNU Octave 4.0.0包仍然失败,如下:
-----
>> GeographicLib_Test.
在文件C:\ Training \ z_geodesia \ Karney \ Geographic leib_test.m附近解析错误

作业无效左侧

>>> - n = n +断言(S12,18345191.174332713,2.5E-9);
-------
干杯

查尔斯任课老师

这个补丁到地理闪光_test.m修复了blueeyes报告的问题(它放松了
其中一个测试略有:

diff --git a / matlab /地理升降/地理plib_test.m b / matlab / geographiclib / geographiclib_test.m
索引2bad2f18..d301465e 100644
--- A / MATLAB /地理LIB / GEOROCHLIB_TEST.M
+++ B / MATLAB /地理灯/地理灯/地理LIB_TEST.m
@@ -457,7 +457,7 @@ function n = geodsolve59
[S12,AZI1,AZI2] = GeoDdistance(5,0.00000000000001,110,180);
n = n +断言(azi1,0000000000000035,1.5e-14);
n = n + assertequals(azi2,179.99999999999996,1.5e-14);
- n = n +断言(S12,18345191.174332713,2.5E-9);
+ n = n +断言(S12,18345191.174332713,5E-9);
结尾

功能n = geodsolve61

蓝眼睛

刚通过电子邮件发送回复。干杯

查尔斯任课老师

回复@blueeyes:这可能是matlab版本的问题
使用或运行它的平台。请你跑
以下在您的版本Matlab(或Octave)来帮助我诊断
问题:

版本
[S12,AZI1,AZI2] = GeoDdistance(5,0.00000000000001,110,180);
流(“%。10 f %。15 f %。15f\n', s12, azi1, azi2)

并向我提供结果(电子邮件是首选:
charles@karney.com)。谢谢。

蓝眼睛

请注意这款缺点:
--------
1 ..
>> GeographicLib_Test.
Geodsolve59失败:1
错误:断言(n == 0)失败
错误:叫
在线92第11列断言
Line 56第3列的GeographicLib_test

2 ..通过消除相应的行,测试成功:
%i = geodsolve59;如果我,n = n + 1;FPRINTF('地理系统59失败:%d \ n',i);结尾
>> GeographicLib_Test.
>>
--------
干杯

约翰

极好的!!我在Python中使用了地理价,我非常高兴它现在在Matlab中实现。

赵德君

查尔斯任课老师

在给出空距离参数时,GeoDreckon中有一个模糊的错误。提供补丁

https://sourceforge.net/p/beographiclib/news/2017/03/bug-in-matlab-function-geodreckon/

这将包含在下一个版本中。

比尔顿达

正是我正在寻找的!谢谢!

guy

查尔斯任课老师

2015-08-14的1.44版更新导致GeoDdistance中的错误,
当它用于octave(不是MATLAB)并用载体调用
包括赤道上几乎对抗彼得分数的争论。

补丁是给出的
https://sourceforge.net/p/beographiclib/news/2015/08/bug--fix-in-octave-version-of-geoddistance/

这将包含在下一个版本中。

马修

陈强

伟大的!

Matlab释放兼容性
用R2014B创建
与任何版本兼容
平台兼容性
视窗 苹果系统 Linux.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!