柿子树备忘录

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中的坐标系

Feature

vuePress-theme-reco 柿子树    2023

Feature

ac 2020-10-10 OpenLayersFeature

# 1. Feature

我们把现实世界中实体,如:道路、行政边界、电线杆等等,抽象为要素(Feature)。

一个要素(Feature)包含一个几何对象(Geometry)来表述物体的空间几何信息和属性(Attributes)来描述物体的其他信息。

  						  Feature
                       ↙          ↘
                   Geometry     Attributes
                 ↙    ↓   ↘
             Point  Polyline  Polygon
1
2
3
4
5

# 2. ol中的Feature

ol中ol.Feature作为一个矢量对象存储矢量数据,包含几何对象(geometry)和其他自定义的属性信息,即 {k:v},其中有个geometry的key,其他都是自定义的key。

Feature中常用的方法:

  • setStyle(style):为要素渲染样式,style可以是单个也可以是数组;
  • getGeometry():获取要素中的几何对象;
  • setGeometryName():当要素在创建时的对象中有多个value值是几何对象时,可以通过该方法指定要渲染的几何对象。默认是key为geometry的几何对象。
var feature = new Feature({
  geometry: new Polygon(polyCoords),
  labelPoint: new Point(labelCoords),
  name: 'My Polygon'
});

// get the polygon geometry
var poly = feature.getGeometry();

// Render the feature as a point using the coordinates from labelPoint
feature.setGeometryName('labelPoint');

// get the point geometry
var point = feature.getGeometry();
1
2
3
4
5
6
7
8
9
10
11
12
13
14

创建Feature实例除了使用构造器以外,针对一些特殊格式(XML、WKT、TopoJSON、KML、GML等)的数据可以使用format解析器创建。

var wktString = "POLYGON((12724298.889 2576595.308,12721929.341 2568340.109,12716960.934 2564900.445,12724298.889 2576595.308))";
var wtkFeature = (new ol.format.WKT()).readFeature(wktString,{dataProject:'EPSG:3857',featureProject:'EPSG:3857'});
1
2

TopoJSON是GeoJSON按拓扑学编码后的扩展形式。使用点、弧(有向线)来表示的图形

# 3. 创建方式

方式一:使用 Feature 构造器创建

var pointFeature = new ol.Feature({
    geometry: new ol.geom.Point([12703928.421,2575539.521]),
    name: '点要素'
});
1
2
3
4

方式二:使用 format 解析器创建,针对一些特殊格式的数据

var wktString = "POLYGON((12724298.889 2576595.308,12721929.341 2568340.109,12716960.934 2564900.445,12724298.889 2576595.308))";

//创建解析wkt格式的解析器对象
var wktformat = new ol.format.WKT();
//读取wkt文本
var wtkFeature = wktformat.readFeature(wktString,{dataProject:'EPSG:3857',featureProject:'EPSG:3857'});
1
2
3
4
5
6