一 谷歌地球概述

谷歌地球(Google Earth,GE)是一款谷歌公司开发的虚拟地球仪软件,它把卫星照片、航空照相和GIS布置在一个地球的三维模型上。用户可以通过一个下载到自己电脑上的客户端软件,免费浏览全球各地的高清晰度卫星图片。Google地球分为免费版、专业版。

中文名 谷歌地球 原版名称 Google Earth 其他名称 Google地球

来源
Google Earth来源于Keyhole(锁眼)公司自家原有的旗舰软件。
Keyhole是一家卫星图像公司,总部位于美国加州山景城(Mountain View),成立于2001年,从事数字地图测绘等业务,它提供的Keyhole软件允许网络用户浏览通过卫星及飞机拍摄的地理图像,这一技术依赖于数以TB计的海量卫星影像信息数据库--而这正是Google Earth的前身。
2004年10月27日Google宣布收购了Keyhole公司,并于2005年6月推出了Google Earth系列软件。整体来说Google Earth和以前的Keyhole并没有什么太大的差别(影像数据、功能都差不多,只是界面作了调整)--但与Keyhole的运营思路不同的是,Google将最基本版本的Google Earth定义为Free软件,可以不限时间地自由使用,而相应的Keyhole以前只允许试用7天并且试用版面的主界面上一直有个大大的“TRIAL MODE”水印--在这二点上的确可以看出Google公司的远视之处。
特色
Google earth的卫星影像,并非单一数据来源,而是卫星影像与航拍的数据整合。其卫星影像部分来自于美国DigitalGlobe公司的QuickBird(快鸟)商业卫星与EarthSat公司(美国公司,影像来源于陆地卫星LANDSAT-7卫星居多),航拍部分的来源有BlueSky公司(英国公司,以航拍、GIS/GPS相关业务为主)、Sanborn公司(美国公司,以GIS、地理数据、空中勘测等业务为主)、美国IKONOS及法国SPOT5。其中SPOT5可以提供解析度为2.5米的影像、IKONOS可提供1米左右的影像、而快鸟就能够提供最高为0.61米的高精度影像,是全球商用的最高水平

。在卫星图像方面,美国五角大楼每年都会给予其三大主要合作伙伴DigitalGlobe、IKONOS和ORBIMAGoogle Earth数十亿美元的资助,作为回报自然是这些公司的卫星数据将在第一时间交给五角大楼作为军事应用,而且针对某些敏感区域在规定的时限内不允许商业化。当然,这些公司还是会将限制之外的影像出售,如Keyhole(后来的Google EARTH) 就是DigitalGlobe的一个买主,而中国很多和DG公司也有业务合作,如在的当地政府就跟该公司购买过本城市的某波段卫星图像(某个省会城市),整图大小共6GB多,耗资数十万元人民币。另广东2004年买的某地区共2500多平方公里卫星影像共耗资146万元人民币(快鸟的多波段彩色合成的现成影像针对大陆地区的价格约是30美元/平方公里,台湾地区的价格也是如此。如果是定购的话当然价格会更贵)。如果哪位同学有意向当然也可购买,这些公司在大陆都分别有了代理商,而且Google Earth中也为DG公司的卫星影像销售埋下了小小伏笔,后详。

二 使用谷歌地球

下载;

安装好后如下;

启动程序运行;没反应;界面如下图;

对此情况,网上多有论述;下面操作一遍;打开如下图位置;

把hosts文件清空,拷贝入下面内容;

127.0.0.1 Localhost

  173.194.64.141 www.panoramio.com

  173.194.46.19 www.google.com

  173.194.46.1 kh.google.com

  203.208.36.1 kh.google.com

  203.208.36.2 kh.google.com

  203.208.36.3 kh.google.com

  203.208.36.4 kh.google.com

  203.208.36.5 kh.google.com

再打开,好了,地球出来了,可以玩儿了;更换hosts里的内容是由于:

在C:\Windows\System32\drivers\etc目录下,有个hosts文件,这个文件是google的专用设置文件(对其它软件不起作用,放心改),起配置IP的作用,这文件是玩Google earth必须要接触的文件,有以下两个原因。

  1、Google earth的服务器地址经常要变。Google在全世界有许许多多的服务器,因为国情的问题或IP被封杀等问题,会造成连不上服务器。那么,就需要手动改变服务器地址,
  2、某些软件看这个文件不顺眼,要改这文件。确定文件是否被修改,可以看hosts里面每行的内容,有的在IP地址前面被打上了#,或IP地址被删除。这是由于国内的某些杀毒软件常会偷偷地干这种事。为了应付被恶意修改,除了备份该文件外,有时还需要手工修改。

注意,有时打开时间会比较长,界面一直显示一片黑色,没什么反应,有时要相当的时间才能出来地球;因为连接谷歌地球服务器的应用程序太多;

三 谷歌地球 COM API 开发入门实例

进行谷歌地球 COM API 开发首先要安装谷歌地球,如上面二;

在VS2010中新建一个Winform项目,然后如下添加引用;

如果出现下图错误;

将引用组件的嵌入互操作类型改为 false,如下图;

码码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EARTHLib;namespace Demo1
{public partial class Form1 : Form{/// <summary>/// 用来关闭GoogleEarth的消息定义/// </summary>static readonly Int32 WM_QUIT = 0x0012; private IntPtr GEHWnd = (IntPtr)5;private IntPtr GEHrender = (IntPtr)5;private IntPtr GEParentHrender = (IntPtr)5;private int jstr1, jstr2, jstr3;private int wstr1, wstr2, wstr3;private double ilon, dlon, ilat, dlat;private const double GEPI = 3600.0;/// <summary>/// 定义GE应用程序类/// </summary>private ApplicationGEClass GeApp;public Form1(){InitializeComponent();}protected override void OnLoad(EventArgs e){base.OnLoad(e);//if (!this.DesignMode)//{try{GeApp = new ApplicationGEClass();GeApp.OpenKmlFile(@"F:\VS2010Project\谷歌COM\Demo1\Demo1\火场标绘图140814135722.kml", 1);GEHWnd = (IntPtr)GeApp.GetMainHwnd();NativeMethods.SetWindowPos(GEHWnd, NativeMethods.HWND_BOTTOM, 0, 0, 0, 0,NativeMethods.SWP_NOSIZE + NativeMethods.SWP_HIDEWINDOW);GEHrender = (IntPtr)GeApp.GetRenderHwnd();GEParentHrender = (IntPtr)NativeMethods.GetParent(GEHrender);NativeMethods.MoveWindow(GEHrender, 0, 0, this.Width, this.Height, true);NativeMethods.SetParent(GEHrender, this.panel1.Handle);GeApp.OpenKmlFile(@"F:\VS2010Project\谷歌COM\Demo1\Demo1\火场标绘图140814135722.kml", 1);}catch (Exception ex){MessageBox.Show(ex.Message);}//}}protected override void OnClosing(CancelEventArgs e){base.OnClosing(e);NativeMethods.PostMessage(GeApp.GetMainHwnd(), WM_QUIT, 0, 0);}}
}

跑一下,地球出来了;

需要先如下注册googleearth.exe,不注册每次只能先运行谷歌地球再执行程序,每次只能执行程序一次;

如果不安装谷歌地球,直接执行代码,则可能出现下图的COM编程错误;

四 谷歌地球应用时初步的协议分析

看到上面,大家会想到一个问题,就是谷歌地球有时候会比较长时间刷不出来,界面一直就是纯黑色,没别的什么提示;那么此时如何知道程序是否在进行谷歌地球服务器的连接呢?可以使用协议分析的手段;下面先初步分析一下;

启动谷歌地球,同时启动Fiddler协议分析软件;

从启动,界面黑色,到显示出谷歌地球,期间捕获的http包如下;

很明显看到,

首先连接谷歌地球服务器使用的是443端口,下面是关于443端口的说明;

说明:网页浏览端口,主要是用于HTTPS服务,是提供加密和通过安全端口传输的另一种HTTP。在一些对安全性要求较高的网站,比如银行、证券、购物等,都采用HTTPS服务,这样在这些网站上的交换信息其他人都无法看到,保证了交易的安全性。

还有使用的是HTTP隧道技术;

总之如果捕获时在Fiddler中一直看到tunnel to 这样的包,说明一直在连接谷歌地球服务器,程序没有挂掉;

粗略看下一个具体的包,此次的连接似乎是通过一个日本的代理进行的;

下面就是连到谷歌服务器了;

看一个具体包,似乎通过一个日本的代理连到谷歌服务器;

所用到的Win32 api类下载:

http://pan.baidu.com/s/1eSE1sd0

图解谷歌地球使用入门、谷歌地球COM API 开发入门、谷歌地球使用的初步协议分析相关推荐

  1. 报表引擎API开发入门— EJB程序数据源

    2019独角兽企业重金招聘Python工程师标准>>> 我们前面讲了几个数据源,今天我们来讲一下EJB数据源,这篇讲完我们数据源这部分就讲完了.数据连接不需要直接访问数据库,而是使用 ...

  2. android入门程序源代码,安卓程序开发入门

    您可能感兴趣的话题: 安卓程序开发入门 核心提示:本教程为大家介绍采用Eclipse软件来编写安卓Hello,World程序. 创建一个新项目是很简单的,只要你安装了Eclipse插件,并且你的Ecl ...

  3. web3.0学习入门6:web3.0开发入门

    Web3.0 简介 Web 3.0 的概念是由以太坊联合创始人 Gavin Wood 在 2014 年提出的,指基于区块链的去中心化在线生态系统,它代表了下一代互联网时代.目前 Web 3.0 仍处于 ...

  4. Android入门简书,android ndk开发入门随笔(一)

    ndk,jni入门随笔 因为工作缘故最近在研究jni,ndk方面知识,在此总结入坑以来的一些问题. 配置环境可以在下面geogle官方看.下面是链接 我一说ndk,jni可能小伙伴要问了这是什么,在此 ...

  5. Android-音视频学习系列(一)-JNI-从入门到精通,android开发入门

    /** 1. 加载 native 库 */ static { System.loadLibrary("native-lib"); } @Override protected voi ...

  6. Nodejs入门学习,nodejs web开发入门,npm、express、socket配置安装、nodejs聊天室开发

    一.Node.js:服务器端的 JavaScript 运行环境,它具有无阻塞和事件驱动等特色,采用 V8 引擎,实现了类似 Apache 和 Nginx 的 Web 服务,让你可以通过它来搭建基于 J ...

  7. 【搬砖】安卓入门(1)- Java开发入门

    01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...

  8. Web API 开发入门--基于Visual Studio

    前言 ASP.NET Web API是​​一个框架,可以很容易构建达成了广泛的HTTP服务客户端,包括浏览器和移动设备.是构建RESTful应用程序的理想平台的.NET框架. 此处使用的Visual ...

  9. 报表引擎API开发入门—带参程序数据集

    http://blog.csdn.net/yuanziok/article/details/47998489

  10. 报表引擎API开发入门—简单程序数据集

    小编最近接的项目是有关报表开发的,很想把这部分知识分享出来.希望大家能够支持我!不多说,马上进入我们今天的话题. API基本知识 小编最近项目所做的是关于一个报表软件-FineReport报表开发的一 ...

最新文章

  1. 五步就让你成为一名很出色的程序员!
  2. 每日一博 - ThreadLocal VS InheritableThreadLocal VS TransmittableThreadLocal
  3. Windows线程同步机制的区别与比较及进程通信方法
  4. Python图像处理库PIL从入门到精通
  5. 安卓自动化测试——rf
  6. win10常见问题处理办法
  7. 07-图4. Saving James Bond - Hard Version (30)
  8. 微软企业应用开发三大方向:跨平台、开放/开源与DevOps
  9. C++学习笔记—srand()和rand()
  10. 用鸿蒙取名好吗,“鸿蒙”两个字,还是古人写得好看…
  11. lua qt 编译_Win32下 Qt与Lua交互使用(一):配置Qt下Lua运行环境
  12. Java系统属性/环境变量
  13. HDOJ--1269--迷宫城堡
  14. EL表达式中fn函数
  15. Windows 2003域更名工具(Domain Rename Tool)
  16. 安徽 计算机能力提升,休宁教师“充电”提升信息技术应用能力
  17. 数字滤波器设计工具_数字设计师和代理商的资源和工具
  18. 如何用计算机画地形地貌图,地形图是如何绘制出来的
  19. Excel突然出现很多小黑点
  20. 2022 Medtec中国展参观渠道开放,800+参展企业将助力稳定供应链

热门文章

  1. 《数学建模与数学实验》第1章学习笔记
  2. Java - @OneToMany注解的mappedBy属性有什么作用?
  3. 海康流媒体服务器客户端网页打不开,海康dvr流媒体服务器+客户端
  4. How to read Ext4 in Windows 10
  5. lldp协议代码阅读_LLDP 链路层发现协议
  6. MTK7621 uboot编译与烧写
  7. 串口转WIFI模块通信
  8. (附源码)ssm 客户信息管理系统 毕业设计 281609
  9. 大型电子病历系统【整套源代码分享】
  10. 数据科学 | Pandas新手入门