依稀记得09年的R会议北京会场上,来自中国地质环境监测院的刘永生老师曾经讲到一句R与Google Earth的结合,当时俺就震惊了,很好很强大,例如这张图就把自己的图层直接Overlay到了Google Earth中,俺猜可能是用R生成了KML文件吧:
图1: R与Google Earth
以俺的代码能力现在是写不出这样的程序了 .. 但是俺的脑海中蹦出了一个个小问号:如果要求降低一点,抓取Google的卫星图片,再往上Overlay可视化的数据,怎么计算抓取图片的参数?如果要在抓来的卫星图片上打点,又如何把点与图上的位置正确地对应?这些问题让俺困惑了好久。
前一阵子,在遥远的贝吉塔行星上,又出现了这样一篇博文:
http://www.bjt.name/2010/01/chinese-earthquake-visualization/
里面有一张图,描绘了2009年1月20日至1月25日中国及周边版图的地震情况:
图2: 最近7天中国及周边版图的地震情况
贝吉塔在文中有道,四川地区不太平,弟兄们要小心云云。我这次就特别关注一下四川地区。于是从数据源下载了我国地震监测部门四川台网所测定的四川地区2008年全年32640次地震震源的经纬度数据,稍稍处理了一下,把点打到了从Google Earth上抓来的卫星地图上。由于数据较多,图片较小,加之主要看的是震源的位置分布,恕难展示每个数据震级大小了:
图3: 2008年四川省地震分布情况
不难看出,有一个地区 .. 十分的 .. 危险 .. 然后,俺突发奇想,又分别抓了12个月的数据分别进行打点,最后做出一个GIF,正如那句话所讲,用的是R,画的是寂寞 .. 因为不小心沾了“统计动画”的边,不知有没有什么问题,不知Yihui能否来指点一二:
( 此图甚巨,计2.3M,为了不影响页面载入速度,请点此在新窗口查看或右键-另存为 )
图4: 2008年四川省地震分布情况 ( 按月份 )
由于Google Maps API使用协议里有讲须保留Powered by Google字样,我就没有再处理背景图,而抓取背景图的参数是自动计算的,所以现在看上去有些不连贯,so sucks ..当然,上述讨论很可能是完全无意义的。因为我觉得这基本上是一个强加的例子,玩玩而已:震源位置与时间又有啥关系呢?如果用来观察预测某种现象 ( 如疫情、自然灾害 ) 的蔓延情况,用以制订防御策略,估计会更有价值些吧。
扩展一下,下面这张全景图不是俺的,生成自 earthquake.usgs.gov :
图5: 公元前2150年 - 公元1994年间世界上最严重的地震
前述R与Google Earth的简单结合使用 RgoogleMaps 包可以非常方便的实现。具体实现过程,且见下篇博文分解。




做动画的时候最好能固定坐标轴的范围,否则晃来晃去就看不出有什么趋势了……
可惜抓图的参数是根据数据计算的,如果固定一张背景图来plot,点的位置会有误差. 把图手动编辑一下效果会好些, 不过这就要动那两个logo ..Google API的协议里说:You may not alter or obscure the logos or attribution on the map ..看来只能做个mod版的自己玩了 .. 发个邮件给作者诉诉苦 ..
哈哈,把我下一步要做的事情都做了。非常不错!
哪里哪里 just for fun ..
搭车问个小问题, earthquake.png中蓝色部分是如何实现的呢?
你看一下 MASS 下 kde2d 就知道啦~~
Many thanks ..
有最新的更新吗???
不好意思, 没再继续研究这东西了