import { Cartesian3, Cartographic, Cesium3DTileset, Color } from '@cesium/engine'; import { Position, XViewer } from '../core'; import { DynamicLayer } from '../layer'; import { Polygon } from '../overlay'; import { default as Plot } from '../plot/Plot.ts'; import { default as ExcavateTerrain } from './ExcavateTerrain.js'; import { default as FlatTileset } from './FlatTileset.js'; import { IVolumeParams } from './MeasureVolume.ts'; import { default as SubmergenceAnalysis } from './SubmergenceAnalysis.js'; /** * 空间分析工具 */ declare class Analysis { private _viewer; private _analysisLayer; private _volumeLabel; private _debugShowSubTriangles; private viewShedClear; private _submergeObj; private _excavateTerrain; private _dataChart; private _echartDIV; private clipTileset3DTool; private _plotHelper; private _measureVolume; private _flatHelper; constructor(viewer: XViewer); /** * 获取标绘工具 */ get PlotHelper(): Plot; /** * 获取动态分析图层 */ get AnalysisLayer(): DynamicLayer; /** * 可视域分析(绘制两点) * @param */ viewShedAnalysis(): void; /** * 可视域 分析 (两点) * @param linePositions 两点线 * @returns */ viewShedAnalysisByPostions(linePositions: Array): void; /** * 坡度分析 * @private * @param {object} params */ slopeAnalysis(positions: Array): void; private showResultByEcharts; /** * 方量分析 * @param callBack 返回统计的底高、基准面高等 */ volumeAnalysis(callBack: (res: IVolumeParams) => {}): void; /** * 方量分析 * @param polygonPostions 范围 * @param callBack 回调函数 */ volumeAnalysisByPositions(polygonPostions: Position[], callBack: (res: IVolumeParams) => {}): void; /** * 改变 方量分析参数 * @param {IVolumeParam} opts 参数 * @param callBack 回调函数 */ changeVolumeParameters(opts: IVolumeParams, callBack: (res: IVolumeParams) => {}): void; /** * 两点:通视分析 * @param */ visibleLineAnalysis(offset?: number): void; /** * 两点通视分析 * @param positions * @param offset 起点高度偏差值,默认为0 * @returns */ visibleAnalysis(positions: Array, offset?: number): void; /** * 计算切割点 * @param c1 开始点 笛卡尔坐标 * @param p2 结束点 笛卡尔坐标 * @param scene Cesium场景 * @returns 切割点 */ private computeCutPoint; /** * 计算点缓冲区 * @param position 中心点 * @param radius 缓存半径,单位千米 */ bufferPoint(position: Position, radius?: number, steps?: number): Polygon; /** * 计算线缓冲区 * @param positions * @param radius * @returns */ bufferPolyline(positions: Position[], radius?: number, steps?: number): Polygon; /** * 计算面缓冲区 * @param positions * @param radius * @returns 缓冲区 */ bufferPolygon(positions: Position[], radius?: number, steps?: number): Polygon; /** * 淹没分析 * @param options * @returns */ submergenceAnalysis(polygonPositions: Position[], options?: ISubmergenceOptions): SubmergenceAnalysis; /** * 地形挖掘 * @param polygonPositions * @param height * @param bottom * @param side * @returns */ excavateTerrain(polygonPositions: Position[], height?: number, bottom?: string, side?: string): ExcavateTerrain; /** * 剖面分析,计算返回数值数组 */ sectionAnalysis(polylinePositions: Position[], step?: number): Array; /** * 以echarts展示结果 * 返回echarts对象 */ displaySectionByEcharts(result: Array, echartsDiv: HTMLElement): any; /** * 多边形裁切 Tileset对象 * @param tileset Tileset 3D模型对象 * @param clipInner 裁切内部为true */ clipTilesetByPolygon(tileset: Cesium3DTileset, clipInner?: boolean): void; /** * 按多边形范围 进行Tileset坡向裁剪 * @param polygonPositions polygon位置点集合 * @param tileset Tileset 3D模型对象 * @param clipInner 裁切内部为true */ clipTilesetByPositions(polygonPositions: Position[], tileset: Cesium3DTileset, clipInner?: boolean): void; /** * 1、坡度坡向分析 */ calculateSlopeAndAspect(cellSide?: number, arrowSize?: number, maxCellSize?: number): void; /** * 根据多边形点位集合 进行坡度坡向分析 * @param positions 多边形点位集合 * @param cellSide 单元格宽度 * @param arrowSize 箭头大小 * @param maxCellSize 最多单元格数量 * @returns */ calculateSlopeAndAspectByPositions(positions: Position[], cellSide?: number, arrowSize?: number, maxCellSize?: number): void; /** * 内部计算坡度方法——内部基础 */ calculateSlope(ellipseResults: Array, squareList: any, arrowSize?: number): any[]; /** * 展示坡度坡向计算结果——内部基础 */ displaySlopeResults(overlays: any[], analysisLayer: any): void; /** * 2、坡度坡向分析 异步方法 * @param cellSide * @param arrowSize * @param maxCellSize */ calculateSlopeAndAspectAsync(cellSide?: number, arrowSize?: number, maxCellSize?: number): void; /** * 异步的 * @param positions * @param cellSide * @param arrowSize * @param maxCellSize */ calculateSlopeAndAspectByPositionsAsync(positions: Position[], cellSide?: number, arrowSize?: number, maxCellSize?: number): Promise; /** * 3、坡度坡向分析——异步——WebWorker */ calculateSlopeAndAspectAsyncWorker(cellSide?: number, arrowSize?: number, maxCellSize?: number): void; getSlopeOverlays(squareList: any, instances: any, colorList: any, arrowSize: any): any[]; /** * 计算网格 */ slopeAndAspect1_createGrid(positions: Position[], cellSide?: number): { cartoArray: Cartographic[]; PositionsList: Position[][]; }; /** * 前端计算点位-高度 */ slopeAndAspect2_sampleTerrainHeight(result: any): Promise; /** * 按方格为一组,返回 组列表 */ slopeAndAspect3_GetSquareGroups(updatedPositions: any[]): Cartographic[][]; /** * 计算坡度,返回overlays */ slopeAndAspect3_calculateSlope(firstResult: any, squareGroups: any[], arrowSize?: number): any[]; /** * 添加overlays */ slopeAndAspect4_loadOverlays(overlays: any[]): void; calculateContourLines(cellSide?: number): void; /** * 计算区域的等高线 */ calculateContourLinesByPositions(positions: Position[], cellSide?: number): void; /** * 异步计算提取等高线 * @param cellSide */ calculateContourLinesAsync(cellSide?: number): void; /** * 计算区域的等高线-turfAsync */ calculateContourLinesByPositionsAsync(positions: Position[], cellSide?: number): Promise; private getResultPolygon; /** * 计算相交部分 * @param poly1Positions 第一个多边形 * @param poly2Positions 第二个多边形 * @returns 单个面、多面或undefined */ intersectByTurf(poly1Positions: Array, poly2Positions: Array): Position[][] | undefined; /** * 合并两个面为一个要素 * @param poly1Positions 第一个多边形 * @param poly2Positions 第二个多边形 * @returns 单个面、多面或undefined */ unionByTurf(poly1Positions: Array, poly2Positions: Array): Position[][] | undefined; /** * 从一个面中移除与另一个面重叠的部分。 * @param poly1Positions 第一个多边形 * @param poly2Positions 第二个多边形 * @returns 单个面、多面或undefined */ differenceByTurf(poly1Positions: Array, poly2Positions: Array): Position[][] | undefined; get FlatTilesetHelper(): FlatTileset; /** * 创建模型压缩对象 * @param tileset * @param flatHeight * @returns */ createFlatTilesetHelper(tileset: Cesium3DTileset, flatHeight?: number): FlatTileset; /** * 将三维模型压平 * @param flatHeight 压平高度 * @param tileset 3d模型对象 * @param callback 回调函数,返回区域ID */ flatTileset3D(flatHeight: number, tileset?: Cesium3DTileset, callback?: (regionID: string, positions?: any[]) => {}): void; /** * 压平模型(可以多个区域) * @param polygonPositions 压缩区域 * @param flatHeight 压缩到的高度,默认为0 * @returns */ flatTileset3DByPositions(polygonPositions: Position[], flatHeight: number): string; clearFlatRegion(regionid?: string): void; /** * 清空资源 */ clear(): void; dispose(): void; } export default Analysis; /** * 淹没参数 */ export interface ISubmergenceOptions { viewer?: any; /** * 目标高度 */ targetHeight?: number; /** * 起始高度 */ startHeight?: number; /** * 当前水高度 */ waterHeight?: number; /** * 范围坐标 */ adapCoordi?: number[]; /** * 速度(米/秒) */ speed?: number; /** * 颜色 */ color?: Color; /** * up/down 上升/下降 */ changetype?: string; /** * 变化回调 */ speedCallback?: Function; /** * 回调 */ endCallback?: Function; } export interface IExcavateOptions { /** * 范围 */ positions?: Cartesian3[]; /** * 挖掘深度(米) */ height?: number; /** * 底部图片相对路径 */ bottom?: string; /** * 侧面图片相对路径 */ side?: string; }