一.绘制点
%生成背景地图地图
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