www.gusucode.com > map 案例源码 matlab代码程序 > map/DisplayVectorMapsAsLinesOrPatchesExample.m
%% Display Vector Maps as Lines or Patches % This example shows how to display vector maps as lines or patches % (filled-in polygons). Mapping Toolbox functions let you display patch % vector data that uses NaNs to separate closed regions. %% % Use the |who| command to examine the contents of the |conus| % (conterminous U.S.) MAT-file and then load it into the workspace. Vector % map data for lines or polygons can be represented by simple coordinate % arrays, geostructs, or mapstructs. The variables |uslat| and |uslon| % together describe three polygons (separated by NaNs) the largest of which % represent the outline of the conterminous United States. The two smaller % polygons represent Long Island, NY, and Martha's vineyard, an island off % Massachusetts. The variables |gtlakelat| and |gtlakelon| describe three % polygons (separated by NaNs) for the Great Lakes. The variables % |statelat| and |statelon| contain line-segment data (separated by NaNs) % for the borders between states, which is not formatted for patch display. % Copyright 2015 The MathWorks, Inc. who -file conus.mat load conus %% % Verify that line and polygon data contains NaNs (hence multiple objects). find(isnan(gtlakelon)) %% % Read the |worldrivers| shapefile for the region that covers the % conterminous United States. uslatlim = [min(uslat) max(uslat)] uslonlim = [min(uslon) max(uslon)] rivers = shaperead('worldrivers', 'UseGeoCoords', true, ... 'BoundingBox', [uslonlim', uslatlim']) %% % Note that the |Geometry| field specifies whether the data is stored as a % |Point| , |MultiPoint| , |Line| , or |Polygon| . rivers(1).Geometry %% % Set up a map axes to display the state coordinates. As conic projections % are appropriate for mapping the entire United States, create a map axes % object using an Albers equal-area conic projection ( |'eqaconic'| ). % Specifying map limits that contain the region of interest automatically % centers the projection on an appropriate longitude. The frame encloses % just the mapping area, not the entire globe. As a general rule, you % should specify map limits that extend slightly outside your area of % interest ( |worldmap| and |usamap| do this for you). Conic projections % need two standard parallels (latitudes at which scale distortion is % zero). A good rule is to set the standard parallels at one-sixth of the % way from both latitude extremes. Or, to use default latitudes for the % standard parallels, simply provide an empty matrix in the call to % |axesm| . figure axesm('MapProjection', 'eqaconic', 'MapParallels', [], ... 'MapLatLimit', uslatlim + [-2 2], ... 'MapLonLimit', uslonlim + [-2 2]) %% % Turn on the map frame, map grid, and the meridian and parallel labels. axis off; framem; gridm; mlabel; plabel %% % Plot a patch to display the area occupied by the conterminous United % States. Use the |geoshow| function with |DisplayType| set to |'polygon'| % . Note that the order in which add layers to a map can affect visibility % because some layers can hide other layers. For example, because some % U.S. state boundaries follow major rivers, display the rivers last to % avoid obscuring them. geoshow(uslat,uslon, 'DisplayType','polygon','FaceColor',... [1 .5 .3], 'EdgeColor','none') %% % Plot the Great Lakes on top of the land area, using |geoshow| . geoshow(gtlakelat,gtlakelon, 'DisplayType','polygon',... 'FaceColor','cyan', 'EdgeColor','none') %% % Plot the line segment data showing state boundaries, using |geoshow| with % |DisplayType| set to |'line'| . geoshow(statelat,statelon,'DisplayType','line','Color','k') %% % Use |geoshow| to plot the river network. Note that you can omit % |DisplayType| geoshow(rivers, 'Color', 'blue')