精华内容
下载资源
问答
  • 最新版matlab地图工具箱,包括所有matlab绘制地图所需要的所有函数,
  • matlab地图绘制
  • 关于A*算法中轮船的航线问题(matlab)
  • 中国地区彭纳投影计算,,,,在matlab软件里面编写
  • matlab 地图精细设置

    2014-07-11 13:24:45
    matlab绘制地图很方便,但是很多细节设置却需要试验才能掌握。本代码是在作者试验了基础之上所总结的基本设置代码,相信对于初级以及中级水平人会有帮助。
  • matlab工具箱系列-chinamap中国地图数据工具箱(大陆地区)
  • 我目前正在尝试根据“月”,“周”,“日”在一个月内映射一些数据.这意味着原则上我有三个键.我想到了解决问题的方法:1)containers.Map(月,containers.Map(周,containers.Map(日,值)))我发现这个解决方案相当“丑陋...

    我目前正在尝试根据“月”,“周”,“日”在一个月内映射一些数据.

    这意味着原则上我有三个键.我想到了解决问题的方法:

    1)

    containers.Map(月,containers.Map(周,containers.Map(日,值)))

    我发现这个解决方案相当“丑陋”.

    2)

    另一种方法是使用具有多个键的Map. containers documentation显示只允许一个维度键.

    题:

    你有什么技巧可以解决这个多重关键问题吗?

    更新/解决方案:

    我最后使用串联字符串作为键(如建议的那样)我添加了以下代码片段以将containers.Map作为正确的多维hashmap.看看下面(为了简化我排除了一周):

    classdef example

    properties

    myMap % Map for storage

    end

    methods

    function obj = example()

    obj.myMap = containers.Map;

    end

    function obj2 = setVal(obj2,value,Month,DayType)

    key = strcat(num2str(Month),'-',num2str(DayType));

    obj2.myMap(key) = value;

    end

    function value = getValue(obj,Month,DayType)

    key = strcat(num2str(Month),'-',num2str(DayType));

    value = obj.myMap(key);

    end

    end

    展开全文
  • GeoServer作为开源的软件,可以切割地图得到地图瓦片,但是整张地图的长宽的乘积不能超过Integer的最大值,否则切割失败。此资源是用matlab切片(包含3,4,5,6,7缩放级别),与GeoServer的切片规律一致.
  • 本学期的地图投影课程已经结束了,这篇博客用于记录自己在学习当中的一些心得,也为了给遇到同样问题的人提供一些可参考的思路。当然,限于时间和本人的能力,文章中必然会出现一些错误,希望大家发现之后能够指正,...

    本学期的地图投影课程已经结束了,这篇博客用于记录自己在学习当中的一些心得,也为了给遇到同样问题的人提供一些可参考的思路。当然,限于时间和本人的能力,文章中必然会出现一些错误,希望大家发现之后能够指正,谢谢。

    李老师为了加深我们对地图投影的理解,前后布置了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

    最终绘制出来的投影就相互拼接到一起了,让我们看一下效果。

     

    转载于:https://www.cnblogs.com/ssjxx98/p/11070375.html

    展开全文
  • matlab栅格地图绘制

    2019-01-05 18:53:29
    matlab栅格地图绘制,介绍了相关matlab程序,用户可根据需要学习 是太阳能光伏发电系统(Solar power system)的简称,是一种利用太阳电池半导体材料的光伏效应,将太阳光辐射能直接转换为电能的一种新型发电系统,...
  • 最近刚好因为一些原因整理这方面的内容,所以还是把这篇鸽了一年多的...关于matlab地图投影系列: MATLAB地图工具箱学习心得(一)关于地图分带投影的拼接 一、定义坐标变换的方程 首先在matlab安装目录E:\MATLAB2016

    最近刚好因为一些原因整理这方面的内容,所以还是把这篇鸽了一年多的博客顺手写出来了∠( ᐛ 」∠)_。因为是当时课程设计的一部分,程序上难免会有一些不足和bug,在这里将设计的思路分享给大家。

    本篇博客的代码可以在我的github项目中查看:https://github.com/NewBearEar/Magnifying-azimuthal

    关于matlab地图投影系列:

    MATLAB地图工具箱学习心得(一)关于地图分带投影的拼接


    一、定义坐标变换的方程

    首先在matlab安装目录E:\MATLAB2016a\toolbox\map\mapproj\private\位置找到在方位投影中进行坐标变换的函数applyAzimuthalProjection.m,即在对应如图所示函数的应用之下,它将方位投影函数中的大地坐标转换为球面极坐标。

    img

    图1 球面极坐标转换函数

    于是为了实现放大镜效果,可以利用如下公式对方位角进行判断,从而得到“放大镜”式的等距离方位投影效果。

    img

    图2 “放大镜”效果天顶距公式

    为了实现该公式,并且不改变原有的mappingtoolbox工具箱结构,将applyAzimuthalProjection.m的内容复制作为applyMagnifyingAzimuthalProjection函数(applyMagnifyingAzimuthalProjection.m文件),并在其applyForward函数中添加如下代码,实现“放大镜”式的等距离方位投影的坐标变换公式:

    %用msturct传递参数
    
    rng_val=zeros(size(rng));
    
    rngz1=mstruct.rngz1;
    
    %缩小系数
    
    ge=mstruct.zoom_factor;
    
    for j=1:size(rng,1)
    
    for k=1:size(rng,2)
    
      rng_val(j,k)=rng(j,k);
    
      if rng(j,k)>rngz1
    
         rng_val(j,k)=rngz1+(rng(j,k)-rngz1).*ge;
    
      end
    
      end
    
    end
    
    rng=rng_val;
    

    img

    图3 applyMagnifyingAzimuthalProjection.m文件applyForward函数中添加变换公式

    ​ 但值得注意的是,有时mappingtoolbox工具箱可能会对新添加的private函数(如applyMagnifyingAzimuthalProjection函数)产生找不到函数的问题,如果出现这种情况就只能直接修改工具箱的applyAzimuthalProjection.m的内容了。

    二、通过mstruct传递自定义参数

    ​ (1)由于matlab的mappingtoolbox的任意一个投影都是通过mstruct定义包括投影中心,旋转情况,标准纬线等属性,在调用投影变换时也是直接传入 mstruct 并调用一些相应的方法(由于 msturct 只是一个结构体,而不是类,其方法与结构体本身是分离的,所有大多数方法都是传入一个 mstruct 作为参数)

    E:\MATLAB2016a\toolbox\map\mapdisp\private中有 mstruct 的初始化文件 initmstruct.m,在这个文件中定义了 mstruct,如果需要传递参数,可以通过修改 mstruct的结构,他承载并传递一些其他自定义参数。为了实现“放大镜”式的等距离方位投影,需要rngz1作为内圆极距(公式中的z1),zoom_factor作为内外圆间的比例尺缩小系数(公式中的ge)。因此,在mstruct中定义如下参数并初始化。

    img

    图4 initmstruct.m中需要添加的mstruct成员变量

    (2)由于mstruct属于私有域,所以需要在axesm.m文件中添加自定义的setter方法,并在其setprop方法中调用setter方法设置mstruct。

    img

    图5 axesm.m文件中添加自定义的setter方法

    img

    图6 axesm.m文件setprop方法中调用setter方法设置mstruct

    三、定义并注册地图投影

    程序采用的是等距离方位投影制作具有“放大镜”效果的地图投影程序,因此可以直接在ortho投影的基础上进行复制,然后修改,自定义投影variable_ortho.m。

    自定义投影的方法是在 E:\MATLAB2016a\toolbox\map\mapproj 路径添加自定义的 m 文件(variable_ortho.m)
    img

    图7 variable_ortho.m文件调用之前定义的applyMagnifyingAzimuthalProjection函数

    然后在E:\MATLAB2016a\toolbox\map\mapproj路径下maplist.m 文件中,将自定义的variable_ortho投影进行注册,如下图所示:

    img

    图8 maplist.m文件注册自定义投影

    这里同样要注意的是,有时mappingtoolbox工具箱莫名其妙找不到新注册的自定义投影,所以,如果遇到这种情况,大概就只得在已有投影(例如ortho.m)上进行修改了。

    四、定义并注册地图投影

    GUIDE是指matlab用于设计GUI (图形用户界面) 的工具环境。GUIDE做GUI的学习成本很低,具有直观和低门槛的优点,虽然用GUIDE做出来的程序可维护性很糟糕,但用于设计这样一个简单的具有位置拾取功能的投影程序绰绰有余(主要是简单),所以这里利用matlab的GUIDE来设计GUI程序。关于GUIDE的使用方法和GUI界面设计不是重点,这里就不过多阐述了,GUI程序写在variable_program.m和variable_program.fig文件,有兴趣的朋友可以参考。

    其中“开始选择点”按钮,用于调用坐标拾取函数,获取当前鼠标点位置函数,“确定”按钮用于重绘“放大镜”等距离方位投影地图。为界面中的控件设置好回调函数之后即可使用。并可以通过放大镜范围设置参数z1和缩放比例ge。

    坐标拾取可以采用 ginput 函数或 inputm 函数,前者是通过鼠标点击的位置获取当前的屏幕坐标(设备坐标 DP),使用后只需将获得坐标轴的屏幕坐标反算到逻辑坐标 LP,再利用地图投影的反算公式反算回地球表面经纬度,即可完成点的选择。而后者是通过将上述操作封装,直接利用鼠标点击的位置获取地球表面的经纬度坐标,可以说,inputm 函数拾取坐标非常简便,但又缺乏灵活性。

    由于放大镜的原理,改变了黄圈外围(黄圈即为 z1 所在等高圈)的正算公式,导致投影反解公式在放大镜外围失效,从而无法 inputm 选点。可以考虑使用ginput来进行坐标拾取。

    程序的部分代码如下(详见variable_program.m):

    % 重置坐标轴,防止图像重叠
    
    cla reset
    
    % 确定时调用投影
    
    landareas = shaperead('landareas.shp','UseGeoCoords',true);
    
    [n,k]=size(landareas);
    
    total = 1;
    
    lon=zeros(1,20000);
    
    lat=zeros(1,20000);
    
    for j=1:n
    
      [a,b]=size(landareas(j).Lon);
    
      for m=1:b
    
    ​    lon(1,total) = [landareas(j).Lon(1,m)] ;
    
    ​    lat(1,total) = [landareas(j).Lat(1,m)] ;
    
    ​    total=total +1;
    
      end
    
    end
    
    global phi00 lambda00;
    
    %坐标轴采用自定义的variable_ortho投影类型
    
    axesm ('variable_ortho', 'Frame', 'on', 'Grid', 'on','origin',[phi00 lambda00 0],'rngz1',[str2double(get(handles.edit1,'string'))],'zoom_factor',[str2double(get(handles.edit2,'string'))]);
    
    geoshow(lat,lon);
    
    tissot;
    
    mdistort;
    
    ......省略部分代码......
    
    %拾取经纬度坐标
    
    [lat,lon]=inputm(1);
    
    %判断经纬度坐标是否拾取成功
    
    if ~isempty(lat) && ~isempty(lon) 
    
      phi00=lat;
    
      lambda00=lon;
    
    else
    
      error(message('坐标反算失败'))
    
    end
    

    在该程序中,variable_program_OpeningFcn函数定义了程序启动时的初始化,pushbutton1_Callback函数定义了确定按钮单击事件的回调函数(改变投影图像),pushbutton3_Callback函数定义坐标拾取按钮单击事件的回调函数(用于拾取坐标),这三个函数是实现功能的主要函数。其中axesm函数是地图投影的核心,调用了自定义的variable_ortho投影

    img

    图9 axesm函数调用自定义投影

    五、效果图

    “放大镜”的效果取决于applyMagnifyingAzimuthalProjection.m中使用的公式,如果使用如下线性的等距离方位投影的公式,得到的效果如下图:

    img
    在这里插入图片描述

    图10 采用线性公式的“放大镜”式等距离方位投影图

    ​ 同理,如果使用非线性的从内圆到外圆过渡的等距离方位投影,例如0.7为指数的幂函数,就能实现“放大镜”式渐变方位投影:

    img

    img

    在这里插入图片描述

    图11 采用非线性公式的“放大镜”式渐变方位投影

    img

    展开全文
  • 我的思路是:先画个地图地图可以是matlab自带的函数coast或者是导入一张地图图片)然后添加坐标信息。
  • MATLAB工具箱大全-地图工具箱m_map.zip
  • matlab开发-自动地图生成。基于lat/lon限制智能地创建和放置图形的比例。
  • 非常实用的matlab地图绘制工具箱,文件夹doc里有详细中文使用说明书
  • 通过matlab 爬虫技术,从百度地图上查找某个地方的位置,返回经纬度
  • 本学期地图投影课上,李连营老师建议我们使用MATLAB完成每周的作业。从大二上学期开始接触MATLAB学习数学运算和地理数据处理的我,自然不会放过这次机会,每周找了点时间好好研究了一下,把作业比较轻松地就搞定了。...

    MATLAB地图工具箱学习总结(一)从地图投影说起

    前言

    本学期地图投影课上,李连营老师建议我们使用MATLAB完成每周的作业。从大二上学期开始接触MATLAB学习数学运算和地理数据处理的我,自然不会放过这次机会,每周找了点时间好好研究了一下,把作业比较轻松地就搞定了。不过由于网上相关的教程、资料比较少,在夹杂了多种专业词汇的同时,又没有中文翻译,也是让人感到头疼。在此想总结一下相关的函数,以帮助其他需要使用工具箱的人。作为一个学生,我所接触的仅仅是皮毛,也必然会有一些错误,希望看到的人能够指出,谢谢。

    PS:本文基于MATLAB  R2014a版本。

    1                   作业案例:地图投影作业5-7

    在作业5、6、7中,李老师分别要求我们在MATLAB中画出正轴、横轴、斜轴的方位、圆柱、圆锥投影(参数自定),查阅MATLAB帮助后,在其基础上完成了作业。以等角横轴圆柱投影为例,源代码及效果如下图所示:

    landareas = shaperead('landareas.shp','UseGeoCoords',true);

    axesm ('mercator', 'Frame','on', 'Grid', 'on','origin',[0 120 0]);

    geoshow(landareas,'FaceColor',[11 .5],'EdgeColor',[.6 .6 .6]);

    tissot;  

    展开全文
  • matlab开发-可视化地图

    2019-08-24 06:53:56
    matlab开发-可视化地图。PColormat允许您使用颜色渐变可视化矩阵
  • 实用文档 图像伪彩色处理 近几年来 , 随着多媒体技术和因特网的迅速发展和普及 , 数字图像处理技术受到了前所未有的广泛重视 , 出现了许多新的应用领域最显著的是数字图像处理技术已经从工业领域实验室走入了商业...
  • MATLAB地图工具箱学习总结(三)地图工具箱的基本知识 MATLAB地图工具箱学习总结系列: (一)从地图投影说起 (二)大圆和恒向线 (三)地图工具箱的基本知识 (四)自定义投影 今天想要介绍的是一些比较基础...
  • 实用文档 图像伪彩色处理 近几年来,随着多媒体技术和因特网的迅速发展和普及 ,数字图像处理技术受到 了前所未有的广泛重视,出现了许多新的应用领域最显著的是数字图像处理技 术已经从工业领域实验室走入了商业领域及...
  • MATLAB地图工具箱学习总结(四)自定义投影 MATLAB地图工具箱学习总结系列: (一)从地图投影说起 (二)大圆和恒向线 (三)地图工具箱的基本知识 (四)自定义投影 这是本系列的最后一篇文章,准备给大家讲...
  • 实用标准文案 目 一 程 目的? ? ? 3 二 程 要求? ? .3 三 程 的内容? . ? ? 3 四 目分析? ? .3 五 体 ? ? . .4 六 具体 ? . ?5 文件.5 1.1 打开?5 1.2 保存.5 1.3 退出.5 ?5 6.2.1 灰度.5 6.2.2 亮度.6 6.2.3 截 ?...9
  • ...需要用一些地图工具,arcgis懒得装了,GMT(generic mapping tools)太复杂,因此搜到了m_map, 正好是MATLAB的工具箱。于是研究了一晚上。 一、m_map 工具箱的安装 https://www.eoas....
  • 该函数使用Matlab 调用百度地图API,通过输入经纬度或地址等信息从服务器爬取地图图片,支持地图打点、标注功能
  • 本学期的地图投影课程已经结束了,这篇博客用于记录自己在学习当中的一些心得,也为了给遇到同样问题的人提供一些可参考的思路。当然,限于时间和本人的能力,文章中必然会出现一些...二是计算推导类,借助 matlab ...
  • 使用MATLAB Mapping工具箱创建和编辑地图 文章目录使用MATLAB Mapping工具箱创建和编辑地图一、创建底图二、在底图上显示数据三、地理计算 使用地图制作工具箱,可以在MATLAB环境中读取、分析和显示地理信息。因为...
  • MATLAB绘制栅格化地图%创建具有障碍物的栅格地图%矩阵中0代表黑色栅格a = ones(20);a(33:7)=0;a(3:107)=0;a(103:7)=0;a(1713:17)=0;a(10:1713)=0;a(1013:17)=0;a(1415)=0;b = a;%disp(a(endend));b(end+1end+1) = 0;...
  • MATLAB绘制世界地图

    2018-05-30 23:46:27
    一套自己编写的MATLAB绘制世界地图的代码。里面带了一份成品,在MATLAB下运行world_map.m文件,运算快速,练手用。
  • matlab地图经纬度

    2021-05-13 10:50:30
    现在我画好了一张地图,经度是每隔三度一个经度,但是现在想让每隔四度一个经度应该怎么改。我用了修改X轴刻度值的方法,但是没用</p>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,009
精华内容 2,803
关键字:

matlab地图

matlab 订阅