数学建模社区-数学中国
标题: 数字地球-Matlab的map工具箱的应用 [打印本页]
作者: 海岩秋沙 时间: 2005-3-10 13:25
标题: 数字地球-Matlab的map工具箱的应用
数字地球-Matlab的map工具箱的应用
在美国副总统戈尔提出数字地球概念后,中国也随之掀起了一场数字地球的热潮。前一段时间听了中科院地理所的刘纪远所长作的报告,他们建立了一个一公里像元的各种地理属性的综合数据库,并且以此为依托给国务院作了几份图文并茂、有凭有据的论文,讨论了西部大开发及沙暴现象等重要问题。
在matlab中也有一个很出色的工具箱map能够处理各种地图地理信息。下面我介绍一个利用它制作的地球仪。数据来至map工具箱中的topo.mat文件,这里有一个关于地球各点海拔高度的数据的数组topo,大小是180*360,表示的是180个纬线和360个经线的交叉网格。
imagesc(flipud(topo))
可以看出该数据的摆放次序是,在纵向1到180表示从南极到北极,而横向是从格林威治0度经线开始向东。
知道了这些情况后,就可以设计我们的地球仪了。我决定在一个球体上同时用起伏和颜色来表示陆地,而根据我们的一般看法,把海洋的地方设置成光滑的,而只用颜色来表现深浅。另外陆地表面的起伏相对于地球的半径来说实在是太小了,所以为了有很好的视觉效果,做了一些比例的放大。
源程序如下
function []=solidearth()
load topo; %DEM of the earth
ptopo = topo; ptopo(topo<0) = 0; %Erase the water to zero
ptopo = 100*ptopo/(almanac('earth','radius')*1000); %scale the surface updown against the earth's radius
axesm globe; %use the project tool provided by map toolbox
view([180 38]); %turn it to the side that we see China in center
axis off;
meshm(topo,topolegend,size(topo),ptopo); %cast a mesh grid to axis
demcmap(topo) %show it with color
shading interp
lightm(23.5,71,'Color','y') %a remote light
material([.5 .7 1.5]); lighting phong %add material
camzoom(2); %zoom
这里重要的是几个map工具箱中的投影函数,源程序中作了简要的说明,要想真正理解它们请认真阅读帮助文件。
既然是地球仪就应该让它转起来,下面再简单的生成一个movie。
先用camzoom把地球调整到在figure中占一个合适的大小,然后把整个figure缩小到较小的尺寸(画面越大就需要越多的内存)。
for i=1:20; camorbit(360/20,0); M(:,i)=getframe(gcf); end;
其中camorbit是让视角绕球心旋转,getframe是采集画面的函数。
接着用movie(M)就可以观看旋转的地球了!当然你还可以把这些画面输出到标准的图形文件中,用其他的图像工具把它们转换成动画gif或avi文件。
作者: liwenhui 时间: 2007-11-8 18:31
wonderful!
作者: wwciso 时间: 2007-11-11 12:19
工具箱怎么用?
[此贴子已经被作者于2007-11-11 12:19:35编辑过]
作者: xashili 时间: 2009-2-20 18:02
如何应用呀?
作者: cxdneoplan 时间: 2010-6-15 12:15
工具箱怎么用?
作者: cxdneoplan 时间: 2010-6-15 12:15
如何应用呀?wonderful!
作者: cxdneoplan 时间: 2010-6-15 12:16
数字地球-Matlab的map工具箱的应用
4 a& N3 l8 F) \, I
在美国副总统戈尔提出数字地球概念后,中国也随之掀起了一场数字地球的热潮。前一段时间听了中科院地理所的刘纪远所长作的报告,他们建立了一个一公里像元的各种地理属性的综合数据库,并且以此为依托给国务院作了几份图文并茂、有凭有据的论文,讨论了西部大开发及沙暴现象等重要问题。
3 p& i+ T. y9 L
在matlab中也有一个很出色的工具箱map能够处理各种地图地理信息。下面我介绍一个利用它制作的地球仪。数据来至map工具箱中的topo.mat文件,这里有一个关于地球各点海拔高度的数据的数组topo,大小是180*360,表示的是180个纬线和360个经线的交叉网格。
! O8 X& |0 i% |/ F
imagesc(flipud(topo))
% G/ C, }3 ]& |7 a% t$ p' K4 g
% U0 |8 b+ B5 E
可以看出该数据的摆放次序是,在纵向1到180表示从南极到北极,而横向是从格林威治0度经线开始向东。
* x1 j" W$ v9 M5 v8 V/ c$ [( F
知道了这些情况后,就可以设计我们的地球仪了。我决定在一个球体上同时用起伏和颜色来表示陆地,而根据我们的一般看法,把海洋的地方设置成光滑的,而只用颜色来表现深浅。另外陆地表面的起伏相对于地球的半径来说实在是太小了,所以为了有很好的视觉效果,做了一些比例的放大。
" N( y, R+ o+ B; v% `
源程序如下
3 T2 u: K z& r
function []=solidearth()0 g5 l- O! _! A7 C: ^. r) D6 z load topo; %DEM of the earth $ E5 w. C* S, h' optopo = topo; ptopo(topo<0) = 0; %Erase the water to zero$ ?( k% p; p* C _& _$ m' K ptopo = 100*ptopo/(almanac('earth','radius')*1000); %scale the su**ce updown against the earth's radius 2 S% `8 f2 V8 |axesm globe; %use the project tool provided by map toolbox 5 X5 h- [( v0 h c8 X) W( a1 Lview([180 38]); %turn it to the side that we see China in center $ c& u6 l1 D3 c( B( ~/ vaxis off; 1 x2 l5 k; j. V5 T1 n) xmeshm(topo,topolegend,size(topo),ptopo); %cast a mesh grid to axis ' k2 R7 ?4 @( R$ s6 f5 Ndemcmap(topo) %show it with color; U* ^' }7 J3 D- J shading interp, A( ~) i- | r/ X" {9 w lightm(23.5,71,'Color','y') %a remote light& X0 Q0 [, }2 G9 B6 i' j. X; L material([.5 .7 1.5]); lighting phong %add material % k( w' a+ T. }7 o) t; d9 ocamzoom(2); %zoom) i; i1 \9 E5 f* t6 N5 ?. ^ 5 p! c% k9 [+ @- w7 z8 @+ w 这里重要的是几个map工具箱中的投影函数,源程序中作了简要的说明,要想真正理解它们请认真阅读帮助文件。
! l( y/ S4 ~5 V5 o# Z) q. a
! z# X8 s* z( U l, ^
既然是地球仪就应该让它转起来,下面再简单的生成一个movie。
- H3 q: }# Z9 [2 o. w
先用camzoom把地球调整到在figure中占一个合适的大小,然后把整个figure缩小到较小的尺寸(画面越大就需要越多的内存)。
* @6 a; |$ Q) I" v( H+ N
for i=1:20; camorbit(360/20,0); M(:,i)=getframe(gcf); end;
! G3 G) S+ w/ ~2 D
其中camorbit是让视角绕球心旋转,getframe是采集画面的函数。
8 P) l" `2 Y# q( y% P/ L, V8 h( z+ l
接着用movie(M)就可以观看旋转的地球了!当然你还可以把这些画面输出到标准的图形文件中,用其他的图像工具把它们转换成动画gif或avi文件。
作者: 舞情_Dong 时间: 2013-1-19 09:46
有系统的教程资料么?
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |