打字猴:1.701008945e+09
1701008945 我和数学有约:趣味数学及算法解析 [:1701004240]
1701008946 我和数学有约:趣味数学及算法解析 7.4 玩转Google地球
1701008947
1701008948 谷歌地球(Google Earth,GE)是一款Google公司开发的虚拟地球仪软件,它把卫星照片、航空照相和GIS布置在一个地球的三维模型上。Google Earth于2005年向全球推出,被“PC世界杂志”评为2005年全球100种最佳新产品之一。用户们可以通过下载到自己电脑上的客户端软件,免费浏览全球各地的高清晰度卫星图片。
1701008949
1701008950 具体的Google地球如图7-15所示。
1701008951
1701008952
1701008953
1701008954
1701008955 图7-15 Google地球
1701008956
1701008957 手动旋转Google地球,得到中国板块视图,如图7-16所示。
1701008958
1701008959
1701008960
1701008961
1701008962 图7-16 Google地球之中国
1701008963
1701008964 采用程序进行驱动Google地球,设定视角,程序如下:
1701008965
1701008966     % 创建一个COM server,驱动Google Earth    clc,clear,close all        %清屏和清除变量    warning off                %消除警告    handle = actxserver (‘googleearth.ApplicationGE’);    %设定视角位置    lat = 37.77742;    long = -122.4202;    alt = 10000;    altMode = 2;    range = 0;    tilt = 0;    heading = 0;    speed = 1;        %设置Google Earth视角参数    handle.SetCameraParams(lat,long,alt,altMode,range,tilt,heading,speed);    %获取视角中心目标点    my_target = handle.GetPointOnTerrainFromScreenCoords(0,0);        pause(5)    %设置聚焦点    new_target = handle.GetCamera(0);    set(new_target, ‘FocusPointLatitude’, 37.8262);    set(new_target, ‘FocusPointLongitude’, -122.4996);    set(new_target, ‘FocusPointAltitude’, 235);    set(new_target, ‘FocusPointAltitudeMode’, 2);    set(new_target, ‘Range’, 0);    set(new_target, ‘Tilt’, 75);    set(new_target, ‘Azimuth’, 105);    handle.SetCamera(new_target,1);
1701008967
1701008968 运行程序得到如图7-17所示的结果。
1701008969
1701008970
1701008971
1701008972
1701008973 图7-17 Google地球驱动
1701008974
1701008975 从Google地球中获取实际地形数据,可以用于地形地貌分析,这个操作显得尤为重要,借助于程序,用户需要了解地貌所在的位置,才能精确的进行截取,并得到地貌数据,具体的程序如下:
1701008976
1701008977     function ysw2_3    %怎么读取Google地球数据    %open GR    ge_app = actxserver(‘GoogleEarth.ApplicationGE’); %GoogleEarth 6.0测试    %等待安装    pause(7)    %设定视角    camPos = ge_app.GetCamera(0);    %视角位置    camPos.FocusPointLatitude        = 51.10719595658241;    camPos.FocusPointLongitude       = 13.638689585783112;    camPos.FocusPointAltitude        = 0.0;    camPos.FocusPointAltitudeMode    = ‘AbsoluteAltitudeGE’;    camPos.Range                     = 11780.53549488341;    camPos.Tilt                      = 0;    camPos.Azimuth                   = 7;  %0 < Speed <5 —> Speed> 5: Teleport     ge_app.SetCameraParams(camPos.FocusPointLatitude, camPos.FocusPointLongitude, camPos.FocusPointAltitude, camPos.    FocusPointAltitudeMode, camPos.Range, camPos.Tilt, camPos.Azimuth, 6);        %measure x and y - distances    u_li   = ge_app.GetPointOnTerrainFromScreenCoords(-1,-1);    %左下方    u_re   = ge_app.GetPointOnTerrainFromScreenCoords(1,-1);     %右下方    o_li   = ge_app.GetPointOnTerrainFromScreenCoords(-1, 1);    %左上方    dist_u = pos2dist(u_li.Latitude ,u_li.Longitude, u_re.Latitude , u_re.    Longitude  ,1);                                              %distance x    dist_o = pos2dist(u_li.Latitude ,u_li.Longitude, o_li.Latitude , o_li.    Longitude  ,1);                                              %distance y        %-1到1上产生网格    [X,Y] = meshgrid(-1:(1/30):1, -1:(1/30):1);    Z     = NaN(size(X));                                        %高度数据    %获取海拔 from GE    for i= 1: 1 : size (X,1)        for j =1:1: size (X,2)            pot = ge_app.GetPointOnTerrainFromScreenCoords(X(i,j), Y(i,j) );            Z(i,j) = pot.Altitude;        end;    end;        %计算实际高度    X_dist = (X + 1).*0.5.*dist_u;                               %km    Y_dist = (Y + 1).*0.5.*dist_o;                               %km    Z_dist = Z;                                                  %海拔m            %获取RGB图像 from GE    jmouseemu([600,500],‘normal’);                               %设置视角     inputemu(‘key_alt’,‘c’);                                     %复制图像      pause(2);                                                    %等待    [imdata] = clipboardimage(‘jpg’);                            %得到图像          %转换为索引图像    [X2, map2] = rgb2ind(imdata, 255);                           %uint8        %绘制截取曲面    figure(‘Color’, [1 1 1 ]);    surface(X_dist,Y_dist,Z_dist,flipud(X2),‘FaceColor’,‘texturemap’,‘EdgeColor’,‘none’, ‘CDataMapping’,‘direct’)    colormap(map2);    xlim([0 dist_u]);    ylim([0 dist_o]);    view([-12,72]);    box on    grid on
1701008978
1701008979 运行程序得到如图7-18所示的结果。
1701008980
1701008981
1701008982
1701008983
1701008984 图7-18 Google地球地貌特征获取
1701008985
1701008986 谷歌地球可让你前往世界上任何地方,以查看卫星图像、地图、地形、3D建筑物及来自外层空间星系的峡谷海洋。你还可以探索丰富的地理内容,保存你的参观场所与其他人分享。
1701008987
1701008988
1701008989
1701008990
1701008991 我和数学有约:趣味数学及算法解析 [:1701004241]
1701008992 我和数学有约:趣味数学及算法解析 7.5 Google是如何快速实现信息检索的
1701008993
1701008994 信息检索(Information Retrieval)是指信息按一定的方式组织起来,并根据信息用户的需要找出有关信息的过程和技术。狭义的信息检索就是信息检索过程的后半部分,即从信息集合中找出所需要的信息的过程,也就是我们常说的信息查寻(Information Search或Information Seek)。
[ 上一页 ]  [ :1.701008945e+09 ]  [ 下一页 ]