在Google Earth中显示中国城市和机场(动态生成KML的Demo)

2023-05-16

受到上次写的“在Google Earth上显示等高线”(镜像1,镜像2)的启发,写了个动态实现在Google Earth中显示中国城市和机场,效果见最下面的图。也可以打开Google Earth后,在临时目录添加一个地址为:http://www.sharesh.cn/chinacity/index.asp? 的network link,或者下载此KML文件:http://files.cnblogs.com/Tangf/ChinaCity.zip(如果使用KML文件打开,暂且发现一个BUG,第一次打开左侧ChinaCity文件夹可能不更新,需要在左侧的ChinaCity文件夹上面右键refresh一下,暂时还没搞清楚具体原因,大概是代码的问题吧,如果知道的高人请告之一下。其实KML也就是包了一个network link,只是没有让你手工操作罢了)

本来是想做成中国城市和机场天气地图的,但能力有限暂且先发个功能性的预览,后面再补充吧。我也终于明白了EEmap的中文导航插件和图拼地球插件(在首页右下角的站点公告中)的原理了,而当年我是多么的羡慕和不解啊。

至于原理呢,其实很简单,就是动态生成KML,不管你使用什么语言来动态生成。KML文件我见到很多,但都是死的文件,不能增加删除更新,要更新则重新生成新的KML文件,所以对这样的文件我是没有任何兴趣的。而现在使用动态语言生成KML则彻底解决了这个问题,当然这里的关键在于,GE能够使用viewRefreshMode来让network link自动刷新。同时,Google Earth的network link是可以返回BBOX参数的,而BBOX参数其实反应了GE当前视图中四个角的坐标,那么我们就可以根据范围来动态显示KML了,而不需要一次性全部生成,并且根据经纬度差可以让其按照比例来显示数据。

OK,我们以本文中的ASP文件并抛开GE使用IE浏览器来说明原理。根据上一段所说,很明显能够看出,在没有运行代码以前就是添加一个network link的KML(具体KML请看此连接:http://www.sharesh.cn/chinacity/index.asp?),运行代码以后也就是运行GE后就开始生成具体的Point数据(请看此链接:http://www.sharesh.cn/chinacity/index.asp?BBOX=121,31,121.5,31.5),这是一个经度为121-121.5和纬度为31-31.5的范围(其实也差不多就是上海的中心城区)内生成的KML文件,可以看到有机场、城市和县级市。另外我也做了分级控制,3度范围以上不显示数据,只显示“请放大地图”,3度范围开始显示城市,2度范围开始显示机场,1度范围开始显示显级市,分级显示有利于地图上不显示的太多太杂乱,所以,如果你使用这样的BBOX=120,30,122,32,只能显示城市了。另外KML也支持地图样式,在KML的前半部分就能看到样式的KML代码,我专门做成了独立的文件来控制(连接:http://www.sharesh.cn/chinacity/stylemap.asp,直接打开仅仅看到文字,如果查看源文件就可以看到XML格式的数据了)。要点差不多说完了,不知道有没有说清楚,我想应该也不复杂。

整个过程中发现的一个怪异现象是,如果我不把第一句<?xml version="1.0" encoding="UTF-8"?>放在第一行的话,GE是无法打开动态链接的,并且显示在network link文件夹中间的小点是深紫色的,为这一个无意的错误我翻遍了Google都没有找到答案,中间的过程是艰辛的:首先由于没有任何的提示信息,所以我无法去Google关键字,于是我想通过GE的network link文件夹的不同状态来查原因,但是我也找遍了Google,翻看了所有GE的KML的教程等等,都没有找到GE的network link文件夹不同状态的说明,这一点我真是够昏死的,在这上面折腾了我一个多小时。没有办法我回忆所有的代码,并在浏览器中不断查看,没有任何问题,重启电脑也不行,最后远程到服务器,让他执行看看,服务器上的GE是一个低版本的,但打开链接后有一个无关痛痒的提示,好像是说XML什么的,于是再Google,没有任何KML和GE的,不过通过这些的查找,在一个英文论坛中大概是说了一下关于头上面的XML开始要从头开始连接什么的,回想我也确实将这个头给回车了一行,于是将XML头放在第一行,结果就真的通过了,GE的network link文件夹也显示绿色的正常图标了,一看时间也差不多要晚上两点了。虽然说最后问题还是解决了,但我不知道为什么我找不到解决这样问题的资料,纳闷也是够晕的。

最后不做总结了,写一下下一步的打算吧。

1.使用Google weather api让城市和机场显示天气信息,其实就是读取和解析Google提供的天气的XML文件并将内容重新组织到description中。
关于Google weather api推荐几篇Google上搜索到的文章:Google Weather API调用说明(一看这个基本上就知道怎么用了,我想用的是通过坐标的方式来生成天气预报),利用prototype和GOOGLE的weather api做天气预报(一看就是JS加HTML,你只要将代码贴到HTML文件中打开就可以看到效果了),使用Google Weather API查询天气预报(提供了C#代码),Animaonline Weather API(直接将API封装到dll中,你就可以直接用他的API了,还提供了WINCE版本)

如果有程序员感兴趣,可以帮我写一个读取天气的function:getWeather(X,Y) as String,也好让我直接调用。不过我也担心远程得到weather XML的速度慢而影响整个KML生成的速度。

2.如果可能,将ASP转换成PHP版本,毕竟PHP+MYSQL的效率要比ASP+ACCESS的效率高很多。再说我有国外的Dreamhost空间那,不用也是浪费。当然,这篇文章也许是非常好的参考:使用 PHP 和 MySQL 创建 KML

3.既然整个流程走通了,那要不做成一个开源的项目?大致分为三个部分:
a,数据库结构。数据结构的差异对于速度也有很大的影响,并且后期加入线和面那字段如何组织。现在总共才2000多条数据,所以用ACCESS也体现不出太大的效率差异。
b,WEB程序。相当于发布平台,那么如何让平台灵活,比如只要某一类的对象,比如如何使用搜索,这些也许是将来需要考虑的高级问题。
c,原始数据导入到数据库中。支持通用的MIF/MID、GPX、KML导入到数据库中。顺便也把MIF/MID和GPX和KML的互导也做了好了。

有兴趣的朋友可以加入。

4.使用Google Earth插件和API在WEB平台上发布数据,或者结合Google Map API来发布数据。

想多了,但看来可以走的路还很长。我这么多年来一直不喜欢使用Google Map API、Google Earth等,至于为什么就等我有空的时候再写成思想吧,不过通过这样的Demo开始让我喜欢Google的东西了,如果有项目的结合或者应用那应该是非常棒的一件事情。

ChinaCityinGoogleEarth

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Google Earth中显示中国城市和机场(动态生成KML的Demo) 的相关文章

  • Java架构进阶之路——阿里大牛强力推荐书单(附赠电子版)

    1 深入理解Java虚拟机 xff1a JVM高级特性与最佳实践 本书适合所有Java程序员 系统调优师和系统架构师阅读 共分为五大部分 xff0c 围绕内存管理 执行子系统 程序编译与优化 高效并发等核心主题对JVM进行了全面而深入的分析
  • ModemManager

    ModemManager是D Bus激活的守护进程 xff0c 用来控制移动宽带 xff08 2G 3G 4G xff09 设备和连接 xff0c 提供统一的高层API接口 说白了就是可以用来管理上网卡 ModemManager可以管理内置
  • odroidxu4linux,2019年值得期待的5个树莓派替代品

    说到卡片电脑 xff0c 树莓派是当之无愧的热门 这款售价35美元的微型计算机已经在全球范围内吸引了众多爱好者 xff0c 因为它能够以商业设备的一小部分价格执行基于PC的功能 当然 xff0c 它或许不是最强大或最便宜的微型计算机 xff
  • ros 发布信息频率_工具使用-ROS中使用publisher、subscriber发布订阅topic

    Publisher Node 不同于cpp文件一般存在package下的src文件夹 xff0c python文件一般存储在package下的scripts文件夹下 1 2 3 4roscd beginner tutorials scrip
  • 轨迹系列1——一种基于路网图层的GPS轨迹优化方案

    文章版权由作者李晓晖和博客园共有 xff0c 若转载请于明显处标明出处 xff1a http www cnblogs com naaoveGIS 1 背景 GPS数据正常情况下有20M左右的偏移 xff0c 在遇到高楼和桥梁等情况下偏移会更
  • 材料研究方法

    编程是非常有意思的 xff0c 可是作为材料人 xff0c 学好材料才是比较重要的事情 xff0c 下面记录一些知识点 光学透镜的成像原理 光的折射 光在均匀介质中沿直线传播 在不同介质中光的传播速度不同 当光从一种介质传播到另一种介质中去
  • [微信小程序系列] 动画案例之圆点沿着圆圈运动

    作者 xff1a 滴滴公共前端团队 Tawnia 滴滴作为第一批的小程序开发者 xff0c 我们也大量地用到了动画 xff0c 积累了一些经验 xff0c 由于市面上的小程序动画案例很少 xff0c 我们也分享一部分我们做过的案例 xff1
  • Vue Iview Tree插件的无限层

    Iview lt template gt lt Tree data 61 34 baseData 34 show checkbox multiple gt lt Tree gt lt template gt lt script gt exp
  • React Component vs React Element

    React Component vs React Element 有这样的一个问题 xff1a 方法定义 function add x y return x 43 y 方法调用 add 1 2 组件定义 class Icon extends
  • 手把手学STM32(一)

    手把手学STM32 一 构建工程 这篇文章详细的介绍编写第一个固件工程 xff08 F103ZET6版本的 xff09 文档里的操作部分我使用了黄色背景色标出 xff0c 如觉麻烦 xff0c 可直接参考黄色部分 资料下载链接 xff1a
  • Linux下查看在线用户及用户进程

    可采用命令 xff1a w who last users finger 需yum安装 法一 xff1a root 64 test1 who root tty1 2015 08 19 23 15 lxh pts 0 2015 08 20 00
  • 手动制作一个QQ群机器人

    为什么80 的码农都做不了架构师 xff1f gt gt gt 最近在群里面一个朋友在玩机器人 我觉得蛮有意思的所以查了下资料搞了一个机器人 这里只是借助软件实现机器人 后面会自己去手写一个机器人 1 进入图灵的官网 http www tu
  • X-Content-Type-Options: nosniff

    如果服务器发送响应头 34 X Content Type Options nosniff 34 xff0c 则 script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应 这是一种安全功能 xff0c 有助于防止基于
  • 过期域名

    tonha sx cn wqk410 sx cn liyongfu2005 sx cn id 3682362 sx cn dtsgfljdsbyxzrgs sx cn id 1184965 sx cn jinlei001 sx cn lin
  • CSS之 background-color: rgba(255,0,0,opacity number)

    一 xff1a backgrounde color xff1a rgba xff08 xff09 设置背景色的时候 xff0c 可以调节背景色的透明度 xff0c 注意是背景哦 xff0c 所以不会存在遮罩问题 见图 test cover
  • PrestaShop 网站后台配置(三)

    转载请注明出处 xff1a http www cnblogs com zhong dev p 4942957 html 网店版本 v1 6 这一篇文章主要介绍 前台显示模块 的调整 1 xff1a top banner xff08 首页横幅
  • 正则表达式

    Date 2019 07 03 Author Sun 本节目的 xff1a xff08 1 xff09 掌握正则表达式和re模块使用 xff08 2 xff09 python操作正则表达式 xff0c 匹配贪婪和非贪婪模式使用 xff08
  • asp.net mvc 部署时出现错误 没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限...

    在IIS中 发布程序一个ASP NET程序 xff0c 通过IE访问报如下错误 xff1a 当前标识 NT AUTHORITY NETWORK SERVICE 没有对 C WINDOWS Microsoft NET Framework v2
  • 事件的好处~实现对修改的封闭,对扩展的开放

    事件是这样的 xff0c 我觉得用事件来做这事比较好 xff0c 它很好的遵循了 开闭原则 xff0c 当然这并不是最重要的 xff0c 最重要的应该是它更符合程序开发的原则 场合 xff1a 一个订单处理问题 xff0c 一个订单的产生可
  • 中文显示不全?docker+ firefox

    2019独角兽企业重金招聘Python工程师标准 gt gt gt sudo apt get install ttf wqy microhei ttf wqy microhei ttf wqy zenhei kde l10n zhcn xf

随机推荐