开始一个GeoTrellis项目

快速入门

对于大多数用户,没有必要下载GeoTrellis源代码来使用它。本文档的目的是描述为各种用例获取运行环境的最快方法。

小试牛刀

到目前为止,能够使用GeoTrellis的最快途径是遵循以下步骤:

git clone git@github.com:geotrellis/geotrellis-sbt-template
  • 一旦可用,从克隆的repo的根目录,MacOSX和Linux用户可以启动sbt其中包含的脚本; 这将启动一个SBT会话,如果它还没有安装它。
  • SBT启动后,发出console命令; 这将启动Scala解释器。

此时,您应该能够在不引发错误的情况下发出命令 。这将使该包的内容可用。例如,可以通过键入在原点创建一个点。import geotrellis.vector._Point(0, 0)

这个项目可以用作编写简单程序的模板。在项目根目录下是src具有以src/main和为根的子树的目录src/test。前者是应用程序代码所在的位置,后者包含需要它的任何模块的单元测试。SBT文档将描述如何运行应用程序或测试代码。

你好Raster,重访

登录页面上,显示了与GeoTrellis交互式会话的示例。我们将在这里更详细地重新讨论这个示例,使用该示例的各个部分作为突出库特征的方法,并将初学者编组到文档中感兴趣的部分。

首先需要公开相关软件包的功能(可以在此处找到完整的列表包及其内容摘要 ):

scala> import geotrellis.raster._
import geotrellis.raster._

scala> import geotrellis.raster.mapalgebra.focal._
import geotrellis.raster.mapalgebra.focal._

GeoTrellis的大部分核心功能都在于栅格库。 栅格是具有一定空间范围概念的常规数据网格。使用栅格时,可以与空间信息分开操作数据网格。栅格内部保存的数据网格称为“平铺”。我们可以创建一个示例Tile,如下所示:

scala> val nd = NODATA
nd: Int = -2147483648

scala> val input = Array[Int](
     nd, 7, 1, 1, 3, 5, 9, 8, 2,
     9, 1, 1, 2, 2, 2, 4, 3, 5,
     3, 8, 1, 3, 3, 3, 1, 2, 2,
     2, 4, 7, 1, nd, 1, 8, 4, 3)
input: Array[Int] = Array(-2147483648, 7, 1, 1, 3, 5, 9, 8, 2, 9, 1, 1, 2,
2, 2, 4, 3, 5, 3, 8, 1, 3, 3, 3, 1, 2, 2, 2, 4, 7, 1, -2147483648, 1, 8, 4, 3)

scala> val iat = IntArrayTile(input, 9, 4)  // 9 and 4 here specify columns and rows
iat: geotrellis.raster.IntArrayTile = IntArrayTile(I@278434d0,9,4)

// The asciiDraw method is mostly useful when you're working with small tiles
// which can be taken in at a glance
scala> iat.asciiDraw()
res0: String =
"    ND     7     1     1     3     5     9     8     2
     9     1     1     2     2     2     4     3     5
     3     8     1     3     3     3     1     2     2
     2     4     7     1    ND     1     8     4     3
"

请注意,并非需要指定切片中的每个单元位置; 这是功能NODATA。另请注意,其NODATA值因CellType而异。在这种情况下,使用IntArrayTile意味着如上所述IntCellType定义NODATA

作为GIS软件包,GeoTrellis提供了许多地图代数操作。在下面的示例中,邻域被定义为焦点操作的感兴趣区域,执行焦点平均操作,并查询值:

scala> val focalNeighborhood = Square(1)  // a 3x3 square neighborhood
focalNeighborhood: geotrellis.raster.op.focal.Square =
 O  O  O
 O  O  O
 O  O  O

scala> val meanTile = iat.focalMean(focalNeighborhood)
meanTile: geotrellis.raster.Tile = DoubleArrayTile(D@7e31c125,9,4)

scala> meanTile.getDouble(0, 0)  // Should equal (1 + 7 + 9) / 3
res1: Double = 5.666666666666667

在此示例中,请注意在计算均值时忽略了NODATA值。

这只是GeoTrellis可能实现的一个非常简单的例子。要了解更多信息,建议读者继续阅读 核心概念部分。内核密度教程中提供了另一个面向新用户的示例

将GeoTrellis与Apache Spark一起使用

GeoTrellis适用于采用Apache Spark的分布式环境。它描述了如何设置甚至使用Spark,这超出了快速入门指南的范围,但获取REPL有两种途径可以与Spark进行交互。

第一:从geotrellis/geotrellis-sbt-template项目根目录,发出./sbt启动SBT。加载SBT后,发出test:console命令。这将引发一个REPL,允许使用以下命令构造SparkContext:

val conf = new org.apache.spark.SparkConf()
conf.setMaster("local[*]")
implicit val sc = geotrellis.spark.util.SparkUtils.createSparkContext("Test console", conf)

然后可以发出诸如的命令 sc.parallelize(Array(1,2,3))

或者,如果项目目录树中包含源文件,则可以发出assembly命令sbt以生成胖.jar文件,该文件将显示在target/scala-<version>/当前项目根目录下的目录中。只要您在本地计算机上安装了Spark,该jar文件就可以作为命令的一部分提供给Spark shell 。通过创建的Fat jar 也可以提供给 在远程Spark master上运行作业的命令。同样,Spark的细节超出了本文档的范围,但这些指针可能提供有用的跳跃点。spark-shell --conf spark.serializer=org.apache.spark.serializer.KryoSerializer --jars <jarfile>assemblyspark-submit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值