QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 11685|回复: 7
打印 上一主题 下一主题

数字地球-Matlab的map工具箱的应用

[复制链接]
字体大小: 正常 放大

3

主题

2

听众

47

积分

Knight

升级  44.21%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-10 13:25 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

数字地球-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文件。

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
everywhere and anywhere, MATLAB is there...
liwenhui        

70

主题

65

听众

5199

积分

独孤求败

  • TA的每日心情
    擦汗
    2018-4-26 23:29
  • 签到天数: 1502 天

    [LV.Master]伴坛终老

    自我介绍
    紫薇软剑,三十岁前所用,误伤义士不祥,乃弃之深谷。 重剑无锋,大巧不工。四十岁前恃之横行天下。 四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进至无剑胜有剑之境。

    社区QQ达人 邮箱绑定达人 发帖功臣 元老勋章 新人进步奖 风雨历程奖 最具活力勋章

    群组计量经济学之性

    群组LINGO

    回复

    使用道具 举报

    wwciso        

    7

    主题

    5

    听众

    636

    积分

    该用户从未签到

    元老勋章

    回复

    使用道具 举报

    xashili        

    1

    主题

    2

    听众

    93

    积分

    升级  92.63%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    0

    主题

    4

    听众

    305

    积分

    升级  1.67%

    该用户从未签到

    自我介绍
    我是青年汽车,从事客车研发工作,性格开朗,爱好乒乓球

    群组SIMULINK

    群组数学建摸协会

    回复

    使用道具 举报

    0

    主题

    4

    听众

    305

    积分

    升级  1.67%

    该用户从未签到

    自我介绍
    我是青年汽车,从事客车研发工作,性格开朗,爱好乒乓球

    群组SIMULINK

    群组数学建摸协会

    回复

    使用道具 举报

    0

    主题

    4

    听众

    305

    积分

    升级  1.67%

    该用户从未签到

    自我介绍
    我是青年汽车,从事客车研发工作,性格开朗,爱好乒乓球

    群组SIMULINK

    群组数学建摸协会

    数字地球-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文件。

    回复

    使用道具 举报

    6

    主题

    7

    听众

    676

    积分

    升级  19%

  • TA的每日心情
    奋斗
    2015-11-13 15:06
  • 签到天数: 210 天

    [LV.7]常住居民III

    社区QQ达人

    群组Matlab讨论组

    群组数学建摸协会

    群组全国大学生数学建模竞

    群组学术交流A

    群组学术交流B

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-25 16:25 , Processed in 1.181871 second(s), 90 queries .

    回顶部