爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6650|回复: 7

[混合编程] [已收纳]Google Earth API开发尝试---从挣扎到失败

[复制链接]

新浪微博达人勋

发表于 2019-8-13 10:45:41 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 15195775117 于 2021-1-31 18:29 编辑

谷歌地球开发的书籍很少,资料不好找,只找到一本《Google智慧地图》有点干货。有的书,比如《Google API程序天下》连代码都没有也敢出书!
所以,买一本书前,要尽量先从网上找资料,搞清它有没有货。
《智慧地图》中GE 的开发是使用面对对象+COM的,其中代码用Delphi和C#写,
由于我只会IDL、java、python,对再学一门语言有些抵触,
好在书中说这些代码“可以轻松地转换成其他的编码语言”,
于是,我准备照葫芦画瓢,先把书中代码无脑过一遍,

由于面对对象的代码都类似,所以我有了印象后再用python或java重写,应该没多大问题
我也试过用python来把GE嵌入软件窗体,可以找到的资料比较零散陈旧,也有些失败案例,
于是我想先从看书开始,毕竟书籍比较权威、比较系统,没头苍蝇乱撞的可能性较小,
等吸收了书中的知识,再研究其他的零散资料不迟
以下继续...................
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-8-13 10:55:05 | 显示全部楼层
web网页的三维呈现:
有人将Google Earth包装成ActiveX组件,放在网页上,实现了三维地图
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-13 11:35:11 | 显示全部楼层
GE API的开发是通过COM的,C#、VB、python等都可以使用GE的COM接口。
--------------------------------------
什么是COM?
COM=Component Object Mode=微软的标准接口标准
COM组件是遵循COM标准的小程序,是独立的、可动态加载的、二进制的、可执行程序,包括dll和exe
COM组价类似一个电子集成块,内部有逻辑结构,外部有接口,我觉得也可以比喻为一块可编程积木块,也可以理解为一个封装好的函数、程序
--------------------------------------
我所熟练的IDL也支持COM和dll,如果能使用IDL直接将GE嵌入窗体,那就太赞了!


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-13 11:41:21 | 显示全部楼层
《Google智慧地图》说:
“任何支持COM规范的预言都可以编写COM组件并调用其接口”
如Delphi、VB、C++、Java、Python
以此来看,IDL也可以
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-13 13:54:45 | 显示全部楼层
GE并没提供独立的COM组件,
用户安装GE后,程序会将自带的dll注册到操作系统上,GE API就可以调用了。
--------------------------
如果编程语言没有发现GE API的库文件:
1、重新安装GE
2、重新注册GE服务
命令行注册服务的方法:先进入GE安装路径,再运行:
googleearth.exe /RegServer
注册GE服务.png
卸载则:googleearth.exe /UnregServer
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-13 14:25:01 | 显示全部楼层
另一个IDL(接口定义语言)
GE官网提供了GE API的接口定义,形式是IDL文件
下载IDL文件后,通过开发工具(C++等)预编译为“运行库TLB文件”
C++的IDL编译程序是MIDL,这是个命令行小程序,可以编译生成TLB文件
生成TLB文件后,用开发语言导入TLB,就可以进一步利用了
------------------------------
Delphi中使用GE API,需要在代码中加入
“uses EARTHLib_TLB;”,即需要导入GE API类型库代码文件
(我的理解:类似于python的import吧)
对比:
Java调用IDL语言:
eclipse中导入IDL安装路径中的javaidlb.jar文件
java代码中使用“import com.idl.javaidl”来接入IDL功能
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-13 22:16:58 | 显示全部楼层
<关于放弃谷歌地球数据可视化的想法>
从工作以来,我做的数据可视化产品的GIS呈现,都是以谷歌地球为载体,以kmz和kml为输出文件,但一直存在瓶颈:
1、如何将GE嵌入软件窗体?
2、如何制作collada(.dae)模型?
《Google智慧地图》给的嵌入窗体的案例太陈旧
python嵌GE的成功案例我都没找到过
我找了个pyCollada的模块学习做dae文件,但文档纯英文很长还没看
作为一款外国GIS软件,它的街道细节是缺失的、过时的
综上所述,与国内GIS产品相比,GE没有任何优势
今天下午我跟程序员同事聊了下,发现很多GIS产品都比GE实用、门槛低、可视化效果更加、数据更完善,
听君一席话胜读十年书,我觉得是时候抛弃GE了
我看看自己的样子,也不是什么技术奇才,能照葫芦画瓢写些程序已然不错了,
像GE这种资料都很稀缺的,我啃了这么久,取得了一点进步,已经不错了,
今天对着这本好多年前的书,有个接口文件根本找不到,令人沮丧,何苦来哉!
GE下面的路已经很难走,而且没必要了
科技树栽歪了,可不是小事!所以我还是走大家都走的路,才是正道
像高德地图,其可视化比GE还强些,GE有的点线面、贴图、表面建模它都有,动画也能上,行政分区也有,还有各种图层数据,可谓省了好多事
何况web是大趋势,高德地图API、webGL等显然比GE强
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-13 22:24:44 | 显示全部楼层
今天程序员同事给我看了GE嵌入开发软件窗体的文件,是一套很复杂的东西,跟我之前实践过的eclipse调用IDL、python调用IDL完全不同,绕了不少弯子,我自觉短期内没有精力实现GE的嵌入
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表