Scala、Spark、GeoGrillis Rdd CRS重投影
我将一组点从CSV文件加载到RDD: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
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