#### # new TerrainAnalyse(viewer, optionsopt)

地形分析

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`viewer` | Object |  | 场景视图对象，详见Cesium.Viewer
`options` | Object |  | 包含以下属性的对象
`contourColor` | Cesium.Color | Cesium.Color.RED.clone() | 等高线颜色默认为红色，详见Cesium.Color
`contourWidth` | Number | 2.0 | 等高线宽度
`contourSpacing` | Number | 150.0 | 等高线间距
`enableContour` | Boolean | false | 等高线是否开启
`minHeight` | Number | 0 | 高程最小值
`maxHeight` | Number | 1000 | 高程最大值
`gradual` | array | true | 颜色是否有渐变效果
`elevationRampColor` | array |  | 高程色表
`slopeRampColor` | array |  | 坡度色表
`aspectRampColor` | array |  | 坡向色表
`bandPositionsColorsArray` | array |  | 等值面高度和颜色数组
`selectedShading` | String |  | 地形分析渲染类型包括高程赋色'elevation'、坡度分析'slope'、坡向分析'aspect',坡向箭头+坡度颜色分析'arrowAspectSlope',等值面分析'elevationBand'。
`aspectArrowImage` | String | MAPGIS_BASE_URL+'webclient-cesium-plugin-resource/assets/textures/arrow3.png' | 坡向箭头图片地址

##### 请参考以下示例：

1、坡度分析
2、坡向分析
3、坡度坡向分析
4、地形压平
5、结束分析

##### 支持如下方法：

[1、修改等高线宽度，间距和颜色]
[2、更新分析区域]
[3、更新色表]
[4、更新色表间距值]
[5、修改坡向箭头密度]
[6、开启地形分析，坡度，坡向和等值线]
[7、开启地形分析，坡度，坡向和等值线]
[8、根据输入屏幕坐标查询坡度坡向值]
[9、右键点击查询坡度坡向值]
[10、移除点击查询坡度坡向值事件]
[11、移除坡度坡向，等值面，等高线等分析结果]
[12、地形压平]
[13、移除地形压平]

##### 示例

坡度分析

    // ES5引入方式
    const { DrawElement, TerrainAnalyse } = zondy.cesium
    // ES6引入方式
    import { DrawElement, TerrainAnalyse } from "@mapgis/webclient-cesium-plugin"

    1、初始化绘制工具
    const drawElement = new DrawElement(viewer);
    2、初始化地形分析工具
    const terrainAnalyse = new TerrainAnalyse(viewer);
    3、绘制几何并执行地形分析
    drawElement.startDrawingPolygon({
        callback: function (result) {
            terrainAnalyse.changeAnalyseArea(result.positions);
            terrainAnalyse.selectedShading = 'slope';
        }
    });

坡向分析

    // ES5引入方式
    const { DrawElement, TerrainAnalyse } = zondy.cesium
    // ES6引入方式
    import { DrawElement, TerrainAnalyse } from "@mapgis/webclient-cesium-plugin"

    1、初始化绘制工具
    const drawElement = new DrawElement(viewer);
    2、初始化地形分析工具
    const terrainAnalyse = new TerrainAnalyse(viewer);
    3、绘制几何并执行地形分析
    drawElement.startDrawingPolygon({
        callback: function (result) {
            terrainAnalyse.changeAnalyseArea(result.positions);
            terrainAnalyse.selectedShading = 'aspectArrow';
        }
    });

坡度坡向分析

    // ES5引入方式
    const { DrawElement, TerrainAnalyse } = zondy.cesium
    // ES6引入方式
    import { DrawElement, TerrainAnalyse } from "@mapgis/webclient-cesium-plugin"

    1、初始化绘制工具
    const drawElement = new DrawElement(viewer);
    2、初始化地形分析工具
    const terrainAnalyse = new TerrainAnalyse(viewer);
    3、绘制几何并执行地形分析
    drawElement.startDrawingPolygon({
        callback: function (result) {
            terrainAnalyse.changeAnalyseArea(result.positions);
            terrainAnalyse.selectedShading = 'arrowAspectSlope';
        }
    });

地形压平

    // ES5引入方式
    const { DrawElement, TerrainAnalyse } = zondy.cesium
    // ES6引入方式
    import { DrawElement, TerrainAnalyse } from "@mapgis/webclient-cesium-plugin"

    1、初始化绘制工具
    const drawElement = new DrawElement(viewer);
    2、初始化地形分析工具
    const terrainAnalyse = new TerrainAnalyse(viewer);
    3、绘制几何并执行地形分析
    drawElement.startDrawingPolygon({
        callback: function (result) {
           //得到绘制矩形接口返回的范围extent，并计算出东南西北点坐标
           positions = result.positions
           //压平地形
           terrainAnalyse.terrainFlatten(positions, height)
           //停止绘制，解除鼠标行为
           drawElement.stopDrawing()
        }
    });

结束分析

    terrainAnalyse.destroy();

### 方法

#### # calculateSlopeAndAspect(screenPoint)

根据输入屏幕坐标查询坡度坡向值

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`screenPoint` | Cesium.Cartesian2 | 查询坡度坡向值的屏幕坐标

返回值:

result 返回查询结果

类型: Object

##### 示例

    var terrainAnalyse = new zondy.cesium.TerrainAnalyse(viewer, {});
    result = terrainAnalyse.calculateSlopeAndAspect(screenPoint);
    // 坡度值，单位度，范围0-90°
    slopeAngle = result.slope
    // 坡向值，单位度，范围0-360°
    aspectAngle = result.aspect
    // 坡向的8方位描述。可能的取值为N、NE、E、SE、S、SW、W、NW
    aspectDescription = result.aspectDescription

#### # changeAnalyseArea(positions)

更新分析区域

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`positions` | Array | 分析范围（世界坐标）

##### 示例

    terrainAnalyse.changeAnalyseArea(positions);

#### # changeArrowAspectRepeat(cartesian2)

修改坡向箭头密度

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`cartesian2` | Cesium.Cartesian2 | x,y方向上的重复次数

##### 示例

    var  cartesian2= new Cesium.Cartesian2(3.0,3.0);
    changeArrowAspectRepeat(cartesian2);

#### # changeColorTable(colorTable, ShadingType)

更新色表

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`colorTable` | Array | 色表
`ShadingType` | String | 渲染类型，高程赋色'elevation'、坡度分析'slope'、坡向分析'aspect'。

##### 示例

    var defaultColor = ['#000000', '#2747E0', '#D33B7D', '#D33038', '#FF9742', '#ffd700', '#FFFFFF'];
    terrainAnalyse.changeColorTable(defaultColor,'elevation');

#### # changeColorTableDis(colorTableDis, ShadingType)

更新色表间距值

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`colorTableDis` | Array | 色表间距值
`ShadingType` | String | 渲染类型，高程赋色'elevation'、坡度分析'slope'、坡向分析'aspect'。

##### 示例

    var defaultColor = [0, 0.2, 0.3,0.4, 0.5, 0.6, 1];
    terrainAnalyse.changeColorTableDis(defaultColor,'elevation');

#### # changeContours(ContourSpacing, ContourWidth, ContourColor)

修改等高线宽度，间距和颜色

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`ContourSpacing` | Number | 修改等间距
`ContourWidth` | Number | 修改等高线宽度
`ContourColor` | Cesium.Color | 修改等高线颜色

#### # destroy()

移除坡度坡向，等值面，等高线等分析结果

#### # queryInfo(getResult)

右键点击查询坡度坡向值

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`getResult` | function | 回调返回结果

##### 示例

    var getResult = function(e){console.log(e)};
    var terrainAnalyse = new zondy.cesium.TerrainAnalyse(viewer, {});
    terrainAnalyse.queryInfo(getResult);

#### # removeQueryInfo()

移除点击查询坡度坡向值事件

#### # removeTerrainFlatten()

移除地形压平

#### # terrainFlatten(positions, flattenHeight)

地形压平

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`positions` | Array | 多边形顶点坐标数组
`flattenHeight` | Number | 压平到指定高度

返回值:

返回是否成功执行

类型: Boolean

#### # updateElevationBandMaterial(bandPositions, gradient, bandThickness, bandTransparency, backgroundTransparency, colorsArray)

开启地形等值面分析

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`bandPositions` | Array | 等值面数组，高度，单位米
`gradient` | Boolean | 是否渐变
`bandThickness` | Number | 等值面宽度
`bandTransparency` | Number | 等值面透明度
`backgroundTransparency` | Number | 等值面背景透明度
`colorsArray` | Array | 等值面颜色数组(数组长度不小于bandPositions)

##### 示例

    var bandPositions = [400,800,1300];
    var terrainA = new zondy.cesium.TerrainAnalyse(viewer);

    var colorsArray =[Cesium.Color.RED,Cesium.Color.BLUE,Cesium.Color.GREEN];
    terrainAnalyse.updateElevationBandMaterial(bandPositions,false,100,1.0,0.0,colorsArray);

#### # updateMaterial(inputShading)

开启地形分析，坡度，坡向和等值线

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`inputShading` | String | 地形分析类型

##### 示例

    terrainAnalyse.updateMaterial('elevation'); //地形分析渲染类型包括高程赋色'elevation'、坡度分析'slope'、坡向分析'aspect',坡向箭头+坡度颜色分析'arrowAspectSlope',等值面分析'elevationBand'。