数据解析器
对于拿到的各式各样的原始气象数据,provider的作用是将原始气象数据解析为具有统一格式的,适用于本框架的结构数据(也称QE数据模型)。将数据转为统一格式,这样有利于图层的封装,图层的封装就可以以渲染方式为主,而不再关注对数据格式的封装。
QE数据模型
QE中的数据模型是通过接口进行定义的,针对矢量和栅格分别是 IFeaturesProvider
和IGridDataProvider
两个基础定义,实现这两个接口的类称为数据访问器,框架在渲染的时候会调用数据访问器中实现的接口方法(如矢量数据访问器中getFeatures获取所有矢量对象,格点数据访问器中allGrids()获取所有格点场)来获取真实的数据。所以数据访问器实际上是对数据本身以及数据元信息的封装,通过接口中定义的方法来返回框架中定义的标准数据格式的数据。
QE标准数据格式分矢量和格点两大类:
QE矢量数据模型
QE内部使用GeoJSON进行矢量对象的描述,QE中的矢量数据模型为GeoJSON的FeatureCollection。因此,所有矢量数据如果需要使用QE渲染的,需要提供一个实现了矢量数据解析器接口IFeaturesProvider
的类来将矢量数据转换为矢量数据模型的数据访问器。
QE中已经内置了一些常用的矢量数据访问器。具体查看矢量数据解析器
QE格点数据模型
栅格数据(又称格点数据)一般由数据描述信息和数据本身构成,QE中的栅格数据模型即为这两个信息的组合。
其中数据是GridData[time][level], 是一个多时次多高度层的格点数据序列,time表示时次,level表示高度层,GridData数据类为框架中定义的格点数据对象,表示一个二维的格点场,数据可以支持多种(单字节、浮点型等)类型,数据有xy两个方向的长度信息。该数据在格点数据访问器解析的过程中生成。所以格点数据访问器的作用在于将气象格点数据转换为QE格点数据模型。
因此,所有格点数据如果需要使用QE来渲染的,需要提供一个实现了格点数据解析器IGridDataProvider
的类来将格点数据转换为格点数据模型的数据访问器。
QE中已经内置了一些常用的格点数据访问器。具体查看格点数据解析器
使用示例
假设你现在希望显示自己输出的某个特定格式的矢量数据,那就需要找到或者创建一个合适的实现了IFeaturesProvider接口的类,然后在创建图层的时候将该类作为数据源传入。
例如展示CIMISS的JSON格式数据
const json = await getJSON("public/demos/data/autostation011.json");
const provider = new CimissStationFeatureProvider(json);
const layer = new LGeoJSONLayer().setDataSource(provider).setDrawOptions({...});
layer.addTo(map);
接下来我们按照QE两大数据模型进行分类,详细介绍已经内置的各个provider。
No Comments