最近,單位領導要求我研究一下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一樣的教程,少走彎路。