Scala 将IndexedColorMap类型转换为ColorMap
我有一个获取图像(*.tif)颜色映射的代码Scala 将IndexedColorMap类型转换为ColorMap,scala,geotrellis,Scala,Geotrellis,我有一个获取图像(*.tif)颜色映射的代码 val geotiff=SinglebandGeoTiff(abcd.tif) val colorMap1=geotiff.options.colorMap 现在colorMap1是IndexedColorMap类型 有没有办法将colormap1转换或键入到ColorMap(GeoGrillis.raster.render.ColorMap),因为我的整个代码都基于ColorMap而不是IndexedColorMapIndexedColorMap扩
val geotiff=SinglebandGeoTiff(abcd.tif)
val colorMap1=geotiff.options.colorMap
现在colorMap1是IndexedColorMap类型
有没有办法将colormap1转换或键入到ColorMap(GeoGrillis.raster.render.ColorMap),因为我的整个代码都基于ColorMap而不是IndexedColorMap
IndexedColorMap
扩展IntColorMap
,它扩展了ColorMap
,因此它们是兼容的。但是它看起来像是geotiff.options.colorMap
正在返回Option[IndexedColourMap]
而不是IndexedColorMap
。所以你可以这样做:
val defaultColorMap: ColorMap = ???
val colorMap1: ColorMap = geotiff.options.colorMap.getOrElse(defaultColorMap)
有关以干净、实用的方式处理Scala中的
选项值的其他方法,请参见联机。我确实如您所说更改了代码,但仍然显示相同的错误:类型不匹配
[error]必需:GeoGrillis.raster.render.ColorMap
[error]val colorMap1:ColorMap=geotiff.options.ColorMap
我正在尝试在geotiff
变量中提取图像的ColorMap,并在进一步的代码中使用它。在第一种情况下,设置defaultColorMap对我没有帮助。最重要的是,选项
值在这里对我没有帮助,因为我已经有了一个返回值,即IndexedColorMap,我想转换它。getOrElse()仅在有可能返回空值时使用。如果函数返回选项
,则有可能返回空值,您的代码应该真正考虑到这一点。但是如果您对在这种情况下处理异常感到满意,那么您可以调用get
,而不是getOrElse
。