MATLAB地图工具箱学习心得(一)关于地图分带投影的拼接
关于matlab地图投影系列:
MATLAB地图工具箱学习心得(二)设计可变参数和位置拾取的“放大镜”式投影程序
---
本学期的地图投影课程已经结束了,这篇博客用于记录自己在学习当中的一些心得,也为了给遇到同样问题的人提供一些可参考的思路。当然,限于时间和本人的能力,文章中必然会出现一些错误,希望大家发现之后能够指正,谢谢。
李老师为了加深我们对地图投影的理解,前后布置了11次作业。本学期的作业内容大致可分为以下四类:
一是概念描述类,通过文字描述加深对定义、方法、意义等概念的理解。
二是计算推导类,借助 matlab 计算地球上某些参数或推导投影的某些性质。
三是利用 matlab mapping toolbox 工具绘制投影和分析变形。
四是利用 matlab 设计地图投影的 GUI 程序 。
在此,将本学期的 11 次作业按照先后顺序列出:
作业一:
简述平行投影和中心投影的定义,区别与联系
作业二:
计算任意纬度的子午圈曲率半径,卯酉圈曲率半径和平均曲率半径,并分析其随纬度变化规律
作业三:
(1)计算从赤道到纬度线 10°、20°······90°的子午线弧长
(2)计算从纬度线 10°、20°······90°的纬圈半径
(3)计算从赤道起算的话10°×10°的球面梯形面积(扩展:计算任意球面梯形面积,并分析其分布规律)
(4)当计算用于中国全图的某一斜方位投影,确定中心点 Q 的 phi=30°N,lambda=105°E,经纬网密度为 5°,计算 alpha 和 Z
(5)什么是球面坐标系,有何意义?
(6)地理坐标如何转变到球面极坐标系?
(7)确定新极点的方法有哪些?
作业四:
判断投影方程 x=R*phi,y=R*lambda 的投影性质(扩展:在 matlab 中设计程序,用以判断任意方程的投影性质)
作业五:
推导抛物型、双曲型、椭圆型投影与等角、等面积、等距离投影的关系
作业六:
(1)推导说明等面积和等距离方位投影为何不存在割投影
(2)分别绘制正轴、横轴、斜轴的等角、等面积、等距离方位投影,并进行变形分析
作业七:
(1)绘制武汉到伦敦的大圆航线、恒向线以及混合航线,并进行比较
(2)分别绘制正轴、横轴、斜轴的等角、等面积、等距离圆柱投影,并进行变形分析
作业八:
(1)分析中国地图正轴等角割圆锥投影的标准纬线变化的影响
(2)分别绘制正轴、横轴、斜轴的等角、等面积、等距离割圆锥投影,并进行变形分析
作业九:
(1)计算比较经度 0°-6°,纬度 0°-4°的球面梯形面积、高斯-克吕格投影面积、UTM 投影面积以及双标准经线等角横圆柱投影面积
(2)高斯-克吕格投影变形分析及其分带拼接
(3)UTM 投影变形分析及其分带拼接
作业十:
(1)自定义绘制伪投影,并进行变形分析
(2)利用滑块等控件实现 m、n 参数动态变化的扁圆等面积投影程序
作业十一:
设计“放大镜”式的等距离方位投影 matlab 程序,实现“放大镜”随鼠标选点而移动,调节放大镜范围,缩放比例等功能。
作业中的前面一些部分作为比较常规的题目,例如曲率半径等参数计算,在matlab中直接带入公式即可,当然也可以参考https://www.cnblogs.com/kkyyhh96/p/5405968.html这几篇博客利用工具箱进行计算。这篇文章的作者相当详细地总结了matlab mapping toolbox的使用技巧(不得不说学长真的太厉害了!),所以一些基础的部分,投影绘制、变形分析、各种航线、自定义投影之类的知识这里就不过多讨论了。我们从最后几个作业入手,谈谈利用matlab实现地图投影应用和设计地图投影程序的技巧。
一、 谈谈分带投影和分带拼接
写的时候本来只想谈谈matlab地图投影程序设计,但是转念一想,分带投影的拼接似乎没有其他博客记录过,这也是李老师布置的作业中的一个重点,所以就在这里提一下,提供一种思路。
首先将高斯-克吕格投影按6度带投影,为了便捷起见,只拼接从中央经线为3°的位置开始的前10个带。若需要拼接60个带,或者拼接3°带以此类推。
这里所谓拼接,就是将所有的分带拼到一起形成教材上那种连续的带状的地图。分带思想就是同一个显示区域显示多个带的投影图像,这让我们很自然地想到利用函数subplot。
然而subplot函数呈现的子图之间有着让人无法忍受的间距,如果直接用于拼接地图,既不美观也不符合要求。为此,我们需要利用自定义子图间距的方式展现每幅子图。
function ha = tight_subplot(Nh, Nw, gap, marg_h, marg_w)
%Nh 为行数,Nw为列数
%gap为间距向量(h,w)
%marg_h(up,down)边界
%marg_w(left,right)边界
%h(ii)代表每一个图幅,在主函数中调用
if nargin<3; gap = .02; end
if nargin<4 || isempty(marg_h); marg_h = .05; end
if nargin<5; marg_w = .05; end if numel(gap)==1;
gap = [gap gap];
end
if numel(marg_w)==1;
marg_w = [marg_w marg_w];
end
if numel(marg_h)==1;
marg_h = [marg_h marg_h];
end axh = (1-sum(marg_h)-(Nh-1)*gap(1))/Nh;
axw = (1-sum(marg_w)-(Nw-1)*gap(2))/Nw; py = 1-marg_h(2)-axh; ha = zeros(Nh*Nw,1);
ii = 0;
for ih = 1:Nh
px = marg_w(1); for ix = 1:Nw
ii = ii+1;
ha(ii) = axes('Units','normalized', ...
'Position',[px py axw axh], ...
'XTickLabel','', ...
'YTickLabel','');
px = px+axw+gap(2);
end
py = py-axh-gap(1);
end
UTM投影的拼接过程与高斯投影是一样的,让我们看一下拼接所用到的代码。记得要设置当前绘图区域gca不可见
set(gca,'Visible','off')
否则投影的每一个带都会有一个白色背景图框,相互遮盖看起来非常丑。
%UTM拼接
ha=tight_subplot(1,10,[-0.11 -0.11],[0.01 0.01],[0.35 0.35])
for ii=1:10
set(0,'defaultfigurecolor','w')
axes(ha(ii));
axesm ('unitranmerc','frame','on','origin',[0 183+6*ii 0],'flonlimit',[-3,3]);
%flatlimit控制投影的纬度范围,flonlimit控制经度范围,均为相对值
geoshow(landareas,'FaceColor',[0.5 1 0.5],'EdgeColor',[.6 .6 .6]);
set(gca,'Visible','off')
end
最终绘制出来的投影就相互拼接到一起了,让我们看一下效果。
MATLAB地图工具箱学习心得(一)关于地图分带投影的拼接的更多相关文章
- MATLAB地图工具箱学习心得(二)设计可变参数和位置拾取的“放大镜”式投影程序
最近刚好因为一些原因整理这方面的内容,所以还是把这篇鸽了一年多的博客顺手写出来了∠( ᐛ 」∠)_.因为是当时课程设计的一部分,程序上难免会有一些不足和bug,在这里将设计的思路分享给大家. 本篇博客 ...
- MATLAB地图工具箱学习总结(四)自定义投影
MATLAB地图工具箱学习总结(四)自定义投影 这是本系列的最后一篇文章,准备给大家讲讲自定义投影怎么做.在做这项作业的时候,自己也是花了不少时间,将所有地图投影源文件都看了一遍,简单分析了一下源代码 ...
- MATLAB地图工具箱学习总结(三)地图工具箱的基本知识
MATLAB地图工具箱学习总结(三)地图工具箱的基本知识 今天想要介绍的是一些比较基础的函数.了解了这些函数,地图投影的基本概念才能真正明白.而要想继续研究MATLAB中有关地图投影的函数,尤其是未来 ...
- MATLAB地图工具箱学习总结(二)大圆和恒向线
MATLAB地图工具箱学习总结(二)大圆和恒向线 今天要和大家谈一谈大圆.恒向线航道的画法.还是先从案例开始说起,再分别介绍相关的函数. 1 作业案例:地图投影作 ...
- MATLAB地图工具箱学习总结(一)从地图投影说起
MATLAB地图工具箱学习总结(一)从地图投影说起 前言 本学期地图投影课上,李连营老师建议我们使用MATLAB完成每周的作业.从大二上学期开始接触MATLAB学习数学运算和地理数据处理的我,自然不会 ...
- Matlab神经网络工具箱学习之一
1.神经网络设计的流程 2.神经网络设计四个层次 3.神经网络模型 4.神经网络结构 5.创建神经网络对象 6.配置神经网络的输入输出 7.理解神经网络工具箱的数据结构 8.神经网络训练 1.神经网络 ...
- Matlab神经网络工具箱学习之二
螃蟹的分类 这个例子的目的是根据螃蟹的品种.背壳的长宽等等属性来判断螃蟹的性别,雄性还是雌性. 训练数据一共有六个属性: species, frontallip, rearwidth, length, ...
- MATLAB 地图工具箱 m_map 的安装和入门技巧(转)
reference: http://blog.sina.com.cn/s/blog_8fc890a20102v6pm.html 需要用一些地图工具,arcgis懒得装了,GMT(generic m ...
- Windows phone 8 学习笔记(8) 定位地图导航
原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控件可以指定制图模式.视图等.bing地图的定位误差比较大,在模 ...
随机推荐
- 如何使用docker制作开发集成环境
1. 编写最基本的Dockerfile 内容:touch 一个Dockerfile FROM ubuntu 2. 创建基本的docker镜像 docker build -t ubuntu:v1 . ...
- JDK8新特性关于Stream流
在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: 1 2 3 ...
- Java并发机制(9)--Callable、Future、FutureTask的使用
Java并发编程:Callable.Future.FutureTask的使用 整理自:博客园-海子-http://www.cnblogs.com/dolphin0520/p/3949310.html ...
- String是最基本的数据类型吗?
基本数据类型包括byte.int.char.long.float.double.boolean和short.java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类. ...
- HTML 5中不同的新表单元素类型是什么?
HTML 5推出了10个重要的新的表单元素: Color. Date Datetime-local Email Time Url Range Telephone Number Search
- nginx静态资源服务器配置
编辑 nginx.conf server { listen 80; server_name file.youxiu326.xin; location /image/ { #访问 file.youxiu ...
- idea中Git的配置和Github上推拉项目
1.去官网下载Git,并且安装它.安装步骤较为简单,此处就不再赘述. 2.在idea中配置Git信息 Git路径就是你电脑中安装Git的位置,找到git.exe文件(正常情况下,idea都会自动给你匹 ...
- PID算法原理 一图看懂PID的三个参数
找了好久这一篇算是很容易看懂的了 推荐给大家 写的十分清楚 原文作者DF创客社区virtualwiz LZ以前有个小小的理想,就是让手边的MCU自己"思考"起来,写出真正 ...
- 从零开始画自己的DAG作业依赖图(四)--节点连线优化版
概述 上个版本简单的连线在一些复杂场景,尤其层级比较多,连线跨层级比较多的情况下,会出现线条会穿过矩形的情况,这一讲就是在这个基础上,去优化这个连线. 场景分析 在下面几种情况下,简单版本的画法已经没 ...
- 【HTML5版】导出Table数据并保存为Excel
首发我的博客 http://blog.meathill.com/tech/js/export-table-data-into-a-excel-file.html 最近接到这么个需求,要把<tab ...