柿子树备忘录

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

Geometry

vuePress-theme-reco 柿子树    2023

Geometry

ac 2020-10-10 OpenLayersGeometry

# 1 几何对象

矢量数据以Geometry抽象类作为基类,派生出点、线、面和多点、多线、多面以及集合类还有线性环等类。GeometryCollection则为Geometry对象的集合,可以包含多种几何对象的实例。

image-20201013175738429

Geometry作为基类有一些几何对象常用的方法,如:

  • getExtent获取几何对象的范围
  • getClosestPoint获取几何对象点集中最后一个点

# 1.1 Coordinate

几何对象记录空间数据在空间坐标系下的位置坐标信息来表示矢量数据。

ol中的坐标信息用一个单独的类ol.coordinate来表示,可以直接用数值数组来创建一个xy坐标的实例,如:[113.958334, 22.535640]。

如果在view中没有指定空间坐标系,默认为EPSG:3857Web墨卡托投影坐标系。

# 1.2 子类实例

/**
 * new Point(coordinates, opt_layout)
 * opt_layout是`GeometryLayout`是坐标格式`XY`、`XYZ`、`XYM`、`XYZM`等
 * 常用方法getExtent()
 */
var point = new ol.geom.Point([12647823.642380577,2583474.64090162471]);

/**
 * new LineString(coordinates, opt_layout)
 * 常用方法:
 *      appendCoordinate(coordinate) 添加点
 *      getCoordinates() 获取坐标点集
 *      getExtent(opt_extent)
 *      getLength() 返回在投影坐标下的长度
 */
var lineString = new ol.geom.LineString([
     [12679009.949920928,2584697.6333541875],
     [12690322.630107135,2579041.2932610847],
     [12700565.191897348,2585691.314721895]
]);

/**
*  new Polygon(coordinates, opt_layout, opt_ends)
*  Linear ring geometry. Only used as part of polygon; cannot be rendered on its own.
*  LinearRing是一段封闭的分段的线状路径,(coordinates 标签中)至少4个坐标点,三个坐标可以确定 LinearRing,
*  第四个坐标用于闭合,与第一个坐标相同。
*
*  Polygon 必须有一个且最多只有一个 Exterior boundary 和 零个或多个 Interior boundary。
*  Interior boundary 之间不能相交或包含。
*
*  Polygon 构造器中的coordinates是LinearRing数组,第一个LinearRing作为面的外边界,其余的都是面内部的“洞”
*/
var polygon = new ol.geom.Polygon([
     [
         [12710578.442602707,2588366.610711876],
         [12719980.197081784,2581487.2781662103],
         [12731369.314296274,2588519.4847684465],
         [12710578.442602707,2588366.610711876]
     ],[
         [12716693.40486552,2584926.9444390433],
         [12722808.367128335,2584468.322269332],
         [12719521.574912071,2587755.1144855944],
         [12716693.40486552,2584926.9444390433]
     ]
]);

var multiPoint = new ol.geom.MultiPoint([
    [12640332.81360863,2567499.301990023],
    [12640256.376580345,2560925.717557498],
    [12648664.449691713,2564212.50977376]
]);

var multiLineString = new ol.geom.MultiLineString([
    [
        [12676487.527987517,2568875.168499156],
        [12685965.71949488,2565664.8133111787],
        [12696590.46642652,2568263.6722728745]
    ],[
        [12670601.87680956,2560619.969444357],
        [12681761.682939194,2565129.7541131824],
        [12692539.303927405,2563983.1986889048]
    ]
]);

var multiPolygon = new ol.geom.MultiPolygon([
    [
        [
            [12707903.146612726,2570403.9090648596],
            [12703469.798972186,2561384.339727209],
            [12716616.967837235,2563601.0135474787],
            [12720133.071138354,2570633.220149715],
            [12707903.146612726,2570403.9090648596]
        ]
    ],[
        [
            [12726859.52962745,2571626.9015174224],
            [12723649.174439471,2566123.43548089],
            [12731827.936465986,2565817.687367749],
            [12738095.77278537,2571091.842319426],
            [12726859.52962745,2571626.9015174224]
        ]
    ]
]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
image-20201116134048860

ol.geom.LinearRing是一段封闭的分段的线状路径,(coordinates 标签中)至少4个坐标点,三个坐标可以确定LinearRing,第四个坐标用于闭合,与第一个坐标相同。只能作为构建polygon要素的一部分,不能单独渲染。

注意:

构建Polygon 必须有一个且最多只有一个 Exterior boundary 和 零个或多个 Interior boundary。Interior boundary 之间不能相交或包含。