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
1701008992
我和数学有约:趣味数学及算法解析 7.5 Google是如何快速实现信息检索的
1701008993
1701008994
信息检索(Information Retrieval)是指信息按一定的方式组织起来,并根据信息用户的需要找出有关信息的过程和技术。狭义的信息检索就是信息检索过程的后半部分,即从信息集合中找出所需要的信息的过程,也就是我们常说的信息查寻(Information Search或Information Seek)。
[
上一页 ]
[ :1.701008945e+09 ]
[
下一页 ]