最近,单位领导要求我研究一下geotrellis(GITHUB地址:https://github.com/geotrellis/geotrellis,官网http://geotrellis.io/),于是我只能接受这个苦逼的任务。
官网中写到:GeoTrellis is a geographic data processing engine for high performance applications.可以看出这个框架主要是用来进行地理信息数据的高性能快速处理,当然是个很有用的东西,但是怎么学习之,是个很大的问题。
Geotrellis主要涉及到的知识点包括Scala,sbt,Spark,Akka。貌似每项都不是善茬,基本都没有怎么接触过,除了Scala稍微接触过,那么只能完全从头开始学习了。
程序员第一步,百度之,Bing之,Google之,CnBlog之。完全找不到门路,可能是一个新的处理框架,基本没有人使用过,查不到任何有用的信息,怎么办?那只能自己摸索。
程序员第二步,自己摸索。
看了一下,geotrellis开源了一个例子(https://github.com/geotrellis/geotrellis-chatta-demo),我最喜欢先跑个例子看一下,这样好像自己已经牛逼的搞定了他,其实主要是能够从例子中可以大概明白他能干什么事情,然后以及一些具体的操作步骤。git clone到本地之后,傻眼了,怎么运行它。。。完全没有思路,看到sbt,那就开始学习sbt吧,sbt其实是相当于Maven的一个框架,能够帮我们管理scala项目,刚开始为了跑例子,也没有怎么研究,就是看到说直接到项目目录运行./sbt run即可,来来回回折腾了好多次每次都是error error,但是不要灰心,只需要一直./sbt run。过了一天时间,下载了一堆jar,成功跑了起来,出来了应有的效果,心中甚是欢喜,向领导汇报一下,领导看了一眼,又提了一堆记也没记住的问题让去研究,算是完成了第一步。
跑出来例子之后就反过来看他的github的ReadeME,上面有一项Hello Raster,就是对Geotrellis使用的一个简单的介绍,想着这个可以,如果能跑通,那应该就基本ok了。部署了Spark环境(参考之前的一篇文章使用Ambari安装hadoop集群),然后又研究了sbt,在Windows的笔记本上搭建了开发环境(IDEA+SCALA+SBT),这块网上的介绍也很多,不在这里介绍。然后把Geotrellis clone到本地,简单看了一下源码,发现比较高深,一筹莫展,打个jar包放到服务器上,运行spark-shell然后按照reademe中的步骤一步步来,无奈一直报错,根本不知道什么原因,其实这个时候对geotrellis根本还是云里雾里,不清楚到底怎么个情况。这个时候又回来看开源的那个geotrellis-chatta-demo,看着看着突然就顿悟了,这个demo其实干的是个很简单的事情,就是网页根据用户的交互信息向后台程序发请求,后台程序根据请求的数据用模型计算分析出一个信息(地理空间信息),并将数据发到前台,前台将此信息解析加载到地图上显示。明白了这一点就好办了,那么geotrllis主要完成的功能其实就是计算,根据你的需求进行相关计算,一下子就变得不是那么神秘了。然后我想既然spark-shell行不通,那么我为什么不直接把框架拿到本地做测试,刚好又发现了一个demo(https://github.com/geotrellis/geotrellis-sbt-template)是geotrellis的helloworld,clone本地之后运行,OK一切正常,然后将geotrellis项目中的Reademe中的东西拿来测试,OK跑通,心中甚是激动。
本篇博文主要记录了geotrellis框架的一个学习的过程,其实说是过程,也只是才完成了hello world,后面的东西还有很多。在这里主要总结一下学习的方法,为更深入的学习打好基础,也为同样学习此框架的人提供一个hello world一样的教程,少走弯路。