All Downloads are FREE. Search and download functionalities are using the official Maven repository.

geotrellis.admin.services.GetBreaks.scala Maven / Gradle / Ivy

The newest version!
package geotrellis.admin.services

import javax.servlet.http.HttpServletRequest
import javax.ws.rs.core.Response
import javax.ws.rs._
import javax.ws.rs.core.{Response, Context, MediaType, MultivaluedMap}
import geotrellis._
import geotrellis.admin._
import geotrellis.raster.op._
import geotrellis.statistics.op._
import geotrellis.rest._
import geotrellis.rest.op._
import geotrellis.raster._

case class ClassBreaksToJson(b:Op[Array[Int]]) extends Op1(b)({
  breaks => 
    val breaksArray = breaks.mkString("[", ",", "]")
    Result(s"""{ "classBreaks" : $breaksArray }""")
})

@Path("/admin/breaks") 
class GetBreaks {
  @GET
  def get(
    @DefaultValue("") @QueryParam("bbox") bbox:String,
    @DefaultValue("256") @QueryParam("cols") cols:String,
    @DefaultValue("256") @QueryParam("rows") rows:String,
    @DefaultValue("") @QueryParam("layer") layer:String,
    @DefaultValue("10") @QueryParam("numBreaks") numBreaks:String,
    @Context req:HttpServletRequest
  ):Response = {
    val extentOp = string.ParseExtent(bbox)
    
    val colsOp = string.ParseInt(cols)
    val rowsOp = string.ParseInt(rows)

    val reOp = extent.GetRasterExtent(extentOp, colsOp, rowsOp)

    val layerOp = io.LoadRaster(layer)

    val numBreaksOp = string.ParseInt(numBreaks)
    val histo = stat.GetHistogram(layerOp)
    val classBreaks = stat.GetClassBreaks(histo, numBreaksOp)

    GeoTrellis.run(classBreaks) match {
      case process.Complete(breaks,h) =>
        OK.json(Json.classBreaks(breaks))
          .allowCORS()
      case process.Error(message,failure) =>
        ERROR(message,failure)
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy