[轉][修]利用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM