PolyUtil

PolyUtil()

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

方法

static mars3d.PolyUtil.buffer(geojson, width, steps)object

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

参数名称 类型 默认值 描述信息
geojson object

geojson格式对象

width number

缓冲半径,单位:米

steps number 8 可选

缓冲步幅

返回值:

缓冲面对象,geojson格式

static mars3d.PolyUtil.bufferPoints(points, width, steps)Array.<LngLatPoint>

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

参数名称 类型 默认值 描述信息
points Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array

坐标数组

width number

缓冲半径,单位:米

steps number 8 可选

缓冲步幅

返回值:

缓冲后的新坐标数组

static mars3d.PolyUtil.centerOfMass(arr, height)Cesium.Cartesian3

求坐标数组的中心点

参数名称 类型 描述信息
arr Array.<Array> | Array.<string> | Array.<LngLatPoint> | Array.<Cesium.Cartesian3>

坐标数组

height number 可选

指定中心点的高度值,默认为所有点的最高高度

返回值:

中心点坐标

static mars3d.PolyUtil.computeStepSurfaceLine(options)Promise.<*>

按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模型上分析(模型分析较慢,按需开启),默认内部根据点的位置自动判断(但可能不准)

objectsToExclude Array.<object> 可选

贴模型分析时,排除的不进行贴模型计算的模型对象,可以是: primitives, entities, 或 3D Tiles features

exact boolean false 可选

是否进行精确计算, 传false时是否快速概略计算方式,该方式计算精度较低,但计算速度快,仅能计算在当前视域内坐标的高度

offset number 0 可选

可以按需增加偏移高度(单位:米),便于可视

endItem computeStepSurfaceLine_endItem

异步计算每2个点后之间坐标后 的回调方法

end computeStepSurfaceLine_end

异步计算高度完成后 的回调方法

返回值:

异步计算完成的Promise,同callback

static mars3d.PolyUtil.computeSurfaceLine(options)Promise.<object>

求路线的贴地线坐标(插值)

参数名称 类型 默认值 描述信息
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模型上分析(模型分析较慢,按需开启),默认内部根据点的位置自动判断(但可能不准)

objectsToExclude Array.<object> 可选

贴模型分析时,排除的不进行贴模型计算的模型对象,可以是: primitives, entities, 或 3D Tiles features

exact boolean false 可选

是否进行精确计算, 传false时是否快速概略计算方式,该方式计算精度较低,但计算速度快,仅能计算在当前视域内坐标的高度

offset number 0 可选

可以按需增加偏移高度(单位:米),便于可视

返回值:

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

static mars3d.PolyUtil.computeSurfacePoints(options)Promise.<object>

求 多个点 的的贴地新坐标(不插值)

参数名称 类型 默认值 描述信息
options object {} 可选

参数对象:

参数名称 类型 默认值 描述信息
scene Cesium.Scene

三维地图场景对象,一般用map.scene或viewer.scene

positions Array.<Cesium.Cartesian3> | Array.<LngLatPoint>

坐标数组

has3dtiles boolean auto 可选

是否在3dtiles模型上分析(模型分析较慢,按需开启),默认内部根据点的位置自动判断(但可能不准)

objectsToExclude Array.<object> 可选

贴模型分析时,排除的不进行贴模型计算的模型对象,可以是: primitives, entities, 或 3D Tiles features

exact boolean false 可选

是否进行精确计算, 传false时是否快速概略计算方式,该方式计算精度较低,但计算速度快,仅能计算在当前视域内坐标的高度

offset number 0 可选

可以按需增加偏移高度(单位:米),便于可视

返回值:

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

static mars3d.PolyUtil.computeVolume(options)Promise.<VolumeResult>

体积计算

参数名称 类型 默认值 描述信息
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>

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

参数名称 类型 描述信息
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

格式化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>

求贝塞尔曲线坐标

参数名称 类型 描述信息
positions Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array

坐标数组

options object 可选

控制参数

参数名称 类型 默认值 描述信息
closure boolean fasle 可选

是否闭合曲线

sharpness number 0.85 可选

曲线的弯曲程度

resolution number 10000 可选

点之间的时间(以毫秒为单位)

返回值:

坐标数组

static mars3d.PolyUtil.getCenter(scene, toCartesian)LngLatPoint|Cesium.Cartesian3

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

参数名称 类型 描述信息
scene Cesium.Scene

三维地图场景对象,一般用map.scene或viewer.scene

toCartesian boolean 可选

是否返回

返回值:

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

static mars3d.PolyUtil.getEllipseOuterPositions(options)Array.<Cesium.Cartesian3>

获取 圆(或椭圆)边线上的坐标点数组

参数名称 类型 描述信息
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

计算geojson的边界范围

参数名称 类型 描述信息
geojson object 可选

Geojson对象

返回值:

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

static mars3d.PolyUtil.getGranularity(positions, splitNum)number

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

参数名称 类型 默认值 描述信息
positions Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array

坐标数组

splitNum number 10 可选

splitNum网格数

返回值:

granularity值

static mars3d.PolyUtil.getGridPoints(bbox, count, alt)object

在 指定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

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

参数名称 类型 描述信息
positions Array.<Cesium.Cartesian3>

区域范围

step number

间隔步长,单位:米

alt number 可选

高度值

返回值:

坐标集合

static mars3d.PolyUtil.getHeightRange(positions, scene, options)Promise.<object>

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

参数名称 类型 默认值 描述信息
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>

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

参数名称 类型 默认值 描述信息
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>

计算2点间的 曲线链路的点集(空中曲线)

参数名称 类型 描述信息
startPoint Cesium.Cartesian3 | LngLatPoint

开始节点

endPoint Cesium.Cartesian3 | LngLatPoint

结束节点

angularityFactor number

曲率

numOfSingleLine number

点集数量

返回值:

曲线坐标数组

static mars3d.PolyUtil.getMapExtentPositions(scene)Array.<Cesium.Cartesian3>

提取 地球视野 的边界坐标

参数名称 类型 描述信息
scene Cesium.Scene

三维地图场景对象,一般用map.scene或viewer.scene

返回值:

边线上的坐标点数组

static mars3d.PolyUtil.getOffsetLine(positions, offset)Array.<Cesium.Cartesian3>

计算平行线

参数名称 类型 描述信息
positions Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array

原始线的坐标数组

offset number

偏移的距离(单位米),正负决定方向

返回值:

平行线坐标数组

static mars3d.PolyUtil.getPositionsRectVertex(positions, rotation)Array.<Cesium.Cartesian3>

获取坐标点数组的外接矩形的 4个顶点坐标点(数组)

参数名称 类型 默认值 描述信息
positions Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array

坐标点数组

rotation number 0 可选

旋转的角度,弧度值

返回值:

4个顶点坐标点

static mars3d.PolyUtil.getRectangle(positions, isFormat)Cesium.Rectangle|object

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

参数名称 类型 默认值 描述信息
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>

获取矩形(含旋转角度)的边线上的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>

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

参数名称 类型 描述信息
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>

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

参数名称 类型 默认值 描述信息
positions Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array

坐标数组

options object {} 可选

参数对象:

参数名称 类型 描述信息
splitNum number 可选

插值数,等比分割的个数,默认不插值(概略值,有经纬网网格来插值)

minDistance number | string 可选

插值时的最小间隔(单位:米),优先级高于splitNum,如果传"auto",自动计算坐标中最小的2点距离

返回值:

插值后的坐标对象

static mars3d.PolyUtil.interPolygon(options)Promise.<interPolygonResult>

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

参数名称 类型 默认值 描述信息
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>

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

  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 可选

相机高度

返回值:

计算完成的相关数据

static mars3d.PolyUtil.interPolyline(options)Array.<Cesium.Cartesian3>

对路线进行平面等比插值,高度:指定的固定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>

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

  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, positions)boolean

判断点是否 多边形内

参数名称 类型 描述信息
position Cesium.Cartesian3 | LngLatPoint

需要判断的点

positions Array.<Cesium.Cartesian3> | Array.<LngLatPoint>

多边形的边界点

返回值:

是否在多边形内

static mars3d.PolyUtil.simplifyPositions(positions, options)Array

抽析简化点数量

参数名称 类型 描述信息
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

截取路线指定最大长度的新路线, 在最后一个点往前截取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

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

参数名称 类型 描述信息
resultInter VolumeResult

插值完的对象

cutHeight number

基准面高度

返回值:

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

static mars3d.PolyUtil.updateVolumeByMinHeight(resultInter)VolumeResult

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

参数名称 类型 描述信息
resultInter interPolygonResult

插值完的对象

返回值:

计算完成的填挖方体积

定义的类型

computeStepSurfaceLine_end(arrStepPoints)

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

参数名称 类型 描述信息
arrStepPoints Array.<Array>

二维数组坐标集合,各分段2点之间的贴地点数组的集合

computeStepSurfaceLine_endItem(raisedPositions, noHeight, index)

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

参数名称 类型 描述信息
raisedPositions Array.<Cesium.Cartesian3>

当前2个点之间的 贴地坐标数组

noHeight boolean

是否计算贴地高度失败,true时标识计算失败了

index number

坐标数组的index顺序

interPolygonResult(options)

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

参数名称 类型 默认值 描述信息
options object {} 可选

参数对象:

参数名称 类型 描述信息
list Array.<object>

三角网对象数组,每个对象包含三角形的3个顶点(point1\point2\point3)相关值

maxHeight number

面内最大高度

minHeight number

面内最小高度

granularity number

面内按splitNum网格数插值的granularity值

has3dtiles boolean

是否贴模型

hasTerrain boolean

是否贴地形

VolumeResult(options)

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

参数名称 类型 默认值 描述信息
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后赋值