Class: VectorField

VectorField

向量场类对象,基于真实数据对台风、波浪、洋流的形态进行模拟
一般通过api.vectorField调用其方法

说明:目前支持台风、洋流、波浪、河流箭头等多种样式,参考以下说明:

  1. 流场数据最终提供给程序使用是以三维纹理的方式用于渲染,所以要求在三个维度上采样均匀,也就是采样点间隔均匀,否则会变形甚至错误。
  2. 鉴于大部分气象海洋数据的坐标系都是wgs84坐标系,所以支持内部进行坐标重投影。 场如果是投影后的,可以变量控制加以区分。
  3. 场数据一个bin文件是一层数据,bin文件中不再保存采样点坐标,只有三维向量(U,V,W)。采样点存储需要行优先,横向从左到右存储,纵向从上向下顺序存储。 注意:向量的方向要在一个文件里,不能分别存储。
  4. 场数据导出时,每一层的数据文件必须以 (当前层索引).bin 为后缀存储。 比如 time0_isobaricInhPa2.bin, 因为配置给程序时只给一个参数,路径+time0_isobaricInhPa,后面的索引和后缀根据配置的层数自动添加循环加载数据。
  5. 如果是二维向量场,第三个分量W也必须给值,可以设置为0,不能只写两个变量,程序只识别三维向量。

bin文件结构描述:
bin文件类似于dem文件结构的一个二维数组,数组元素可以是一个浮点数(标量)或者3个浮点数(向量),按行顺序排列。
例如有321*701的bin文件,即一个321x701的行列矩阵,前701个浮点是第0行,再701个浮点是第1行,直至第320行。bin文件渲染后在空间上会对应渲染范围参数。

tif文件描述:
数据源为.tif文件,标准栅格图片


<protected> new VectorField()

See:

Methods


add(data, fn)

添加一个或多个VectorField向量场对象

Parameters:
Name Type Description
data object | array

构造向量场对象VectorField的数据对象,可以是Object类型或者Array类型,对于每一个VectorField对象,支持以下属性:

  • id (string) VectorField对象ID

  • groupId (string) 可选,Group分组

  • userData (string) 可选,用户自定义数据

  • coordinateType (number) 坐标系类型,取值范围:0为Projection类型,1为WGS84类型,2为火星坐标系(GCJ02),3为百度坐标系(BD09),默认值:0

  • coordinate (array) 向量场对象坐标位置

  • vetorFieldArray (array) 向量场点位数据数组,注意:和vetorFieldFilePath参数二选一即可

  • binFilePath (string) 包含向量场点位数据的二进制bin文件路径,参考bin文件结构描述。注意:和vetorFieldArray参数二选一即可

  • binFileIndex (number) 数据文件名称开始索引,(xxx0.bin,xxx1.bin,xxx2.bin...),即从第几个bin文件开始加载解析,默认从bin文件名称数字后缀索引为0的开始加载,比如设置为0 则从xxx0.bin开始加载

  • depth (number) 向量场数据加载bin的层数,范围:[0~bin文件最大索引值]

  • reset (boolean) 向量场更新时是否对原场数据进行重置(动画拖影效果),默认:false,注意:仅对update()函数生效

  • repeatCount (number) 向量场重复次数

  • displayMode (string) 向量场的显示形态类型枚举【台风 波浪 洋流 河流等类型】 ,参考 VectorFieldStyle

  • width (number) 向量场分层数据宽的分辨率

  • height (number) 向量场分层数据高的分辨率

  • dataBounds (array) 向量场数据经纬度范围和高度范围

  • renderBounds (array) 待绘制的数据范围,可以与向量场数据不一致

  • fieldScale (array) 向量场缩放大小

  • bNeedProjection (boolean) 是否需要重投影,经纬度坐标需要设置为true,默认值:false

  • wkt (string) 重投影时的wkt字符串,为空时,默认投影到web墨卡托

  • offset (array) 向量场数据的整体偏移,默认不需要偏移

  • singleSpriteSize (number) 单个粒子大小,单位米

  • singleSpriteSizeOcean (number) 洋流模式下单个粒子大小,仅displayMode为洋流模式生效,单位米

  • vfIntensAsVelocity (number) 场到强度到速度的缩放比例

  • lifeTime (number) 粒子存活时间(全局),单位:秒

  • lifeTimeOcean (number) 洋流模式下粒子存活时间,仅displayMode为洋流模式生效,单位:秒

  • lodMin (number) 粒子大小最小缩放比例,默认值:0.6

  • lodMax (number) 粒子大小最大缩放比例,默认值:2

  • lodMaxDistance (number) 粒子大小最大缩放距离,即从[0~lodMaxDistance]映射到[lodMin~lodMax]对粒子大小进行缩放,注意:举例若超过此值则使用lodMax进行缩放

  • posFile (string) 位置坐标文件路径,txt文件格式类型

  • vFFile (string) UV流速流向的文件路径,txt文件格式类型

  • nDim (number) 流速流向数据纬度,即二维UV或者三维UVW

  • speedRange (array) 流速流向的取值范围,示例:[min,max]

  • vecScale (array) 向量缩放,默认值:[1,1,1],仅支持txt文件格式类型

  • downsample (number) 分辨率按此参数进行缩放的比例,一般取2的n次幂,如:2,4,6,8,16...

  • particleMaxNumber (number) 粒子最大数量限制

  • colorStops (array) 颜色插值对象数组,支持按速度显示对应颜色,每一个对象都有以下属性:

    color (Color) 速度值对应的图例颜色

    value (number) 速度值

  • opacityStops (array) 不透明度插值对象数组,支持按速度显示对应的不透明度,每一个对象都有以下属性:

    opacity (number) 速度值对应的不透明度,取值范围:[0~1]

    value (number) 速度值

fn function

可选的回调函数,请参考二次开发:异步接口调用方式

Example
请求数据结构示例 
        [{
            "id":"vectorField",
            "coordinate":[0,0,0],
            "repeatCount":10,
            "displayMode":0,
            "width": 720,
            "height": 360,
            "depth": 1,
            "dataBounds":[-20037508,-20037508,0,20037508,20037508,0],
            "renderBounds": [-20037508,-20037508,0,20037508,20037508,0],
            "fieldScale":[1,1,1],
            "bNeedProjection": true,
            "wkt": "",
            "offeset": [0,0,0],
            "binFileIndex": 0,
            "singleSpriteSize": 30000,
            "vfIntensAsVelocity": 45000,
            "spawnRate": 200,
            "lifeTime": 3,
            "colorStops":  [
                {"value": 100, "color": [1,0,0,1]},
                {"value": 50,  "color": [1,1,0,1]},
                {"value": 25,  "color": [0,0,1,1]},
                {"value": 0,   "color": [0,1,0,1]}
            ],
            "opacityStops":  [
                {"value": 100, "opacity": 1},
                {"value": 50,  "opacity": 0.75},
                {"value": 25,  "opacity": 0.5},
                {"value": 0,   "opacity": 0}
            ],
            "vectorFieldArray": [
                [ -0.0540924072265625, 0.00579833984375, -0.0029355287551879883 ],
                [ -0.0540924072265625, 0.00579833984375, -0.0029355287551879883 ],
                [ -0.0540924072265625, 0.00579833984375, -0.0029355287551879883 ],
                ......
            ]
    }] 

clear(fn)

清空场景中所有的VectorField对象

Parameters:
Name Type Description
fn function

可选的回调函数,请参考二次开发:异步接口调用方式


delete(ids, fn)

删除一个或多个VectorField对象

Parameters:
Name Type Description
ids string | array

要删除的VectorField对象的ID或者ID数组(可以删除一个或者多个)

fn function

可选的回调函数,请参考二次开发:异步接口调用方式


focus(ids, distance, flyTime, rotation, fn)

自动定位到合适的观察距离

Parameters:
Name Type Description
ids string | array

VectorField对象的ID或者ID数组

distance number

可选参数,观察点距离目标点(被拍摄物体)的距离,取值范围:[0.01~任意正数],如果设置为0或者不设置,系统自动计算

flyTime number

可选参数,相机飞行的时间,取值范围:[0~任意正数],单位:秒,默认值2秒

rotation array

可选参数,相机旋转的欧拉角:[Pitch,Yaw,Roll],数组元素类型:(number),取值范围:Pitch[-90~90] Yaw[-180~180] Roll[0]

fn function

可选的回调函数,请参考二次开发:异步接口调用方式


get(ids, fn)

根据ID获取VectorField对象的详细信息

Parameters:
Name Type Description
ids string | array

要获取的VectorField对象ID或者ID数组(可以获取一个或者多个)

fn function

可选的回调函数,请参考二次开发:异步接口调用方式

Example
VectorField的详细信息
[{
            "id":	"flowField1",
            "groupId":	"flowFieldGroup1",
            "userData":	"myFlowFieldData",
            "coordinateType":	0,
            ...
            
        }]

hide(ids, fn)

隐藏VectorField对象

Parameters:
Name Type Description
ids string | array

VectorField对象的ID或者ID数组

fn function

可选的回调函数,请参考二次开发:异步接口调用方式


setViewportVisible(id, vp, fn)

设置向量场对象在进入多视口状态下视口可见性

Parameters:
Name Type Description
id string

VectorField对象ID

vp Viewport

视口掩码(Viewport位运算)

fn function

可选的回调函数,请参考二次开发:异步接口调用方式


show(ids, fn)

显示VectorField对象

Parameters:
Name Type Description
ids string | array

VectorField对象的ID或者ID数组

fn function

可选的回调函数,请参考二次开发:异步接口调用方式


update(data, fn)

修改一个或多个VectorField对象

Parameters:
Name Type Description
data object | array

构造向量场对象VectorField的数据对象,可以是Object类型或者Array类型,对于每一个VectorField对象,目前只支持更新以下属性:

  • id (string) VectorField对象ID

  • dataBounds (array) 向量场数据经纬度范围和高度范围

  • renderBounds (array) 待绘制的数据范围,可以与向量场数据不一致

  • singleSpriteSize (number) 单个粒子大小,单位米

  • singleSpriteSizeOcean (number) 洋流模式下单个粒子大小,仅displayMode为洋流模式生效,单位米

  • vfIntensAsVelocity (number) 场到强度到速度的缩放比例

  • lifeTime (number) 粒子存活时间,单位:秒

  • lifeTimeOcean (number) 洋流模式下粒子存活时间,仅displayMode为洋流模式生效,单位:秒

  • colorStops (array) 颜色插值对象数组,支持按速度显示对应颜色,每一个对象都有以下属性:

    color (array) 速度值对应的图例颜色

    value (number) 速度值

  • opacityStops (array) 不透明度插值对象数组,支持按速度显示对应的不透明度,每一个对象都有以下属性:

    opacity (number) 速度值对应的不透明度,取值范围:[0~1]

    value (number) 速度值

  • fenceThickness (number) 向量场栅栏宽度,默认值:1

fn function

可选的回调函数,请参考二次开发:异步接口调用方式