Skip to main content

任意路径剖面

任意路径剖面是根据用户提供的一系列剖面关键点,显示关键点所在路径上的剖面。

创建剖面路径

在QuickEarth中,剖面点使用ISectionPoint接口描述,路径是包含一系列剖面点的数组:

export interface ISectionPoint {
    x: number,
    y: number
}

因此一个剖面路径可以表示为ISectionPoint[]

TIPS:路径还可以使用[[lon,lat]]这样的二维数组来表示。
使用绘制工具绘制剖面路径

在Cesium中,有众多开源工具可以提供绘制功能,如:

https://github.com/adventureXPH/drawForCesium

https://github.com/gitgitczl/drawArrowForCesium

QE中也即将内置默认的三维绘制工具,敬请期待!

使用绘制工具绘制完成线条绘制后,可以拿到绘制的线条坐标,根据坐标生成ISectionPoint[]

使用代码生成固定形状的路径

这里使用一个圆作为示例,显示雷达中心点附近指定公里数的圆环剖面,生成剖面路径的代码如下:

//此provider是一个三维格点数据provider
const center = provider.center();
const circleGeometry = turf.circle([center.lon, center.lat], 200, { units: "kilometers" });

我们使用turf的circle方法,根据中心点和半径生成了一个圆环的路径。接下来我们可以将GeoJSON的线条坐标转换为路径数组对象,也可以直接使用坐标数组。

设置图层的剖面路径

框架提供了setSectionPath的方法用于设置剖面路径:

public setSectionPath(path: ISectionPoint[] | number[][], fixedPlane?: CFixedPlane, redraw = true, key = "default", interpPath = true){}

第一个参数就是剖面的路径,第二参数正常设置为CFixedPlane.lonLat或者留空即可,第三个参数如果设置的时候图层还没有加载到地图,可以设置为false,否则设置为true,不然图层不会刷新,第四个key参数表示当前剖面的识别key,具体下面详细说明,interpPath是是否对路径进行插值,如果是用户手绘路径或者是直线,一般都是需要设置为true,以便插值出更精细的点,如果是代码生成的本身比较精细的路径,则不需要插值。

当设置为插值的时候,如果原始点数过多,会造成插值耗时过久,这时候应该设置为false

完整示例