astraea.spark.rasterframes.ml.TileColumnSupport.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of raster-frames_2.11 Show documentation
Show all versions of raster-frames_2.11 Show documentation
RasterFrames brings the power of Spark DataFrames to geospatial raster data, empowered by the map algebra and tile layer operations of GeoTrellis
The newest version!
/*
* This software is licensed under the Apache 2 license, quoted below.
*
* Copyright 2018 Astraea. Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* [http://www.apache.org/licenses/LICENSE-2.0]
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
*
*/
package astraea.spark.rasterframes.ml
import org.apache.spark.sql.gt.types.TileUDT
import org.apache.spark.sql.types.{StructField, StructType}
/**
* Utility mix-in for separating out tile columns from non-tile columns.
*
* @since 3/6/18
*/
trait TileColumnSupport {
protected def isTile(field: StructField) =
field.dataType.typeName.equalsIgnoreCase(TileUDT.typeName)
type TileFields = Array[StructField]
type NonTileFields = Array[StructField]
protected def selectTileAndNonTileFields(schema: StructType): (TileFields, NonTileFields) = {
val tiles = schema.fields.filter(isTile)
val nonTiles = schema.fields.filterNot(isTile)
(tiles, nonTiles)
}
}