1.4 矢量数据加载
矢量数据
矢量数据是地理信息系统(GIS)行业中较为常用的一种数据格式,在介绍矢量数据加载之前,首先要了解一些矢量数据相关的概念:
1. 矢量数据。 矢量数据是用几何点、线、面以及相关属性来表示地理实体空间分布的一种数据组织方式。一般一份矢量数据中只能存储点、线和面中的一种类型,不会有混合类型的存在。
2. 矢量数据文件。 矢量数据文件有多种格式,如ShapeFile、KML/KMZ、DXF、GPX、lgd等。CooRun SDK支持ShapeFile类型文件的加载,ShapeFile是工业标准的矢量数据文件,也是最为常用的一种数量数据文件。一个Shape文件主要包括三个文件:一个主文件(*.shp),一个索引文件(*.shx),和一个dBASE(*.dbf)表。此外还会包含空间参考文件(*.prj)、几何体的空间索引文件(*.sbn 和 *.sbx)等。
3. 要素(Feature)。 对于一份矢量数据来说,它的基本单元是要素,一份矢量数据是由多个要素组成的。而要素又是由顶点几何数据和属性数据构成的。例如对于一份管线数据,它的每一根管线都是一个要素,这个要素中既包含管线的几何顶点,又包含管线相关的管径、颜色、埋深等属性信息。
4. 矢量数据符号化。 矢量数据符号化就是将矢量中的所有要素以某种/某类符号类型展示在地图中。矢量数据的符号化是地理信息系统(GIS)可视化的基础。 一般包括点符号、线符号、面符号、文字符号、图标符号等。
矢量数据基本对象
CooRun SDK是以图层的方式加载矢量数据的。在创建图层的过程中,必须设置矢量数据符号化时需要的符号对象、样式对象、样式表对象等。其中:
1. 符号对象 是设置矢量符号类型的对象。它可以设置每种符号的颜色、大小等信息。
2. 样式对象 是设置矢量符号对象表现方式的对象。通过设置样式对象的构建器,可以将矢量中的每个要素构建成不同的类型,如构建点、线、面、文字、管线、体块等。一个样式对象中可包含多个符号对象。
3. 样式表对象 是承载样式对象的载体,也是矢量图层配置对象的一个重要配置。一个样式表对象可以包含多个样式对象和资源库对象。
4. 资源对象 是在符号化展示过程中需要用到的一些外在对象。如图标符号需要用到的图片、模型符号需要用到的模型、文字背景图、纹理贴图等。
5. 资源库对象 是包含资源对象的载体,同时也是与符号关联的对象。
以上提到的5类对象是CooRun SDK进行矢量数据符号化过程中使用的基本对象。对于4和5是可选的,如果符号化过程中不需要用到资源对象,4和5可以不需要配置。
CooRun SDK支持多种符号类型的配置,每加载一种符号都需要配置相应的样式构建器,部分符号还需要加载相应的资源。具体的符号类型配置和样式表对应关系如下:
编号 | 符号类型 | 符号名称 | 对应的符号构建器 | 构建器名称 | 资源类型 | 资源名称 |
---|---|---|---|---|---|---|
1 | PointSymbol | 点 | BuildGeometryTileFilter | 几何瓦片化构建器 | -- | -- |
2 | LineSymbol | 线 | BuildGeometryTileFilter | 几何瓦片化构建器 | -- | -- |
3 | PolygonSymbol | 面 | BuildGeometryTileFilter | 几何瓦片化构建器 | -- | -- |
4 | TextSymbol | 文字 | BuildTextFilter | 文字构建器 | *TextSymbol | *文字资源 |
5 | IconSymbol | 图标 | SubstituteModelFilter | 模型构建器 | IconSymbol | 图标资源 |
6 | ModelSymbol | 模型 | SubstituteModelFilter | 模型构建器 | ModelSymbol | 模型资源 |
7 | PointExtrusionSymbol | 点挤出 | ExtrudeGeometryTileFilter | 挤出几何体瓦片化构建器 | -- | -- |
8 | LineExtrusionSymbol | 线挤出 | ExtrudeGeometryTileFilter | 挤出几何体瓦片化构建器 | *SkinSymbol | *纹理资源 |
9 | PolygonExtrusionSymbol | 面挤出 | ExtrudeGeometryTileFilter | 挤出几何体瓦片化构建器 | *SkinSymbol | *纹理资源 |
10 | BufferSymbol | 缓冲区 | BufferFilter | 缓冲区构建器 | -- | -- |
11 | AltitudeSymbol | 贴地 | -- | -- | -- | -- |
注意:。以上符号可以单独配置,也可以组合使用;对于某些符号,可以有选择的配置资源对象,上表中带*
的为可选配置。在使用过程中,需要注意以下几点:
- 可以通过点/线和文字/图标/模型的组合形成标注类应用。
- 在配置面符号时,可以和线符号一起使用,这样可以绘制出面的边框。
- 图标和模型符号是互斥的,一个图层中只能选择其中一种配置。
- 文字符号如果添加了背景图,则需要配置资源符号和资源库。
- 线挤出有颜色挤出和纹理挤出两种方式,在纹理挤出时,需要配置资源符号和资源库。
- 面挤出有多种方式,有单一颜色挤出和墙顶墙面挤出,其中墙顶墙面是指将顶面和侧面分开配置的挤出方法,该种方式又可以分为颜色挤出、纹理挤出、纹理+颜色挤出。
矢量数据加载
矢量数据的加载过程就是进行矢量数据符号化的过程。对于每种符号类型对象都会有它自身的参数配置。可以通过设置符号对象的参数配置以及符号对象的组合,可以实现不同效果的组合。
CooRun SDK是通过图层对象的方式加载矢量数据的,因此它包括添加(创建)、定位、显隐和删除4种操作。
矢量数据可以加载本地的矢量数据,也可以加载标准的WFS服务。两者在加载时主要是要素源类型相关配置不同,其他的配置都是通用的。
WFS服务数据加载需要配置FeatureSourceType
为 wfs
, Url
和 LayerName
为WFS服务相关路径和服务名。
OGR本地数据加载需要配置FeatureSourceType
为 ogr
, Url
本地矢量数据路径(.shp)。
矢量数据加载流程
矢量数据的加载过程是在将矢量数据加载到地图中并以某种符号类型呈现的过程。也可以简称为矢量数据的符号化过程。
矢量数据的基本加载流程是:
- 配置符号对象
- 配置样式对象
- 配置样式表对象
- 配置并添加图层对象
如果需要加载资源,加载流程是:
- 配置符号对象
- 配置样式对象
- 配置资源对象
- 配置资源库对象
- 配置样式表对象
- 配置并添加图层对象
注意:矢量数据符号化时可以进行专题配置,在进行专题配置时,可以在一个样式表中加入专题中的所有样式对象,并且每个样式对象的名称与样式表的样式选择器、以及矢量要素中的某一字段值要保持相同。
矢量图层参数说明
矢量数据加载时,矢量图层对象可配置的参数如下表所示:
配置项 | 配置说明 | 值类型 | 备注 |
---|---|---|---|
LayerOptionsName | 图层配置对象名称 | string | 矢量图层需配置为:FeatureModelLayerOptions |
DataSourceTypeName | 数据源类型 | string | 矢量解析的数据源类型为: fmgeomtile |
Driver | 数据解析驱动 | string | 数据目录中的.shp文件路径 |
FeatureSourceType | 要素源类型 | string | 本地数据为ogr,服务数据为wfs |
Url | 数据路径 | string | 数据的访问路径 |
LayerName | 图层名称 | string | 数据图层的名称。该配置在加载wfs服务数据时起效 |
TileSize | 瓦片大小 | float | 单个瓦片的大小。大小根据MaxRange 设置,一般为MaxRange的1/10左右 |
IsAutoTileSize | 是否自动计算瓦片大小 | string | 是否自动计算瓦片大小。默认为false不自动计算 |
LiftUp | 抬高高度 | float | 矢量图层整体抬高高度。默认0.0 |
MaxRange | 最大显示范围 | double | 矢量图层最大显示范围。该值必须>MinRange 。默认0.0 |
MinRange | 最小显示范围 | double | 矢量图层最小显示范围。该值必须<MaxRange 。默认0.0 |
Srs | 数据坐标参考 | string | 矢量数据的坐标参考值。可不配 |
MaxX | 数据的范围X向最大值 | double | 需要加载数据范围X方向最大值 |
MinX | 数据的范围X向最小值 | double | 需要加载数据范围X方向最小值 |
MaxY | 数据范围Y向最大值 | double | 需要加载数据范围Y方向最大值 |
MinY | 数据范围Y向最小值 | double | 需要加载数据范围Y方向最小值 |
IsLighted | 是否开启灯光 | bool | 是否开启矢量灯光。默认为false |
IsHasTexture | 是否有纹理 | bool | 是否有纹理,该参数在进行分析时起效。默认为false |
StyleSheet | 样式表配置 | string | 矢量图层符号化时使用的样式表对象配置 |
其中StyleSheet
为样式表对象配置信息。矢量数据符号化配置的符号、样式、样式表对象相关信息是通过该参数配置到图层对象当中的。
注意: 对于矢量符号对象的配置会在后续的内容中加以说明。
下图是矢量加载效果: