博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MATLAB—地图
阅读量:4974 次
发布时间:2019-06-12

本文共 9497 字,大约阅读时间需要 31 分钟。

一、画亚洲地图

1、worldmap()

(1)

clear allworldmap('World')

clear allworldmap('World')%世界地图load coast %载入海岸线plotm(lat,long)%经纬度

(2)

clear allax = worldmap('World');setm(ax, 'Origin', [0 180 0])%更改经度,从0到180再到0land = shaperead('landareas', 'UseGeoCoords', true);%陆地geoshow(ax, land, 'FaceColor', [0.5 0.7 0.5])

 

clear allax = worldmap('World');setm(ax, 'Origin', [0 180 0])%更改经度,从0到180再到0land = shaperead('landareas', 'UseGeoCoords', true);geoshow(ax, land, 'FaceColor', [0.5 0.7 0.5])lakes = shaperead('worldlakes', 'UseGeoCoords', true);geoshow(lakes, 'FaceColor', 'blue')rivers = shaperead('worldrivers', 'UseGeoCoords', true);geoshow(rivers, 'Color', 'blue')cities = shaperead('worldcities', 'UseGeoCoords', true);geoshow(cities, 'Marker', '.', 'Color', 'red')

land = shaperead('landareas', 'UseGeoCoords', true)%陆地  后者参数x,y为经纬度geoshow(land, 'FaceColor', [0.5 0.7 0.5])

 (3)

clear allworldmap([-50 50],[160 -30]) %载入范围load geoid %载入水准面数据geoshow(geoid, geoidrefvec, 'DisplayType', 'texturemap'); %画图显示load coast %载入海岸线geoshow(lat, long) %显示

2、shaperead函数

 (1)

clear alllandareas = shaperead('landareas.shp','UseGeoCoords',true);axesm ('mercator', 'Frame', 'on', 'Grid', 'on','origin',[0 120 0]);geoshow(landareas,'FaceColor',[1 1 .5],'EdgeColor',[.6 .6 .6]);

 UseGeoCoords:可以选择为true或者false(默认),即是否使用地理结构(GeoStruts)。如果数据已经被投影了就选择false,如果还未被投影,可以选择true以生成投影。

 3、 geoshow的用法

geoshow是用来显示地图数据的函数,非常重要,大部分的地图都使用该函数进行显示。

(1)          基本用法:

                            1)              geoshow(lat,lon)直接输入经纬度,将以该经纬度为中心,生成一小片地图。

                            2)              geoshow(filename)直接输入地图文件名,生成该地图

                            3)              geoshow(_,Name,Value,)输入相关属性并设定参数,生成所需要的地图。

(2)          常用属性:

                            1)              facecolor:定义了地图表面的颜色,需要输入三个参数且均在0至1之间。

                            2)              edgecolor:定义了海岸线边界的颜色,参数值同上。

clear allgeoshow('maps\bou2_4p.shp','FaceColor','G')geoshow('maps\hyd1_4p.shp','FaceColor','b')geoshow('maps\hyd2_4p.shp','FaceColor','r')

clear allax=worldmap([29.5 30.5],[122 123]);%载入地图geoshow(ax,'maps\bou2_4p.shp','FaceColor','G')%将边界线载入地图中

舟山群岛附近

(3)

clear allfigureworldmap('na');%北美地图states = shaperead('usastatehi', 'UseGeoCoords', true);%州界线symspec = makesymbolspec('Polygon', ...   {
'Name', 'Alaska', 'FaceColor', 'red'}, ... {
'Name', 'Hawaii', 'FaceColor', 'red'}); %hawaii和alaska设置为红色geoshow(states, 'SymbolSpec', symspec,... 'DefaultFaceColor', 'blue','DefaultEdgeColor', 'black');%边界黑色,表面颜色蓝色,

 (4)

clear allload koreafigure;worldmap(map, refvec)%空白地图geoshow(gca,map,refvec,'DisplayType','texturemap');%纹理贴图demcmap(map)S = shaperead('landareas','UseGeoCoords',true);geoshow([S.Lat], [S.Lon],'Color','black'); %边界设置为黑色

 

 ()

clear allax=worldmap('china'); % 使用worldmap的坐标轴作图setm(ax,'grid','off') % 关闭gridsetm(ax,'frame','off') % 关闭边框setm(ax,'parallellabel','off') % 关闭坐标轴标记setm(ax,'meridianlabel','off') % 关闭坐标轴标记sheng=shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true);geoshow(sheng); %

关闭边框,关闭坐标轴

4、 makesymbolspec函数

(1)

clear allroads = shaperead('concord_roads.shp');mapshow(roads);

clear allroads = shaperead('concord_roads.shp');geoshow(roads)

 (2)

clear allroads = shaperead('concord_roads.shp');blueRoads = makesymbolspec('Line',{'Default','Color','r'});%红色mapshow(roads,'SymbolSpec',blueRoads);

 

clear allroads = shaperead('concord_roads.shp');blueRoads = makesymbolspec('Line',{'Default','Color','r'});geoshow(roads,'SymbolSpec',blueRoads)

  

(3)

clear allroads = shaperead('concord_roads.shp');roadColors = ...makesymbolspec('Line',{'CLASS',2,'Color','r'},...                      {'CLASS',3,'Color','g'},...                      {'CLASS',6,'Color','b'},...                      {'Default','Color','k'});mapshow(roads,'SymbolSpec',roadColors);

clear allroads = shaperead('concord_roads.shp');roadColors = ...makesymbolspec('Line',{'CLASS',1,'Color','r'},...                      {'CLASS',4,'Color','g'},...                      {'CLASS',5,'Color','b'},...                      {'Default','Color','k'});geoshow(roads,'SymbolSpec',roadColors);

(4)

roads = shaperead('concord_roads.shp');lineStyle = makesymbolspec('Line',... {'CLASS',[1 3], 'LineStyle',':'},... {'CLASS',[4 6],'LineStyle','-.'});mapshow(roads,'SymbolSpec',lineStyle);

 

 

3、

(1)美国分州颜色

clear allax = worldmap('USA');load coastlinesgeoshow(ax, coastlat, coastlon,'DisplayType', 'polygon', 'FaceColor', [.45 .60 .30])

 

美国地图轮廓

clear allax = worldmap('USA');load coastlinesgeoshow(ax, coastlat, coastlon,'DisplayType', 'polygon', 'FaceColor', [.45 .60 .30])states = shaperead('usastatelo', 'UseGeoCoords', true);%州界线geoshow(ax, states, 'DisplayType', 'polygon')

州默认颜色

clear allax = worldmap('USA');load coastlinesgeoshow(ax, coastlat, coastlon,'DisplayType', 'polygon', 'FaceColor', [.45 .60 .30])states = shaperead('usastatelo', 'UseGeoCoords', true);%州界线faceColors = makesymbolspec('Polygon',{
'INDEX', [1 numel(states)], 'FaceColor', ... polcmap(numel(states))}); % NOTE - colors are random,多边形,geoshow(ax, states, 'DisplayType', 'polygon','SymbolSpec', faceColors)

(2)中国分省颜色

clear allax = worldmap('china');setm(ax,'grid','off') % 关闭gridsetm(ax,'frame','off') % 关闭边框setm(ax,'parallellabel','off') % 关闭坐标轴标记,平行线setm(ax,'meridianlabel','off') % 关闭坐标轴标记,子午线states = shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true);%州界线faceColors = makesymbolspec('Polygon',{'INDEX', [1 numel(states)], 'FaceColor', ...  polcmap(numel(states))}); % NOTE - colors are random,多边形,geoshow(ax, states,'DisplayType', 'polygon', 'SymbolSpec', faceColors)

 

 

clear allax = worldmap('china');%load coastlines%geoshow(ax, coastlat, coastlon,'DisplayType', 'polygon', 'FaceColor', [.45 .60 .30])%setm(ax,'grid','off') % 关闭grid%setm(ax,'frame','off') % 关闭边框%setm(ax,'parallellabel','off') % 关闭坐标轴标记,平行线%setm(ax,'meridianlabel','off') % 关闭坐标轴标记,子午线states = shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true);%州界线faceColors = makesymbolspec('Polygon',{'INDEX', [1 numel(states)], 'FaceColor', ...  polcmap(numel(states))}); % NOTE - colors are random,多边形,geoshow(ax, states,'DisplayType', 'polygon', 'SymbolSpec', faceColors)

 4、海拔高度的不同颜色显示

%-- 分省中国地图在MATLAB中的画法 --%% Author: gaospecial@gmail.com% Date: 2012-6-5 14:04:01% 地图数据来源:国家基础地理信息系统网站% 人口数据来源:国家统计年鉴2011版%% 载入地图数据clear all% 载入各省的多边形数据sheng=shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true);% 本文件下的边界省% 检查数据发现中午名称为乱码,可能是由于字符编码引起的,需要纠正文件导入时出现的乱码% 中文名称记录在相应的dbf文件中,可以使用Excel打开,并且不会出现乱码,截取其中的中文保存为文本文件% 然后在导入工作区,并将其保存为*.mat格式文件,随用随取。% 依次替换sheng数据中的乱码【算是变通之法,有谁知道更好的方法一定告诉我哦】load chinese_name.mat % 省,省会,主要城市的正确中文for i=1:length(sheng)    sheng(i).NAME=sheng_chinese_name{i}; % 纠正中文显示错误end%unique(sheng_chinese_name) % 含有34个省(直辖市)的数据,合并相同的值length(sheng) % 共分为925个区块%% 使用importdata向导导入2011年全国31个省的人口数据% data为人口数目 textdata为省名称d=importdata('gaodu.txt');%d=importdata('renkou.txt');data=d.data; % 海拔高度textdata=d.textdata; % 相对应的省的名称%% 定义地图参数% 针对不同省份,分别设置不同的颜色(FaceColor),由人口数据决定颜色数据% 定义颜色k=128;  mycolormap=summer(k);% 生成不同区域按大小的颜色,按照人口数目多少分别指定不同的颜色% 人口越多,颜色越突出geoname={sheng.NAME}';%省的名字,925个max_data = max(data);n=length(data);mysymbolspec=cell(1,n); % 预定义变量可以加快处理速度%%%高度和颜色对应起来,然后省份和颜色对应起来,利用归一化排序,定位for i=1:n    count=data(i);%高度    mycoloridx=floor( k * count / max_data );    mycoloridx(mycoloridx<1)=1;    myprovince=textdata{i};%省,31个    geoidx=strmatch(myprovince, geoname);%从925中挑31的位置    if numel(geoidx) > 0        province_name=geoname( geoidx(1) );        mysymbolspec{i} = {'NAME', char(province_name), 'FaceColor', mycolormap( mycoloridx, :) };%省份和颜色对应    endend%% 显示地图figureax=worldmap('china'); % 使用worldmap的坐标轴作图setm(ax,'grid','off') % 关闭gridsetm(ax,'frame','off') % 关闭边框setm(ax,'parallellabel','off') % 关闭坐标轴标记,平行线setm(ax,'meridianlabel','off') % 关闭坐标轴标记,子午线% 最关键的两个语句symbols=makesymbolspec('Polygon',{'default','FaceColor',[0.9 0.9 0.8],...    'LineStyle','--','LineWidth',0.2,...    'EdgeColor',[0.8 0.9 0.9]},...    mysymbolspec{:}...    );geoshow(sheng,'SymbolSpec',symbols); % 此处用mapshow投影会不正确

 

%% 图的标注% 在图像右侧显示barcolormap(summer(k))hcb=colorbar('EastOutside');step=round(max_data/11);

 

set(hcb,'YTick',(0:.1:1))set(hcb,'YTickLabel',num2cell(0:step:max_data))%设置高度% 给图像加标题title('中国各省海拔分布图(单位:m)')

5、人口的不同颜色显示

%-- 分省中国地图在MATLAB中的画法 --%%% 载入地图数据clear all% 载入各省的多边形数据sheng=shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true);% 本文件下的边界省%% 使用importdata向导导入2011年全国31个省的人口数据% data为人口数目 textdata为省名称d=importdata('renkou.txt');data=d.data; % 人口数据textdata=d.textdata; % 相对应的省的名称%% 定义地图参数% 针对不同省份,分别设置不同的颜色(FaceColor)% 定义颜色k=500;  mycolormap=summer(k);% 生成不同区域按大小的颜色,按照人口数目多少分别指定不同的颜色% 人口越多,颜色越突出geoname={sheng.NAME}';%max_data = max(data);%最大人口n=length(data);%31个省mysymbolspec=cell(1,n); % 预定义变量可以加快处理速度for i=1:n    count(i)=data(i);%人口    mycoloridx(i)=round( k * count(i)/ max_data );%四舍五入    mycoloridx(mycoloridx<1)=1;% 0变1    myprovince{i}=textdata{i};%省        geoidx=strmatch(myprovince{i}, geoname);    if numel(geoidx) > 0 %geoidx元素个数        province_name=geoname( geoidx(1) );%省名字        mysymbolspec{i} = {
'NAME', char(province_name), 'FaceColor', mycolormap( mycoloridx(i), :) }; endend%% 显示地图figureax=worldmap([20 55], [70 140]); % 使用worldmap的坐标轴作图setm(ax,'grid','off') % 关闭gridsetm(ax,'frame','off') % 关闭边框setm(ax,'parallellabel','off') % 关闭坐标轴标记setm(ax,'meridianlabel','off') % 关闭坐标轴标记% 最关键的两个语句symbols=makesymbolspec('Polygon',{
'default','FaceColor',[0.9 0.9 0.8],... 'LineStyle','--','LineWidth',0.2,... 'EdgeColor',[0.8 0.9 0.9]},... mysymbolspec{:}... );geoshow(ax,sheng,'SymbolSpec',symbols); % 此处用mapshow投影会不正确%% 图的标注% 在图像右侧显示barcolormap(summer(k))hcb=colorbar('southOutside');step=round(max_data/10);%四舍五入%set(hcb,'YTick',(0:.1:1))set(hcb,'YTickLabel',num2cell(0:step:max_data))% 给图像加标题title('中国各省人口分布图(单位:)')

 

 

 

 

 

 

 

 

  

 

  

  

 

  

转载于:https://www.cnblogs.com/ruo-li-suo-yi/p/7528554.html

你可能感兴趣的文章
软件工程-读书笔记(1-3章)
查看>>
Sublime 快捷键
查看>>
GNU make manual 翻译(二十六)
查看>>
poj1436
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
pod 常用命令
查看>>
MySQL修复打不开的视图定义
查看>>
PHP max_execution_time 超时
查看>>
NTBootAutofix:一款极为优秀的自动修复XP/VISTA/WIN7系统引导的工具
查看>>
js获取对象、数组的实际长度,元素实际个数
查看>>
asp.net 网站监控方案
查看>>
jquery 日期选择的方案
查看>>
Java数据类型和方法参数
查看>>
实验四
查看>>
一.Oracle的安装与连接
查看>>
【自然语言处理】LDA
查看>>
Lua 跟 C++ 的交互
查看>>
[2012山东省第三届ACM大学生程序设计竞赛]——Mine Number
查看>>
[转]浅谈 C 语言中的 malloc 和 free
查看>>
前端之css
查看>>