使用MATLAB Mapping工具箱创建和编辑地图

本文详细介绍了如何使用MATLAB Mapping工具箱创建和编辑地图,包括选择投影方法创建底图、在底图上显示数据以及进行地理计算。通过多个示例展示了如何显示海岸线、陆地区域、规则矩阵地图以及等值线图,同时阐述了地理数据的分析和处理方法。
摘要由CSDN通过智能技术生成


使用地图制作工具箱,可以在MATLAB环境中读取、分析和显示地理信息。因为地球和大部分天体通常都是球形的,所以地理数据常常在球坐标系或椭球坐标系中定义。地球曲面上定义的距离、方位、面积甚至直线都与MATLAB笛卡儿坐标系中的不同。
将球体上的地理信息显示到平面上还需要特殊的绘图技巧。地图制作工具箱可以用简单的命令创建地图。使用工具箱提供的地图数据,可以创建详细的底图。在底图上可以绘制自己的结果。还可以导入高精度的地图数据,这些数据可以从政府或研究性网站上得到。
下面结合实例介绍利用MATLAB地图制作工具箱制作电子地图的一般过程。


一、创建底图

地理数据通常显示在底图上,底图中包含有类似海岸线或地形线的基本特征信息。创建底图的第1步是选择合适的投影方法。投影指的是如何将球体表面的信息表示在平面上。
地图制作工具箱提供了很多投影方法和几种地图集数据,利用它们可以创建对大部分应用都合适的底图。创建地球底图的命令是worldmap。该命令可以生成指定区域的地图。可以用某个洲或国家,或纬度和经度范围定义的区域。如果对区域名称的拼写没有把握,使用没有输入变量的worldmap命令,从显示的列表中选择名称。
【例1】下面打开世界底图,用geoshow函数显示底图。:

worldmap('world')
load coast
geoshow(lat, long)

生成图1。
MATLAB Mapping 底图

图1 在地球底图中定义区域
【例2】下面的语句将陆地部分用绿色进行显示。landareas.shp为shape格式的文件,定义陆地区域。

geoshow('landareas.shp','FaceColor',[0 1.0 0])

生成图2。
在这里插入图片描述

图2 对陆地部分进行着色
在本例中,worldmap命令选择了低分辨率的地图集数据,因为南美洲覆盖的区域很大。该地图集数据包括海岸线、国界、湖和城市等。对于大面积区域的地图,例如南美洲地图,worldmap命令选择低分辨率数据并忽略类似国家名称和城市这样的细节。可以用可选参数覆盖worldmap命令的选项。
【例3】下面的代码首先载入和显示美国所在区域的海岸线轮廓图,陆地区域用绿色填充多边形表示。然后用shaperead函数读入美国各州的边界数据,用geoshow函数显示各州多边形。

ax = worldmap('USA');
load coastlines
geoshow(ax, coastlat, coastlon,...
'DisplayType', 'polygon', 'FaceColor', [.45 .60 .30])
states = shaperead('usastatelo', 'UseGeoCoords', true);
geoshow(ax, states, 'DisplayType', 'polygon')

生成图3。
在这里插入图片描述

图3 美国各州底图
还可以用纬度和经度范围指定目标区域。
【例4】下面的例子创建太平洋的底图。给底图上添加了比例尺,可以用鼠标拖动它的位置。

worldmap([-60 60],[150 -30])
scaleruler
load geoid
geoshow(geoid, geoidrefvec, 'DisplayType', 'texturemap');
load coastlines
geoshow(coastlat,coastlon)

生成图4。
在这里插入图片描述

图4 太平洋的底图
还可以用矩阵数据创建底图。地图制作工具箱定义了两种矩阵数据。规则矩阵地图显示在等边网格上,行和列与东西方向和南北方向对齐。一般的矩阵地图可以有任意间隔和对齐方式的元素。
【例5】下面是整个世界的规则矩阵地图示例。geoid工作空间文件包含一个一度网格上的高程矩阵数据。该文件可以看作是没有海浪、潮汐和陆地影响的海面。将worldmap作为一个规则矩阵地图提供时,地理范围与矩阵的范围有关。这里,geoid高程数据显示为彩色表面。geoshow命令用曲面表示数据。

load geoid
worldmap(geoid,geoidlegend)
geoshow(geoid, geoidrefvec, 'DisplayType', 'surface');

生成图5。
在这里插入图片描述

图5 世界规则矩阵地图
其他颜色常用于显示高程矩阵。这种类型的数据通常称为数字高程模型(DEM)。
【例6】下面的例子用三维光照表面显示了朝鲜半岛的高程和海深。在垂向上作了很大的拉伸,以便突出地形特征。用daspectm命令控制垂向比例。

load korea
h = worldmap(map, refvec);
set(h, 'Visible', 'off')
geoshow(h, map, refvec, 'DisplayType', 'texturemap')
demcmap(map)
view(3)

生成图6。
在这里插入图片描述

图6 朝鲜半岛的数字高程模型

二、在底图上显示数据

地图制作工具箱可以显示矢量、矩阵和结构类型的地理数据。工具箱中的命令名通常与MATLAB中的图形命令相似,只是在末尾添加了一个“m”。这个“m”表示数据是地理数据,并且要用已经定义的地图投影进行显示。例如,在MATLAB中,使用plot(x,y),将一个点矢量显示为直线段;相应地,对于地理数据,应该使用类似plotm(lat,long)的语法格式。
因为大部分地图中间都包含了几种信息,新的绘图命令向地图坐标系中添加图形元素而不是替换图形元素。另外,x坐标和y坐标的比例设置为相等。用daspectm命令控制z轴的比例。
【例7】下面的例子显示如何通过在地图上单击找到点的地理位置,然后显示结果。将数据显示为没有标记的直线段,或显示为没有直线段的标记,改变线型的指定。

ax = worldmap('USA');
load coastlines
geoshow(ax, coastlat, coastlon,...
'DisplayType', 'polygon', 'FaceColor', [.45 .60 .30])
[lat,lon] = inputm(4);
plotm(lat,lon,'-+r')
hidem(gca)

生成图7。
在这里插入图片描述

图7 在地图上指定位置
显示矩阵数据的一个通用办法是显示为等值线图。地图制作工具箱提供了多种方法来表示等值线。等值线用contourm命令创建,填充的等值线用contourfm命令创建。将矩阵显示为表面并用contourcmap命令控制颜色查找表可以达到使用contourfm命令绘制等间隔的等值线的相同效果。
【例8】下面仍旧使用图18-5用过的朝鲜半岛的数据geoid。controurm和clabelm命令在地图上每隔10 m显示和标注geoid的等值线。

load korea
h = worldmap(map, refvec);
set(h, 'Visible', 'off')
geoshow(h, map, refvec, 'DisplayType', 'texturemap')
demcmap(map)
load geoid
[c,h] = contourm(geoid,geoidlegend,-100:10:100,'r');
ht = clabelm(c,h); set(ht,'color','r')
hidem(gca)

生成图8。
在这里插入图片描述

图8 在地图上添加等值线

三、地理计算

除了地理显示能力外,工具箱还包括一个用于分析地理数据的扩展命令集。包括单位转换、地理几何如距离、方位、高程、定位和相交等方面的命令。也可以创建地理数据如跟踪线、圆、椭圆和缓冲区等。
【例9】

nm2km(1)
ans =
        1.8520
sm2km(1)
ans =
       1.6093
dst = distance(45,115,30,135)
dst =
       21.7213
deg2km(dst)
ans =
       2.4153e+03
azimuth(45,115,30,135)
ans =
        126.8377

规则矩阵地图可以用于多种操作。矩阵地图能力包括通过地理定位、将矢量转换为矩阵数据、编码闭合区域和计算坡度、方位和梯度,以及地形的可见性来插入和提取值。
【例10】下面计算黄海中某点的水深和geoid高程。

load korea
ltln2val(map,maplegend,35,125)
ans =
   -64
load geoid
ltln2val(geoid,geoidlegend,35,125)
ans =
   19.7490
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tgzssir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值