# PolyUtil
查阅Cesium API

#### PolyUtil()
util/PolyUtil.js 1

多个点 或 线面数据 相关处理 静态方法

### 方法

#### static mars3d.PolyUtil.buffer(geojson, width, steps) → object
util/PolyUtil.js 105

缓冲分析，求指定 点线面geojson对象 按width半径的 缓冲面对象

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`geojson` | object |  | geojson格式对象
`width` | number |  | 缓冲半径,单位：米
`steps` | number | `8` | 可选 缓冲步幅

##### 返回值:

缓冲面对象，geojson格式

#### static mars3d.PolyUtil.bufferPoints(points, width, steps) → Array.<LngLatPoint>
util/PolyUtil.js 133

缓冲分析，坐标数组围合面，按width半径的 缓冲新的坐标

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`points` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`width` | number |  | 缓冲半径,单位：米
`steps` | number | `8` | 可选 缓冲步幅

##### 返回值:

缓冲后的新坐标数组

#### static mars3d.PolyUtil.centerOfLine(pots, height) → Cesium.Cartesian3
util/PolyUtil.js 72

求坐标数组的中心点

参数名称 | 类型 | 描述信息
--- | --- | ---
`pots` | Array.<Array> | Array.<string> | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | 坐标数组
`height` | number | 可选 指定中心点的高度值，默认为所有点的最高高度

##### 返回值:

中心点坐标

#### static mars3d.PolyUtil.centerOfMass(arr, height) → Cesium.Cartesian3
util/PolyUtil.js 37

求坐标数组的中心点

参数名称 | 类型 | 描述信息
--- | --- | ---
`arr` | Array.<Array> | Array.<string> | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | 坐标数组
`height` | number | 可选 指定中心点的高度值，默认为所有点的最高高度

##### 返回值:

中心点坐标

#### static mars3d.PolyUtil.computeStepSurfaceLine(options) → Promise.<*>
util/PolyUtil.js 1448

按2个坐标点分段分步来计算，求路线的贴地线坐标（插值）

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`splitNum` | number | `100` | 可选 插值数，等比分割的个数(概略值，有经纬网网格来插值)
`minDistance` | number |  | 可选 插值最小间隔(单位：米)，提示：优先级高于splitNum，用于计算splitNum（非严格按这个值分割）
`has3dtiles` | boolean | `auto` | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`hasTerrain` | boolean | `true` | 可选 是否不考虑地形，仅在模型上分析（比如完全地下的场景下，可以设置为false）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features
`exact` | boolean | `false` | 可选 是否进行精确计算， 传false时是否快速概略计算方式，该方式计算精度较低，但计算速度快，仅能计算在当前视域内坐标的高度
`offset` | number | `0` | 可选 可以按需增加偏移高度（单位：米），便于可视
`depth` | boolean |  | 可选 是否使用`interPolylineByDepth`离屏渲染深度图的方式加速计算贴地高度
`endItem` | computeStepSurfaceLine_endItem |  | 异步计算每2个点后之间坐标后 的回调方法
`end` | computeStepSurfaceLine_end |  | 异步计算高度完成后 的回调方法

##### 返回值:

异步计算完成的Promise,同callback

#### static mars3d.PolyUtil.computeSurfaceLine(options) → Promise.<object>
util/PolyUtil.js 1377

求路线的贴地线坐标（插值）

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<Cesium.Cartesian3> | Array.<LngLatPoint> |  | 坐标数组
`splitNum` | number | `100` | 可选 插值数，等比分割的个数(概略值，有经纬网网格来插值)
`minDistance` | number |  | 可选 插值最小间隔(单位：米)，提示：优先级高于splitNum，用于计算splitNum（非严格按这个值分割）
`has3dtiles` | boolean | `auto` | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`hasTerrain` | boolean | `true` | 可选 是否不考虑地形，仅在模型上分析（比如完全地下的场景下，可以设置为false）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features
`exact` | boolean | `false` | 可选 是否进行精确计算， 传false时是否快速概略计算方式，该方式计算精度较低，但计算速度快，仅能计算在当前视域内坐标的高度
`offset` | number | `0` | 可选 可以按需增加偏移高度（单位：米），便于可视
`depth` | boolean |  | 可选 是否使用`interPolylineByDepth`离屏渲染深度图的方式加速计算贴地高度

##### 返回值:

异步计算完成的Promise, 等价于callback

#### static mars3d.PolyUtil.computeSurfacePoints(options) → Promise.<object>
util/PolyUtil.js 1411

求 多个点 的的贴地新坐标（不插值）

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<Cesium.Cartesian3> | Array.<LngLatPoint> |  | 坐标数组
`has3dtiles` | boolean | `auto` | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`hasTerrain` | boolean | `true` | 可选 是否不考虑地形，仅在模型上分析（比如完全地下的场景下，可以设置为false）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features
`exact` | boolean | `false` | 可选 是否进行精确计算， 传false时是否快速概略计算方式，该方式计算精度较低，但计算速度快，仅能计算在当前视域内坐标的高度
`offset` | number | `0` | 可选 可以按需增加偏移高度（单位：米），便于可视

##### 返回值:

异步计算完成的Promise, 等价于callback

#### static mars3d.PolyUtil.computeVolume(options) → Promise.<VolumeResult>
util/PolyUtil.js 485

体积计算

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`exact` | boolean | `false` | 可选 是否进行精确计算
`splitNum` | number | `10` | 可选 插值数，横纵等比分割的网格个数(概略值，有经纬网网格来插值)
`has3dtiles` | boolean | `auto` | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features

##### 返回值:

异步计算完成的Promise

#### static mars3d.PolyUtil.convex(coordinates, options) → Array.<Array>
util/PolyUtil.js 1663

求 坐标点 的 外包围凸体面(简化只保留边界线坐标)

参数名称 | 类型 | 描述信息
--- | --- | ---
`coordinates` | Array.<Array> | 经纬度坐标数组,示例：[ [123.123456,32.654321,198.7], [111.123456,22.654321,50.7] ]
`options` | object | 可选 参数
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`concavity` | number | `2` | 可选 凹度, 相对度量;更高的值意味着更简单的凸体

##### 返回值:

经纬度坐标数组,示例：[ [123.123456,32.654321,198.7], [111.123456,22.654321,50.7] ]

#### static mars3d.PolyUtil.formatRectangle(rectangle, digits) → object
util/PolyUtil.js 872

格式化Rectangle矩形对象,返回经纬度值

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`rectangle` | Cesium.Rectangle |  | 矩形对象
`digits` | number | `6` | 可选 经纬度保留的小数位数

##### 返回值:

返回经纬度值，示例： { xmin: 73.16895, xmax: 134.86816, ymin: 12.2023, ymax: 54.11485 }

#### static mars3d.PolyUtil.getBezierCurve(positions, options) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 1193

求贝塞尔曲线坐标

参数名称 | 类型 | 描述信息
--- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array | 坐标数组
`options` | object | 可选 控制参数
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`closure` | boolean | `fasle` | 可选 是否闭合曲线
`sharpness` | number | `0.8` | 可选 曲线的弯曲程度
`resolution` | number | `20000` | 可选 点之间的时间（以毫秒为单位）, 通过调整节点间的生成速度来控制曲线的弯曲程度。数值越高，节点生成越密集，曲线更平滑；数值较低则节点间距较大，曲线更接近原始线段。

##### 返回值:

坐标数组

#### static mars3d.PolyUtil.getCenter(scene, toCartesian) → LngLatPoint|Cesium.Cartesian3
util/PolyUtil.js 663

提取 地球视野 的中心点坐标

参数名称 | 类型 | 描述信息
--- | --- | ---
`scene` | Cesium.Scene | 三维地图场景对象，一般用map.scene或viewer.scene
`toCartesian` | boolean | 可选 是否返回

##### 返回值:

边线上的坐标点数组Cesium.Cartesian3坐标

#### static mars3d.PolyUtil.getEllipseOuterPositions(options) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 613

获取 圆（或椭圆）边线上的坐标点数组

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | object | 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`position` | Cesium.Cartesian3 | LngLatPoint |  | 圆的中心坐标
`radius` | number |  | 可选 如是圆时，半径（单位：米）
`semiMajorAxis` | number |  | 可选 椭圆时的 长半轴半径（单位：米）
`semiMinorAxis` | number |  | 可选 椭圆时的 短半轴半径（单位：米）
`count` | number | `1` | 可选 象限内点的数量，返回的总数为 count*4
`granularity` | number |  | 可选 granularity值,与count二选一
`rotation` | number | `0` | 可选 旋转的角度

##### 返回值:

边线上的坐标点数组

#### static mars3d.PolyUtil.getExtentByGeoJSON(geojson) → object
util/PolyUtil.js 909

计算geojson的边界范围

参数名称 | 类型 | 描述信息
--- | --- | ---
`geojson` | object | 可选 Geojson对象

##### 返回值:

返回经纬度值，示例： { xmin: 73.16895, xmax: 134.86816, ymin: 12.2023, ymax: 54.11485 }

#### static mars3d.PolyUtil.getGranularity(positions, splitNum) → number
util/PolyUtil.js 221

求坐标数组的矩形范围内 按 splitNum网格数插值的 granularity值

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`splitNum` | number | `10` | 可选 splitNum网格数

##### 返回值:

granularity值

#### static mars3d.PolyUtil.getGridPoints(bbox, count, alt) → object
util/PolyUtil.js 1694

在 指定bbox区域 内生成 指定数量(概略) 的网格坐标点， 目前常用于生成坐标点，测试数据量

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`bbox` | Array.<number> |  | 区域范围，如：[116.984788, 31.625909, 117.484068, 32.021504]
`count` | number |  | 数量(概略)，返回坐标接近此数字
`alt` | number | `0` | 可选 高度值

##### 返回值:

坐标集合 ,如： {points:[LngLatPoint,LngLatPoint], size: 500 }

#### static mars3d.PolyUtil.getGridPointsByPoly(positions, step, alt) → Array.<LngLatPoint>|undefined
util/PolyUtil.js 1722

获取指定多边形范围内的插值Grid网格点集合

参数名称 | 类型 | 描述信息
--- | --- | ---
`positions` | Array.<Cesium.Cartesian3> | 区域范围
`step` | number | 间隔步长，单位：米
`alt` | number | 可选 高度值

##### 返回值:

坐标集合

#### static mars3d.PolyUtil.getHeightRange(positions, scene, options) → Promise.<object>
util/PolyUtil.js 428

计算面内最大、最小高度值

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`splitNum` | number | `10` | 可选 插值数，横纵等比分割的网格个数(概略值，有经纬网网格来插值)
`has3dtiles` | boolean | `auto` | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features

##### 返回值:

异步计算完成的Promise，结果示例：{ maxHeight: 100, minHeight: 21 }

#### static mars3d.PolyUtil.getHeightRangeByDepth(positions, scene, options) → Promise.<object>
util/PolyUtil.js 1823

计算面内最大、最小高度值，并 使用离屏渲染深度图的方式加速计算范围内的任何可见的物体的高度

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`splitNum` | number | `512` | 可选 网格个数，横纵等比分割的网格个数，理论上：外接矩形的点个数 = splitNum * splitNum
`cameraHeight` | number | `scene.camera.positionCartographic.height` | 可选 相机高度

##### 返回值:

异步计算完成的Promise，结果示例：{ maxHeight: 100, minHeight: 21 }

#### static mars3d.PolyUtil.getLinkedPointList(startPoint, endPoint, angularityFactor, numOfSingleLine) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 1524

计算2点间的 曲线链路的点集（空中曲线）

参数名称 | 类型 | 描述信息
--- | --- | ---
`startPoint` | Cesium.Cartesian3 | LngLatPoint | 开始节点
`endPoint` | Cesium.Cartesian3 | LngLatPoint | 结束节点
`angularityFactor` | number | 曲率
`numOfSingleLine` | number | 点集数量

##### 返回值:

曲线坐标数组

#### static mars3d.PolyUtil.getMapExtentPositions(scene) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 720

提取 地球视野 的边界坐标

参数名称 | 类型 | 描述信息
--- | --- | ---
`scene` | Cesium.Scene | 三维地图场景对象，一般用map.scene或viewer.scene

##### 返回值:

边线上的坐标点数组

#### static mars3d.PolyUtil.getOffsetLine(positions, offset) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 1590

计算平行线

参数名称 | 类型 | 描述信息
--- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array | 原始线的坐标数组
`offset` | number | 偏移的距离（单位米），正负决定方向

##### 返回值:

平行线坐标数组

#### static mars3d.PolyUtil.getPositionsRectVertex(positions, rotation) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 984

获取坐标点数组的外接矩形的 4个顶点坐标点（数组）

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标点数组
`rotation` | number | `0` | 可选 旋转的角度，弧度值

##### 返回值:

4个顶点坐标点

#### static mars3d.PolyUtil.getRectangle(positions, isFormat) → Cesium.Rectangle|object
util/PolyUtil.js 925

获取 坐标数组 的 矩形边界值

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`positions` | Array.<Cesium.Cartesian3> | Array.<string> | Array.<Array> | Array.<LngLatPoint> |  | 坐标数组
`isFormat` | boolean | `false` | 可选 是否格式化，格式化时示例： { xmin: 73.16895, xmax: 134.86816, ymin: 12.2023, ymax: 54.11485 }

##### 返回值:

isFormat：true时，返回格式化对象，isFormat：false时返回Cesium.Rectangle对象

#### static mars3d.PolyUtil.getRectangleOuterPositions(options) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 1009

获取矩形（含旋转角度）的边线上的4个顶点坐标点数组

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | object | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`rectangle` | Cesium.Rectangle |  | 矩形对象
`rotation` | number | `0` | 可选 旋转的角度，弧度值
`height` | number | `0` | 可选 坐标的高度
`granularity` | number | `Cesium.Math.RADIANS_PER_DEGREE` | 可选 granularity值
`ellipsoid` | Cesium.Ellipsoid | `Cesium.Ellipsoid.WGS84` | 可选 变换中使用固定坐标系的椭球。

##### 返回值:

边线上的4个顶点坐标点数组

#### static mars3d.PolyUtil.getRectPositionsByCenter(options) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 1065

根据传入中心点、高宽或角度，计算矩形面的顶点坐标。

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | object | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`center` | Cesium.Cartesian3 | LngLatPoint |  | 中心坐标
`width` | number |  | 可选 矩形的宽度，单位：米
`height` | number |  | 可选 矩形的高度，单位：米
`rotation` | number | `0` | 可选 旋转的角度（弧度值）
`originX` | number | `0.5` | 可选 中心点所在的位置x轴方向比例，取值范围：0.1-1.0
`originY` | number | `0.5` | 可选 中心点所在的位置y轴方向比例，取值范围：0.1-1.0

##### 返回值:

矩形面的顶点坐标数组

#### static mars3d.PolyUtil.interLine(positions, options) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 1306

对路线进行按空间等比插值，高度：高度值按各点的高度等比计算 比如：用于航线的插值运算

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 描述信息
--- | --- | ---
`splitNum` | number | 可选 插值数，等比分割的个数，默认不插值(概略值，有经纬网网格来插值)
`minDistance` | number | string | 可选 插值时的最小间隔(单位：米)，优先级高于splitNum,如果传"auto"，自动计算坐标中最小的2点距离

##### 返回值:

插值后的坐标对象

#### static mars3d.PolyUtil.interPolygon(options) → Promise.<interPolygonResult>
util/PolyUtil.js 254

面内进行贴地(或贴模型)插值, 返回三角网等计算结果

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`splitNum` | number | `10` | 可选 插值数，横纵等比分割的网格个数(概略值，有经纬网网格来插值)
`exact` | boolean | `false` | 可选 是否进行精确计算
`has3dtiles` | boolean |  | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features
`onlyPoint` | boolean | `false` | 可选 truea时，返回结果中只返回点，不返回三角网

##### 返回值:

异步计算完成的Promise

#### static mars3d.PolyUtil.interPolygonByDepth(options) → Promise.<object>
util/PolyUtil.js 1851

对面内进行插值，并 使用离屏渲染深度图的方式加速计算范围内的任何可见的物体的高度
注意事项：

1. 需要地形和模型等需要分析区域对应的数据加载完成后才能使用该方法。
2. 如果有遮挡了分析区域的任何矢量对象，都需要分析前隐藏下，分析结束后再改回显示。

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`splitNum` | number | `512` | 可选 网格个数，横纵等比分割的网格个数，理论上：外接矩形的点个数 = splitNum * splitNum
`cameraHeight` | number | `scene.camera.positionCartographic.height` | 可选 相机高度
`isInPoly` | boolean | `true` | 可选 false返回坐标外接矩形内的splitNum*splitNum的全量结果，true只返回坐标点范围内的结果

##### 返回值:

计算完成的相关数据

#### static mars3d.PolyUtil.interPolyline(options) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 1262

对路线进行平面等比插值，高度：指定的固定height值 或 按贴地高度。

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`splitNum` | number | `100` | 可选 插值数，等比分割的个数(概略值，有经纬网网格来插值)
`minDistance` | number |  | 可选 插值最小间隔(单位：米)，提示：优先级高于splitNum，用于计算splitNum（非严格按这个值分割）
`height` | number | `0` | 可选 坐标的高度
`surfaceHeight` | boolean | `true` | 可选 是否计算贴地高度 （非精确计算，根据当前加载的地形和模型数据情况有关）

##### 返回值:

插值后的路线坐标数组

#### static mars3d.PolyUtil.interPolylineByDepth(options) → Promise.<object>
util/PolyUtil.js 1882

对路线内进行插值，并 使用离屏渲染深度图的方式加速计算范围内的任何可见的物体的高度
注意事项：

1. 需要地形和模型等需要分析区域对应的数据加载完成后才能使用该方法。
2. 如果有遮挡了分析区域的任何矢量对象，都需要分析前隐藏下，分析结束后再改回显示。

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`scene` | Cesium.Scene |  | 三维地图场景对象，一般用map.scene或viewer.scene
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 坐标数组
`splitNum` | number | `100` | 可选 计算的间隔长度,数据量不能大于Cesium.ContextLimits.maximumTextureSize
`minDistance` | number |  | 可选 插值最小间隔(单位：米)，提示：优先级高于splitNum，用于计算splitNum（非严格按这个值分割）
`cameraHeight` | number | `scene.camera.positionCartographic.height` | 可选 相机高度

##### 返回值:

计算完成的相关数据

#### static mars3d.PolyUtil.isInPoly(position, coordinates) → boolean
util/PolyUtil.js 1110

判断点是否 多边形内(算法1，使用turf库)

参数名称 | 类型 | 描述信息
--- | --- | ---
`position` | Cesium.Cartesian3 | LngLatPoint | 需要判断的点
`coordinates` | Array.<Cesium.Cartesian3> | Array.<LngLatPoint> | 多边形的边界点

##### 返回值:

是否在多边形内

#### static mars3d.PolyUtil.isInPoly2(position, positions) → boolean
util/PolyUtil.js 1127

判断点是否 多边形内 (算法2，不使用turf)

参数名称 | 类型 | 描述信息
--- | --- | ---
`position` | Cesium.Cartesian3 | LngLatPoint | 需要判断的点
`positions` | Array.<Cesium.Cartesian3> | Array.<LngLatPoint> | 多边形的边界点

##### 返回值:

是否在多边形内

#### static mars3d.PolyUtil.movePoints(points, options) → Array.<Cesium.Cartesian3>
util/PolyUtil.js 159

整体平移 坐标数组

参数名称 | 类型 | 描述信息
--- | --- | ---
`points` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array | object | 坐标数组
`options` | object | 参数:
参数名称 | 类型 | 描述信息
--- | --- | ---
`center` | string | Array | LngLatPoint | Cesium.Cartesian3 | * | 可选 [方式1] 移动到新的中心点坐标
`offset` | Cesium.Cartesian3 | 可选 [方式2] 按移动的变量

##### 返回值:

移动后的坐标点数组

#### static mars3d.PolyUtil.simplifyPositions(positions, options) → Array
util/PolyUtil.js 1235

抽析简化点数量

参数名称 | 类型 | 描述信息
--- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array | 坐标数组
`options` | object | 可选 控制参数
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`tolerance` | number | `0.0001` | 可选 简化的程度，传值是经纬度的小数位，比如0.000001、0.00001、0.0001、0.001、0.01
`highQuality` | boolean | `true` | 可选 是否花更多的时间用不同的算法创建更高质量的简化
`mutate` | boolean | `true` | 可选 是否允许对输入进行变异（如果为true，则显著提高性能）

##### 返回值:

坐标数组

#### static mars3d.PolyUtil.sliceByMaxDistance(positions, maxDistance, options) → Array.<Cesium.Cartesian3>|Cesium.Cartesian3
util/PolyUtil.js 1608

截取路线指定最大长度的新路线， 在最后一个点往前截取maxDistance长度。 应用场景： 航迹的 “尾巴线” 的运算

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`positions` | Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array |  | 路线坐标
`maxDistance` | number |  | 最大的截取长度
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`point` | boolean | `false` | 可选 为true时 只返回计算的maxDistance处的坐标

##### 返回值:

指定长度的坐标数组 ，options.point为true时，只返回数组的第1个点。

#### static mars3d.PolyUtil.updateVolume(resultInter, cutHeight) → VolumeResult
util/PolyUtil.js 549

根据 基准面高度 重新计算填挖方体积

参数名称 | 类型 | 描述信息
--- | --- | ---
`resultInter` | VolumeResult | 插值完的对象
`cutHeight` | number | 基准面高度

##### 返回值:

重新计算填挖方体积后的对象

#### static mars3d.PolyUtil.updateVolumeByMinHeight(resultInter) → VolumeResult
util/PolyUtil.js 498

根据 minHeight最低底面高度 计算（或重新计算）填挖方体积

参数名称 | 类型 | 描述信息
--- | --- | ---
`resultInter` | interPolygonResult | 插值完的对象

##### 返回值:

计算完成的填挖方体积

### 定义的类型

#### computeStepSurfaceLine_end(arrStepPoints)
util/PolyUtil.js 1423

异步分段分步计算贴地距离中，每计算完成2个点之间的距离后 的回调方法

参数名称 | 类型 | 描述信息
--- | --- | ---
`arrStepPoints` | Array.<Array> | 二维数组坐标集合，各分段2点之间的贴地点数组的集合

#### computeStepSurfaceLine_endItem(raisedPositions, noHeight, index)
util/PolyUtil.js 1415

异步分段分步计算贴地距离中，每计算完成2个点之间的距离后 的回调方法

参数名称 | 类型 | 描述信息
--- | --- | ---
`raisedPositions` | Array.<Cesium.Cartesian3> | 当前2个点之间的 贴地坐标数组
`noHeight` | boolean | 是否计算贴地高度失败，true时标识计算失败了
`index` | number | 坐标数组的index顺序

#### interPolygonResult(options)
util/PolyUtil.js 228

面内进行贴地(或贴模型)插值, 返回三角网等计算结果 的回调方法

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 描述信息
--- | --- | ---
`list` | Array.<object> | 三角网对象数组，每个对象包含三角形的3个顶点(point1\point2\point3)相关值
`maxHeight` | number | 面内最大高度
`minHeight` | number | 面内最小高度
`granularity` | number | 面内按splitNum网格数插值的granularity值
`has3dtiles` | boolean | 是否贴模型
`hasTerrain` | boolean | 是否贴地形

#### VolumeResult(options)
util/PolyUtil.js 454

面内进行贴地(或贴模型)插值, 返回三角网等计算结果 的回调方法

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 描述信息
--- | --- | ---
`list` | Array.<object> | 三角网对象数组，每个对象包含三角形的3个顶点(point1\point2\point3)相关值
`maxHeight` | number | 面内最大高度
`minHeight` | number | 面内最小高度
`granularity` | number | 面内按splitNum网格数插值的granularity值
`has3dtiles` | boolean | 是否贴模型
`hasTerrain` | boolean | 是否贴地形
`totalArea` | number | 总面积(横截面/投影底面)，执行updateVolumeByMinHeight后赋值
`totalVolume` | number | 总体积，执行updateVolumeByMinHeight后赋值
`digVolume` | number | 挖方体积，执行updateVolume后赋值
`fillVolume` | number | 填方体积，执行updateVolume后赋值