任意路径剖面
任意路径剖面是根据用户提供的一系列剖面关键点,显示关键点所在路径上的剖面。
创建剖面路径
在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
No Comments