• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB地图工具箱学习总结(二)大圆和恒向线

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MATLAB地图工具箱学习总结(二)大圆和恒向线

MATLAB地图工具箱学习总结系列:

(一)从地图投影说起

(二)大圆和恒向线

(三)地图工具箱的基本知识

(四)自定义投影

今天要和大家谈一谈大圆、恒向线航道的画法。还是先从案例开始说起,再分别介绍相关的函数。

1                    作业案例:地图投影作业6

在作业6中,李老师要求我们画出两点间的大圆航线、恒定线航线和两者混合的航线。我一开始没有找到gcwaypts函数,导致自己花了一点时间编写了一段代码实现,但效果并不好,存在误差。后来找到了神奇的gcwaypts函数,一切也就迎刃而解。在本文中,我将会把两种方法都简单介绍一下。

首先是gcwaypts的演示事例,源代码和效果如下图所示:

landareas=shaperead(\'landareas.shp\',\'UseGeoCoords\',true);
axesm(\'mercator\',\'Frame\',\'on\',\'Grid\',\'on\',\'origin\',[0 120 0]);
geoshow(landareas,\'FaceColor\',[1 1 .5],\'EdgeColor\',[.6 .6 .6]);
[pointlat pointlong]=gcwaypts(40,120,37,-122,3);
geoshow(pointlat,pointlong)
pointTrack=track2(\'gc\',40,120,37,-122);
plotm(pointTrack);

接下来是我自己写了一个简单的脚本,主要应用了track2函数.

思路如下:由于track2函数生成了一串点集(默认为100个),当然,track2函数还可以自己设定点的数目,点数越大自然误差越小。根据输入的段数,根据数组分别求出每一段起始点的坐标,再依次连接即可。不过生成的路径略有偏差。

从上面两幅图也可以看出,虽然后者有误差,但误差并不大。

接下来我就要讲讲相关函数的用法了。

2                    track1和track2函数的用法

track1和track2这两个函数都可以用于描绘轨迹。获取的是一串点集,而通过连接点集即可描绘出具体的轨迹。

(1)          track1的基本用法:track1(lat,lon,az,arclen)

其中,lat,lon分别代表起始点的经纬度坐标,az代表轨迹的方位角,arclen代表的是距离,单位为角度,也可以是一个角度范围[a b]从a度到b度

[lattrkgc,lontrkgc]=track1(0,0,45,[-55 55]);
plotm(lattrkgc,lontrkgc,\'g\');

(2)          track2的基本用法:track2(lat1,lon1,lat2,lon2)

其中,lat1,lon1,lat2,lon2分别是起始点和终止点的经纬度。

(3)          \'gc\'和\'rh\':在track1和track2中都可以看到这样两个参数,其实也很好理解,\'gc\'是大圆,\'rh\'是恒向线,只要在一开始声明,最后的轨迹即为所需要的。

(4)          trackg的用法:trackg可以通过交互计算创建大圆。在命令行输入后只需要在地图上点击相应的位置,设置起始终止点,即可自动画出大圆线。倘若画完之后,按住shift点击航线,可以自动跳出下图对话框,可以调整航线的一些参数。

3                    gcwaypts函数的用法:

gcwaypts是解决本文开始的案例最佳的方案。其功能正是在大圆上寻找等距航线。其基本用法是:[lat lon]=gcwaypts[lat1,lon1,lat2,lon2,nlegs],其中lat1~lon2四个参数分别代表的是航线起始点的经纬度坐标,nlegs代表了航线将分成几段。让我们再来返回到最初的案例,分析一下代码。

landareas=shaperead(\'landareas.shp\',\'UseGeoCoords\',true);
axesm(\'mercator\',\'Frame\',\'on\',\'Grid\',\'on\',\'origin\',[0 120 0]);
geoshow(landareas,\'FaceColor\',[1 1 .5],\'EdgeColor\',[.6 .6 .6]);
[pointlat pointlong]=gcwaypts(40,120,37,-122,3);
geoshow(pointlat,pointlong)
pointTrack=track2(\'gc\',40,120,37,-122);
plotm(pointTrack);

其中起始点设置为靠近北京的地区,终止点设置为旧金山地区,将航线分为3段,那么最后就显示出了等距航线。


今天关于MATLAB的问题就说这么多,这篇文章也是拖了两周才最终完成。

在接下来的地图投影课程中题目也是越来越难啦。不过博主会加油争取把所有的相关知识点都讲清楚上传的!

天靖居士

2016.5.9

8.17更新说明:具体代码请参考:https://github.com/kkyyhh96/MapProjectionMatlab

有关地图工具箱其他文章,请参看:

MATLAB地图工具箱学习总结系列:

(一)从地图投影说起

(二)大圆和恒向线

(三)地图工具箱的基本知识

(四)自定义投影


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi木马DIY之代码藏后门的可能性发布时间:2022-07-18
下一篇:
教程-最全ASCII 码对照表 - 疯狂delphi发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap