2

我将一组点从 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)

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

Hot 将变换应用于单个点:

val pt = Point( -64.9772376007928, -33.6408083223936)

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

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

如何使用 ReprojectPointFeature(pointfeature) ?

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

任何帮助将不胜感激

4

1 回答 1

1

我将从最后一个问题开始:

确实要对您执行重新投影,PointFeature您可以使用ReprojectPointFeature隐式案例类。要使用它,只需确保您import geotrellis.vector._reproject函数调用范围内。

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

相同的导入也适用于 a Point

import geotrellis.vector._
pt.reproject(crsFrom, crsTo)
points.map(_.mapGeom(_.reproject(crsFrom, crsTo)))
于 2017-11-13T06:05:24.567 回答