import * as img from "../Image";
import { ImageCollection } from "../ImageCollection";
import { Boolean } from "../../dataType/Boolean";
import { String } from "../../dataType/String";
import { Number } from "../../dataType/Number";
import { PrintObject } from "@gvol-org/geovis-brain-core";
import { List } from "../../dataType/List";
import { Mvt } from "../Mvt";

/**
 * Services
 * @class Services.Image
 * @since gve.Services
 * @alias gve.Services.Image
 */
export class Image {    

  /**
   * 检测黑水体
   * @param {Image} image gve.Image对象
   * @param {any[]} [indexs] 波段合并的顺序
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.detectionBlackWater
   */
   static detectionBlackWater(image:img.Image, indexs?: any[]) {
    return new img.Image();
  }

  /**
   * 获取等高线函数
   * @param {Image} image gve.Image对象
   * @param {number} [azimuth] 可选参数,方位角,单位:度
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.TanakaContour
   */
  static TanakaContour(image:img.Image, azimuth?: number) {
    return new img.Image();
  }

  /**
   * 生态经济价值模型
   * @param {Image} image gve.Image对象
   * @param {object} [object] 可选参数,生态经济价值模型参数
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.EcologicalEconomyValueModel
   */
  static EcologicalEconomyValueModel(image:img.Image, object?: object) {
    return new img.Image();
  }

  /**
   * 超分函数,仅支持对RGB的影像进行超分,超分模型有以下六种: SwinIR、ESRGAN、Real_ESRGAN、SwinIR_Small、ESRGAN_Small、Real_ESRGAN_Small
   * @param {Image} image gve.Image对象
   * @param {string} model 模型参数
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.sr
   */
  static sr(image:img.Image, model: string) {
    return new img.Image();
  }
  
  /**
   * 遥感生态指数检测 
   * @param {Image} image gve.Image对象
   * @param {any[]} [index] 可选参数,合并波段的顺序,默认按照原始波段合并
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.rsei
   */
  static rsei(image:img.Image, indexs?: any[]) {
    return new img.Image();
  }

  /**
   * 土壤墒情指数检测
   * @param {Image} image gve.Image对象
   * @param {any[]} [indexs] 可选参数,合并波段的顺序,默认按照原始波段合并
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.tvdi
   */
  static tvdi(image:img.Image, indexs?: any[]) {
    return new img.Image();
  }

  /**
   * 遥感水色反演服务
   * @param {Image} image gve.Image对象
   * @param {any[]} [indexs] 可选参数,波段的顺序,默认为空
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.fui
   */
  static fui(image:img.Image, indexs?: any[]) {
    return new img.Image();
  }

  /**
   * 地表温度反演服务
   * @param {Image} image gve.Image对象
   * @param {any[]} indexs 波段的顺序,默认值为空,代表默认的波段顺序
   * @param {number} [ndviMin] 可选参数,ndvi最小值/土壤ndvi值 
   * @param {number} [ndviMax] 可选参数,ndvi最大值/植被ndvi值 
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.lstInversion
   */
  static lstInversion(image:img.Image, indexs: any[], ndviMin?: number, ndviMax?: number) {
    return new img.Image();
  }

  /**
   * 叶绿素a浓度反演服务
   * @param {Image} image gve.Image对象
   * @param {any[]} indexs 波段的顺序,默认值为空,代表默认的波段顺序
   * @param {number} [waterThreshold] 可选参数,水体阈值,默认为""
   * @param {string} [inversionModel] 可选参数,反演模型,默认为""
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.chla_inversion
   */
  static chla_inversion(image:img.Image, indexs: any[], waterThreshold?: number, inversionModel?: string) {
    return new img.Image();
  }

  /**
   * 水体透明度反演服务
   * @param {Image} image gve.Image对象
   * @param {any[]} indexes 波段顺序
   * @param {number} [waterThreshold] 可选参数,水体阈值
   * @param {string} [inversionModel] 可选参数,反演模型
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.wclarity_inversion
   */
  static wclarity_inversion(image: img.Image, indexes: any[], waterThreshold?: number, inversionModel?: string) {
    return new img.Image();
  }

  /**
   * 水体CDOM浓度反演服务
   * @param {Image} image gve.Image对象
   * @param {any[]} indexes 波段顺序
   * @param {number} [waterThreshold] 可选参数,水体阈值
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.wcdom_inversion
   */
  static wcdom_inversion(image: img.Image, indexes: any[], waterThreshold?: number) {
    return new img.Image();
  }

  /**
   * 水体悬浮泥沙浓度反演服务
   * @param {Image} image gve.Image对象
   * @param {any[]} indexes 波段顺序
   * @param {number} [waterThreshold] 可选参数,水体阈值
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.wssc_inversion
   */
  static wssc_inversion(image: img.Image, indexes: any[], waterThreshold?: number) {
    return new img.Image();
  }

  /**
   * 水体水华反演服务
   * @param {Image} image gve.Image对象
   * @param {any[]} indexes 波段顺序
   * @param {number} wbThreshold 水华阈值
   * @returns gve.Image
   * @tutorial gve.Services.Image
   * @alias gve.Services.Image.wbloom_inversion
   */
  static wbloom_inversion(image: img.Image, indexes: any[], wbThreshold: number) {
    return new img.Image();
  }

}