zoukankan      html  css  js  c++  java
  • [转][修]利用matlab绘制地图上的点、线、面

    一.绘制点
    %生成背景地图地图  
    h = worldmap('France');
    %读取和显示大陆架  
    landareas = shaperead('landareas.shp','UseGeoCoords', true);  
    geoshow (landareas, 'FaceColor', [1 1 .5]);  
    %埃菲尔铁塔的坐标  
    TowerLon = 2.28;%经度坐标  
    TowerLat = 48.85;%纬度坐标  
    %用红色标记绘制%埃菲尔铁塔  
    geoshow(TowerLat, TowerLon, 'Marker','.','MarkerEdgeColor','red')  
                                      %点显示             红色点
    textm(TowerLat,TowerLon + 0.5, 'Eiffel Tower');%放置文本  
    绘制的图像如下:

    二.绘制线段、河流

    %生成背景地图地图  
    worldmap world;  
    framem on;%set the map axes property Frame to 'on' or 'off'. The default setting for map axes is 'off'.
    %绘制线条  
    linem([15; 0; -45; -25],[-100; 0; 70; 110],'r-'
    linem([15; -30; -60; -65],[-100; -20; 100; 150],'b-')  
    linem([15; 20; 40; 20],[-100; -20; 40; 50], 'g-')  
     
    绘制的线条结果如下:

    绘制线条在地图中是很常用的,geoshow的内部就是调用linem来绘制河流的:

    clc;clear;
    clf;%Clear current figure window
    %生成背景地图地图  
    h = worldmap('France');
    landareas = shaperead('landareas.shp','UseGeoCoords', true);  
    geoshow (landareas, 'FaceColor', [1 1 .5]);  
    %河流数据
    rivers = shaperead('worldrivers''UseGeoCoords', true);  
    %rivers =   128x1 struct array(128条河流) with fields:  
         %   Geometry  几何结构:线型
         %   BoundingBox  河流端点的经纬度
         %   Lon  纬度(点集)
         %   Lat  经度(与经度对应)
         %   Name  名字
    %显示河流  
    geoshow(rivers, 'Color''blue') ·
    rivers(8)  %查看rivers的第八个元素的信息 

    绘制的图形如下:

    三.绘制多边形、州

    %多边形的顶点坐标  
    %注意:数据中多边形的初始顶点和结束顶点必须重合 
    x = [40 55 33 10 0  5  10 40 NaN 10 25 30 25 10 10 NaN 90 80 65 80 90 NaN];  
    y = [50 20 0  0  15 25 55 50 NaN 20 10 10 20 30 20 NaN 10 0  20 25 10 NaN];  
    mapshow(x,y,'DisplayType','polygon') %可以更改'DisplayType'的参数,具体查看帮助
    %mapshow绘制'polygon'注意多边形顶点的环绕方向:
    %1/顺时针为正,里面被填充->"面"  
    %2/逆时针为负,里面不被填充->"洞"  

     

    使用geoshow来绘制美国的地图,每个州都是一个多边形结构:view plain

     

    figure; ax = usamap('conus');  
    axis off                            %不显示坐标轴
    states = shaperead('usastatelo''UseGeoCoords', true);  
        %states =   51x1 struct array(51个州) with fields:
        %每个州都有如下属性,例如取出states(1)
        %        Geometry: 'Polygon'      几何属性是:多边形
        %     BoundingBox: [2x2 double]   最小、最大边界点的坐标
        %             Lon: [1x105 double] 点的纬度
        %             Lat: [1x105 double] 点的经度、这些离散点闭合组成一个州
        %            Name: 'Alabama'      州的名称
        %        LabelLat: 32.282672      
        %        LabelLon: -86.9206  
        %     PopDens2000: 87.6  
    indexConus = 1:numel(states);%州的数目  
    stateColor = [0.5 1 0.5];    %设置颜色  
    %画出所有的州,方法一:
    geoshow(ax, states(indexConus), 'FaceColor', stateColor) %更精确
    %画出所有的州,方法二:
    %geoshow(ax, states, 'FaceColor', stateColor)  
    %只画出一个州
    %geoshow(ax, states(1), 'FaceColor', stateColor)   
    setm(ax, 'Frame''off''Grid''off',...    %Set properties of map axes and graphics objects 
         'ParallelLabel''off''MeridianLabel''off')  
             %平行圈                   %子午圈
    绘制的图形如下:
    原文链接:https://blog.csdn.net/rumswell/article/details/16927565
  • 相关阅读:
    【装机知识】内存条知识总结
    【装机知识】主板知识整理
    【装机知识】CPU知识整理
    SHELL 学历笔记
    tmux 会话恢复(no sessions)
    数据库客户端神器(mycli/pgcli/iredis)
    golang编写二叉树
    编译安装带lua 的 vim 编辑器
    linux 下vim 开发环境配置(通用所有编程语言)
    mac 下安装mysql
  • 原文地址:https://www.cnblogs.com/stxs/p/8666372.html
Copyright © 2011-2022 走看看