Scala Can';在生成shapefile时,不要创建double类型的列
上述代码在以下情况下失败: java.io.IOException:无法写入列值:double 我使用的是scala 2.10.4版和geotools 11.2版,我使用的是:Scala Can';在生成shapefile时,不要创建double类型的列,scala,geotools,Scala,Geotools,上述代码在以下情况下失败: java.io.IOException:无法写入列值:double 我使用的是scala 2.10.4版和geotools 11.2版,我使用的是: // My type val typeBuilder = new SimpleFeatureTypeBuilder() typeBuilder.setName("line-query-seg") typeBuilder.add("value", classOf[Double]) typeBuilder.setDefaul
// My type
val typeBuilder = new SimpleFeatureTypeBuilder()
typeBuilder.setName("line-query-seg")
typeBuilder.add("value", classOf[Double])
typeBuilder.setDefaultGeometry("the_geom")
typeBuilder.add("the_geom", classOf[LineString])
val sft = typeBuilder.buildFeatureType()
// Trying to create a shapefile of this type
val dataStoreFactory = new ShapefileDataStoreFactory()
val shp = new File("/tmp/collection.shp")
val params = scala.collection.Map[String, Serializable]("url" -> shp.toURI.toURL,
"create spatial index" -> true
)
val shpDS = dataStoreFactory.createNewDataStore(params.asJava).asInstanceOf[ShapefileDataStore]
shpDS.createSchema(sft)
而不是
typeBuilder.add("value", classOf[java.lang.Double])
您需要的类是java.lang.Double我怀疑您也会遇到问题,除非您的几何列被称为_geom,并且是第一列。@iant谢谢,我后来也注意到了这一点。修正了我的代码只是为了澄清:
java.lang.Double
也是一个类,实际上classOf[Double]
返回与javaDouble
原语对应的class对象(您可以通过执行classOf[Double]==java.lang.Double.TYPE
来检查这一点)“@AlexeyRomanov更新了我的答案,因为我对原始与阶级问题的看法是错误的
typeBuilder.add("value", classOf[Double])
classOf[java.lang.Double] // returns class java.lang.Double
classOf[Double] // returns double
java.lang.Double.TYPE // returns double