博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在matlab中对中国地图中的不同省份按照高度进行渲染
阅读量:6152 次
发布时间:2019-06-21

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

直接上优化后的代码和效果图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
colour_totall=128;
 
% 载入地图数据 --各省的多边形数据
shp_data=shaperead(
'maps/bou2_4p.shp'
'UseGeoCoords'
, true);
% 省
 
%{
// 
matlab 
2016b已经解决这个问题了
% 检查数据发现中午名称为乱码,可能是由于字符编码引起的,需要纠正文件导入时出现的乱码
% 中文名称记录在相应的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'
);
data=d.data; 
% 海拔高度
province_arr=d.textdata; 
% 相对应的省的名称
 
% 定义地图参数
% 针对不同省份,分别设置不同的颜色(FaceColor)
mycolormap=summer(colour_totall); 
%  定义颜色
 
% 生成不同区域按大小的颜色,按照人口数目多少分别指定不同的颜色.人口越多,颜色越突出
geo_name={shp_data.NAME}';
max_height = 
max
(data);
n=
length
(data); 
% provice num
symbol_spec=
cell
(1,n); 
% 预定义变量可以加快处理速度
for 
i
=1:n
    
height_tmp=data(
i
);
    
c_index=
floor
( colour_totall * height_tmp / max_height );
    
c_index(c_index<1)=1;
    
tmp_pn=province_arr{
i
};
    
geoidx= 
find
(
strncmp
(tmp_pn, geo_name, 
length
(tmp_pn)) == 1);
    
if 
numel
(geoidx) > 0
        
province_name=geo_name( geoidx(1) );
        
symbol_spec{
i
} = {
'NAME'
char
(province_name), 
'FaceColor'
, mycolormap( c_index, :) };
    
end
end
 
 
% 显示地图
figure
ax=worldmap(
'china'
); 
% 使用worldmap的坐标轴作图
setm(ax,
'grid'
,
'off'
% 关闭grid
setm(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]},...
    
symbol_spec{:}...
    
);
geoshow(shp_data,
'SymbolSpec'
,symbols); 
% 此处用mapshow投影会不正确
 
% 图的标注
% 在图像右侧显示bar
colormap
(summer(colour_totall))
hcb=
colorbar
(
'EastOutside'
);
step=
round
(max_height/11);
set
(hcb,
'YTick'
,(0:.1:1))
set
(hcb,
'YTickLabel'
,
num2cell
(0:step:max_height))
 
% 给图像加标题
title
(
'中国各省海拔分布图(单位:m)'
)

 

Source Code are here:

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/8196379.html,如需转载请自行联系原作者
你可能感兴趣的文章
Linux下ftp和ssh详解
查看>>
跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
查看>>
js时间和时间戳之间如何转换(汇总)
查看>>
js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用
查看>>
java中string和int的相互转换
查看>>
P1666 前缀单词
查看>>
HTML.2文本
查看>>
Ubuntu unity安装Indicator-Multiload
查看>>
解决Eclipse中新建jsp文件ISO8859-1 编码问题
查看>>
7.对象创建型模式-总结
查看>>
1、块:ion-item
查看>>
【论文阅读】Classification of breast cancer histology images using transfer learning
查看>>
移动端处理图片懒加载
查看>>
jQuery.on() 函数详解
查看>>
谈缓存和Redis
查看>>
【转】百度地图api,根据多点注标坐标范围计算地图缩放级别zoom自适应地图
查看>>
用户调研(补)
查看>>
ExtJS之开篇:我来了
查看>>
☆1018
查看>>
oracle 去掉空格
查看>>