2.0 KiB
2.0 KiB
title | date | author | tags | categories | ||
---|---|---|---|---|---|---|
ol中的空间数据组织 | 2020-10-10 | ac |
|
|
Openlayers
中的空间数据组织
Openlayers
采用面向对象的方式进行开发,空间数据中的点、线、面三类矢量数据都有与之相应的js
类。在Openlayers
5中,矢量数据以Geometry抽象类作为基类,派生出点、线、面和多点、多线、多面以及集合类还有线性环等类。GeometryCollection
则为Geometry对象的集合。

矢量数据组织结构
上图为Geometry基类及其子类的继承关系,有点类似于OGC的另一规范GML提供的几何要素。其中LinearRing是一段封闭的线状路径,至少4个坐标点,三个坐标可以确定LinearRing,第四个坐标用于闭合,与第一个坐标相同,且只能用作定义面要素时描述面的外边界或内边界时使用。
可以简单分为:
- 基础的几何体(
primitive
):Point
、LineString
、Polygon
、LinearRing
、Circle
- 单一集合体(
aggregate
):MultiPoint
、MultiLineString
、MultiPolygon
- 复合集合体(
complex
):GeometryCollection
在实现细节上,采用命名空间进行模块化开发,矢量数据的几何对象在ol.geom
命名空间下。
ol/geom/Geometry
(抽象类)ol/geom/GeometryCollection
ol/geom/SimpleGeometry
(抽象类)ol/geom/Point
ol/geom/MultiPoint
ol/geom/LineString
ol/geom/MultiLineString
ol/geom/LinearRing
(只能用来构建Polygon)ol/geom/Polygon
ol/geom/MultiPolygon
ol/geom/Circle
作用:作为要素
feature
的几何属性,描述要素的外形特征。
Openlayer
在加载和解析(ol.format
)矢量数据的时候,会创建数据中的几何对象,通过Feature子类(ol.Feature
)组织为要素或使用ol.Collection
子类组织为要素集合,作为矢量图层数据源。