将矢量数据显示为线条和区域
将向量数据以线条和区域(实心多边形)的形式显示在地图上。
本页介绍了如何使用地图坐标轴(自 R2023a 起)和基于 axesm 的地图来创建类似的地图。有关地图坐标区与基于 axesm 的地图的比较(包括何时使用每种显示类型),请参阅选择二维地图显示。
准备数据
准备示例中要使用的数据。
将一个包含美国各州的 shapefile 文件读入地理空间表中。该表通过多边形图形以地理坐标形式展示了各州的情况。创建一张关于美国本土各州的子表。
statesGT = readgeotable("usastatehi.shp"); rows = statesGT.Name ~= "Hawaii" & statesGT.Name ~= "Alaska"; conusGT = statesGT(rows,:);
将一个包含全球河流数据的 shapefile 文件读入地理空间表中。该表格使用线形在地理坐标系中表示了各条河流。将河流的范围限定在美利坚合众国本土的地理边界内。
riversGT = readgeotable("worldrivers.shp"); [latlim,lonlim] = bounds(conusGT.Shape,"all"); clippedRivers = geoclip(riversGT.Shape,latlim,lonlim); riversGT.Shape = clippedRivers;
将一个包含全球湖泊数据的 shapefile 文件读入地理空间表中。创建一个包含五大湖的子表。
lakesGT = readgeotable("worldlakes.shp"); lakeNames = ["Lakes Superior, Michigan, Huron","Lake Ontario","Lake Erie"]; greatLakesGT = geocode(lakeNames,lakesGT);
使用地图坐标区创建地图
使用线段和多边形在地图坐标系对象上显示向量数据。
使用适用于美国本土的投影坐标参考系 (CRS) 建立一张地图。使用 ESRI 代码 102003 创建投影 CRS。
figure proj = projcrs(102003,Authority="ESRI"); newmap(proj) hold on
使用 geoplot 函数将数据显示在地图上。
用绿色多边形显示各州。
用不透明的浅蓝色多边形显示五大湖。
用蓝色线条显示河流。
geoplot(statesGT,FaceColor=[0.4660 0.6740 0.1880]) geoplot(greatLakesGT,FaceAlpha=1,FaceColor=[0.3010 0.7450 0.9330]) geoplot(riversGT,Color=[0 0.4470 0.7410])

使用基于 axesm 的地图创建地图
在基于 axesm 的地图上,使用线条和区域显示向量数据。
使用 union 和 buffer 函数创建一个延伸至美国本土以外的多边形。然后,使用 bounds 函数计算用于基于 axesm 的地图的纬度和经度边界。
statesUnion = union(conusGT.Shape); buffered = buffer(statesUnion,2); [latlim,lonlim] = bounds(buffered);
使用 axesm 函数、等面积圆锥投影以及计算出的边界值,创建一张基于 axesm 的地图。当您指定地图边界时,地图会自动将投影中心对准适当的经度。通过将 MapParallels 参量指定为空矩阵,使用标准纬线的默认纬度。
figure axesm(MapProjection="eqaconic",MapParallels=[], ... MapLatLimit=latlim,MapLonLimit=lonlim) axis off
显示地图边框、地图网格、经线标签和纬线标签。
framem gridm mlabel plabel
使用 geoshow 函数将数据显示在地图上。
使用绿色色块显示各州的情况。
用浅蓝色块显示五大湖。
用蓝色线条显示河流。
geoshow(conusGT,FaceColor=[0.8157 0.8863 0.7176]) geoshow(greatLakesGT,FaceColor=[0.3010 0.7450 0.9330]) geoshow(riversGT,Color=[0 0.4470 0.7410])

提示
与
axesm函数不同,worldmap和usamap函数会根据输入数据自动选择合适的限值。若要绘制已处于投影坐标系中的数据,请使用常规的坐标轴对象和
mapshow函数。