Scala、Spark、Geotrellis Rdd CRS 重投影

Scala, Spark, Geotrellis Rdd CRS reprojection

我将一组点从 CSV 文件加载到 RDD:

case class yieldrow(Elevation:Double,DryYield:Double)

val points :RDD[PointFeature[yieldrow]] = lines.map { line =>
  val fields = line.split(",")
  val point = Point(fields(1).toDouble,fields(0).toDouble)
  Feature(point, yieldrow(fields(4).toDouble,fields(20)))
}

然后得到:

points: org.apache.spark.rdd.RDD[geotrellis.vector.PointFeature[yieldrow]] 

现在需要从 EPSG:4326 重新投影到 EPSG:3270

所以我创建 CRS 从和到:

val crsFrom : geotrellis.proj4.CRS =  geotrellis.proj4.CRS.fromName("EPSG:4326")
val crsTo : geotrellis.proj4.CRS =  geotrellis.proj4.CRS.fromEpsgCode(32720)

但我无法创建转换,而且我也不知道:

将变换应用于单个点的热点:

val pt = Point( -64.9772376007928, -33.6408083223936)

如何使用Feature的mapGeom方法进行CRS变换?

points.map(_.mapGeom(?????))
points.map(feature => feature.mapGeom(????))

如何使用 ReprojectPointFeature(pointfeature)?

文档没有基本的代码示例。

任何帮助将不胜感激

我从最后一个问题开始:

确实要在 PointFeature 上执行重新投影,您可以使用 ReprojectPointFeature 隐含案例 class。要使用它,只需确保在 reproject 函数调用范围内有 import geotrellis.vector._

import geotrellis.vector._
points.map(_.reproject(crsFrom, crsTo))

相同的导入也适用于 Point

import geotrellis.vector._
pt.reproject(crsFrom, crsTo)
points.map(_.mapGeom(_.reproject(crsFrom, crsTo)))