由于项目需要接触了geotrellis框架,用此框架主要是想解决分布式处理栅格数据计算的问题。学习过程中很痛苦,网上关于这个框架的教程少之又少。大部分资料只能去英文官网去查。关于自己的问题可以到这个地址去咨询:https://gitter.im/geotrellis/geotrellis#,作者会非常热情的帮助大家解决问题。另外在qq上搜索qq群,发现只有一个,群号:808977609。虽然现在人不多,群里的的人还是很愿意帮助大家解决问题的。
官网提供了geotrellis-chatta-demo这个示例,效果见连接:http://demo.geotrellis.com/chatta/。该示例提供了前台展示、后台计算及前后台交换的完整过程实现,代码地址:https://github.com/geotrellis/geotrellis-chatta-demo。
示例的搭建过程如下:
1、下载源代码的压缩包,解压后的界面如下图:
对于从来没用过docker的我,见到这个目录结构也是一脸懵逼,不过翻看目录后,发现主要代码都在servie这个文件夹,其它目录的作用可以在github了解,至少我是没看懂。
2、加载源代码到开发工具
我用的开发工具是Idea2018版,之前使用2017版加载代码,sbt总是报错,项目也运行不了,更新了版本后一切正常。使用idea首先需要安装scala插件,安装完成之后,也就具有了sbt的支持。另外需要注意的是,代码不要放到有中文的目录下,否则运行时很可能报错。
使用idea打开目录geotrellis-chatta-demo-master\service\geotrellis。就可以发现idea自动帮我们创建项目工作目录了。等大约半个小时,一切运行完毕后,工程的目录如下:
3、执行 ChattaIngest 程序,我的理解是这个程序的作用使用geotrellis提供的ETL工具将tiff格式的文件转换成geotrellis可以理解的格式。然后后台代码才能够处理这些tiff文件。
关于ETL的详细解释和使用方法可以查看官方的指南:https://docs.geotrellis.io/en/latest/guide/etl.html 。执行此程序前需要做些配置工作,参考: https://blog.csdn.net/qq_32432081/article/details/81162285
我在执行这个代码的时候有个小插曲,就是系统一直报错,incorrect byte order。通过qq群里一位大神的指导,发现是github下载下来的tiff文件有问题,后来了解到文件需要在 GITLFS 上下载,不过GITLFS怎么用目前还不清楚。遇到此问题可以加入qq群,在群共享文件中下载。
4、修改项目中的配置文件:application.conf
1) 修改 server.static-path 参数,将此参数值设置成static文件夹所在路径。比如我的配置为:server.static-path = "D:/GeoTrellis/geotrellis-chatta-demo-master/service/static"。配置好此路径后,系统启动后才能找到html所在的位置。
2) 修改 file.path 参数,将此参数值设置为执行 ChattaIngest 程序时,在output.json中配置的backend中的path路径,比如我的配置为:file.path = "D:/GeoTrellis/geotrellis-chatta-demo-master/service/geotrellis/data/chatta-demo"
5、启动程序
一切准备就绪后,执行scala\geotrellis\chatta\Main.scala。打开浏览器输入:127.0.0.1:8777访问。如果出现于官网demo一致的效果就说明成功了。