柿子树备忘录

vuePress-theme-reco 柿子树    2023
柿子树备忘录

Choose mode

  • dark
  • auto
  • light
首页
个人笔记
  • Web
  • GIS
  • Database
  • DevOps
  • 可视化
地图故事
生活点滴
归档
关于我
author-avatar

柿子树

109

Article

73

Tag

首页
个人笔记
  • Web
  • GIS
  • Database
  • DevOps
  • 可视化
地图故事
生活点滴
归档
关于我
  • GIS理论基础

    • GIS基础知识
    • 地图坐标系统
  • GeoServer笔记

    • 思维导图
    • 一、OGC简述

    • 二、基本使用

    • 三、服务标准

    • 四、图层加载

    • 五、服务端开发

  • Openlayers

    • 思维导图
    • 一、快速起步

    • 二、ol结构体系

    • 三、数据源加载

    • 四、常用控件

    • 五、几何对象与Style样式

      • ol中的空间数据组织
      • Geometry
      • Feature
      • Style
    • 六、事件交互

    • 七、OGC服务

    • 八、常用示例

  • CesiumJS

    • 思维导图
  • WorldWind

    • WorldWindJava 学习笔记
    • OpenGL中的坐标系

ol中的空间数据组织

vuePress-theme-reco 柿子树    2023

ol中的空间数据组织

ac 2020-10-10 OpenLayers

# Openlayers中的空间数据组织

Openlayers采用面向对象的方式进行开发,空间数据中的点、线、面三类矢量数据都有与之相应的js类。在Openlayers 5中,矢量数据以Geometry抽象类作为基类,派生出点、线、面和多点、多线、多面以及集合类还有线性环等类。GeometryCollection则为Geometry对象的集合。

image5738429
矢量数据组织结构

上图为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子类组织为要素集合,作为矢量图层数据源。