Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala、Spark、GeoGrillis Rdd CRS重投影_Scala_Apache Spark_Geotrellis - Fatal编程技术网

Scala、Spark、GeoGrillis Rdd CRS重投影

Scala、Spark、GeoGrillis Rdd CRS重投影,scala,apache-spark,geotrellis,Scala,Apache Spark,Geotrellis,我将一组点从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, yiel

我将一组点从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)
如何使用特征的mapGeom方法进行CRS变换

points.map(_.mapGeom(?????))
points.map(feature => feature.mapGeom(????))
如何使用ReprojectPointFeature(pointfeature)

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


任何帮助都将不胜感激

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

实际上,要在
PointFeature
上执行重投影,可以使用
ReprojectPointFeature
implict case类。要使用它,只需确保在
reproject
函数调用范围中有
import georgrills.vector.\u

import geotrellis.vector._
points.map(_.reproject(crsFrom, crsTo))
同样的导入也适用于

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

谢谢,我阅读了API,几何体没有reproject方法:但是GeoGrillis.vector.reproject.Implicits中有一个Implicits,所以现在知道它使用Implicits方式工作。尝试ftRdd.map(.mapGeom(.reproject(crsFrom,crsTo)),给我org.apache.spark.SparkException:Task not serializable:Task not serializable