import { Image } from "./Image";
/**
 *  gve
 * @class gve.Terrain
 * @since gve
 */
export class Terrain {
  /**
   * 计算影像坡度,生成坡度影像
   * @param {Image} image 影像数据
   * @returns Image
   * @tutorial gve.Terrain
   */

  static Slope(image: Image) {
    return new Image();
  }

  /**
   * 基于gdal计算地形坡向信息,返回坡向影像
   * @param {Image} image 待计算坡向的tif路径
   * @returns Image
   * @tutorial gve.Terrain
   */
  static Aspect(image: Image) {
    return new Image();
  }

  /**
   * 基于gdal计算山体阴影信息,返回阴影影像。
   * @param {Image} image 阴影影像。
   * @returns Image
   * @tutorial gve.Terrain
   */
  static Hillshade(image: Image) {
    return new Image();
  }

  /**
   * 计算坡度、坡向、坡影
   * @param {Image} input 待计算的影像
   * @returns Image
   * @tutorial gve.Terrain
   */
  static products(input: Image) {
    return new Image();
  }

  /**
   * 计算填充最小值
   * @param {Image} image 填充的影像
   * @param {number} [borderValue] 选传,边界值
   * @param {number} [neighborhood] 选传,需要计算的领域的大小
   * @returns Image
   * @tutorial gve.Terrain
   */
  static fillMinima(image: Image, borderValue?:number, neighborhood?:number) {
    return new Image();
  }


  /**
   * 应用阴影算法的图像,其中每个像素应代表以米为单位的海拔
   * @param {Image} image 填充的影像
   * @param {number} azimuth 方位角
   * @param {number} zenith 天顶以度为单位
   * @param {number} [neighborhoodSize] 选传,邻域大小
   * @param {boolean} [hysteresis] 选传,是否使用滞后
   * @returns Image
   * @tutorial gve.Terrain
   */
  static hillShadow(image: Image, azimuth:number, zenith:number, neighborhoodSize?:number, hysteresis?:boolean) {
    return new Image();
  }
}