# iServer 服务操作

刘小标 2020-10-15

# 0 前言

iServer 服务是什么?

  • 将各种来源的 GIS 数据进行 GIS 功能处理
  • 通过某种网络协议或者服务规范进行发布
  • 通过网络发布的一种服务

image-20201014163439805

# 1 iServer 服务功能

iServer 内置服务功能,如下表所示:

服务 功能描述
地图服务 -地图浏览、缩放、平移;
-地图量算、查询;专题图
数据服务 -对数据源、数据集进行查询;
-对数据集进行在线编辑,增删改
空间分析服务 -对几何对象/数据集的裁剪、擦除、相交、合并、更新等操作;
-缓冲区分析、空间关系分析等;提取等值线
三维服务 -三维数据的发布;
-三维场景的发布,可以通过 Realspace 插件在线浏览、查询三维数据
交通换乘分析服务 -交通换乘方案分析;
-公交站点查询
交通网络分析服务 -最佳路径分析、多旅行商分析;
-服务区分析、选址分析;
-最近设施分析

其中,地图服务、数据服务、三维服务,以及空间分析服务,是我们工作中最常使用的服务类型。

# 1.1 创建 iServer 服务

# 1.1.1 快速创建服务

  • SuperMap iServer Manager 提供创建服务的向导,轻松实现大部分 iServer 服务的创建(此引导易操作,我们重点讲述第二种方式,也是快捷方式背后的原理

image-20201015103140832

# 1.1.2 分别配置服务提供者、服务组件和服务接口

  • 根据 iServer 服务的架构特点,实现 iServer 服务的创建(深入理解 iServer 的架构)

下面为大家详细描述 iServer 创建服务步骤,以便深入理解 iServer 服务:

image-20201015101058126

# 2 iServer 服务架构

一起看下超图 iServer 的服务架构,iServer 的每一种服务,如 REST、WMS 等都由三部分组成:Provider(提供者层)、Component(组件层)、Interface(接口层)。

iserver 架构

  • Provider 层的模块:利用 GIS 计算内核或者第三方 GIS 服务实现 GIS 功能的处理,如 UGCMapProvider 利用 UGO 内核实现关于地图操作的 GIS 功能。
  • Component 层的模块:根据 GIS 功能的划分,将各种 Provider 模块进行封装处理。如 Map Component 调用 Provider 层的 Map Provider 类型的模块提供关于地图操作的一系列 GIS 功能。
  • Interface 层的 Servlet 或者 Interface:按照不同服务形式的规则构建 Servlet 或者 Interface,将 Component 模块以各种服务形式对外发布,如将 Map Component 发布为 REST 风格的地图服务,将 Data Component 发布为 WFS 服务等。

SuperMap iServer 提供的各种 GIS 服务就是由这三层中的各种模块相互组合、相互作用构建出来的。

# 2.1 第一步:创建服务提供者(Provider)

1、选择服务类型 2、指定数据来源 3、设置其他参数

image-20201015102018857

服务提供者(Provider)针对某一类型数据进行 GIS 功能的处理,实现 GIS 功能封装与接口的统一。

iServer 默认类型:

  • 地图服务提供者
  • 数据服务提供者
  • 三维服务提供者
  • 空间分析服务提供者
  • 交通网络分析服务提供者
  • 交通换乘分析服务提供者

注:用户可自定义服务提供者

下面以三张表格阐明地图、数据、三维以及分析服务提供者及其使用说明:

地图服务提供者及其使用说明

地图服务提供者 使用说明
本地地图服务提供者
UGCMapProvider
获取 SuperMap 数据,处理地图功能
REST 地图服务提供者
RESTMapProvider
对 REST 地图服务来源的 GIS 数据进行地图功能的处理
WMTS 地图服务提供者
WMTSMapProvider
对 WMTS 来源的数据进行地图功能的处理
WMS 地图服务提供者
WMSMapProvider
对 WMS 来源的数据进行地图功能的处理
BingMaps 地图服务提供者
BingMapsMapProvider
对 BingMaps 服务的 GIS 数据进行地图功能的处理
超图云服务地图服务提供者
CloudMapProvider
实现对超图云服务的 GIS 数据进行地图功能的处理
天地图地图服务提供者
TiandituMapProvider
实现对天地图服务的 GIS 数据进行地图功能的处理
聚合地图服务提供者
AggregationMapProvider
实现对多源的 GIS 数据进行地图功能的聚合处理
..... 使用其他数据来源进行服务的发布

数据服务提供者及其使用说明

数据服务提供者 使用说明
本地数据服务提供者
UGCDataProvider
获取 SuperMap 数据,处理数据相关功能
WFS 数据服务提供者
WFSDataProvider
对 WFS 来源的数据进行数据功能的处理
REST 数据服务提供者
RESTDataProvider
对远程 REST 数据服务来源的数据进行数据功能的处理
聚合数据服务提供者
AggregationDataProvider
实现对多来源的 GIS 数据进行数据功能的聚合处理

三维、分析服务提供者及其使用说明

三维/分析服务提供者 使用说明
本地真三维服务提供者 获取 SuperMap 数据,处理三维相关功能
交通网络分析服务提供者 获取 SuperMap 数据,处理网络分析功能
空间分析服务提供者 获取 SuperMap 数据,处理空间分析功能
交通换乘分析服务提供者 获取 SuperMap 数据,处理交通换乘分析功能

# 2.2 第二步:设置服务接口(Interface)

根据发布的协议或者规范在服务接口列表中查找是否有合适的服务接口:

1、已经有对应的服务接口,该步骤结束 2、没有对应的服务接口,创建一个服务接口

image-20201015104310576

服务接口(Interface)将服务组件按照不同服务规范发布成不同类型的网络服务,该层决定了所支持发布的服务类型。

默认服务接口类型:

  • REST
  • REST/JSR(空间分析服务、交通换乘分析服务)
  • WMS
  • WFS
  • WPS
  • WCS
  • WMTS
  • Handler(对接使用 iServer Java 2008 开发的应用程 序)

注:用户可自定义服务接口

# 2.3 第三步:创建服务组件(Component)

1、选择服务类型 2、设置使用的服务提供者 3、设置绑定的服务接口

image-20201015113025128

服务组件(Component)对不同服务提供者的功能进行组合并封装成易于客户端应用的模块。 默认组件类型:

  • 地图服务组件(Map)
  • 数据服务组件(Data)
  • 交通网络分析组件(TransportationAnalyst)
  • 三维服务组件( Realspace)
  • 空间分析组件(SpatialAnalyst)
  • 交通换乘分析组件(TrafficTransferAnalyst)

注:用户可自定义服务组件。

服务组件(Component)与服务提供者(Provider)对应关系:

image-20201015131336597

服务组件(Component)与接口(Interface)对应关系:

image-20201014164644761

# 2.4 第四步:服务实例浏览

  • iServer 服务实例命名规则

image-20201016093026812

  • 在 SuperMap iServer Manager 中服务管理中查看详细配置信息

image-20201015132410634

# 3 实践练习

创建 SuperMap 数据来源的地图 REST 服务(动态出图)。 准备数据:China.smwu

image-20201015134341701

# 3.1 创建地图服务提供者

image-20201015135552011

image-20201015140011768

# 3.2 创建地图服务接口

image-20201015140149771

# 3.3 创建地图服务组件

image-20201015140613046

image-20201015140729086

# 3.4 预览服务实例

image-20201015140954738

image-20201015141221883

GIF 2020-10-15 17-19-49

# 4 瓦片格式

支持对地图服务生成和使用地图瓦片矢量瓦片属性瓦片,且生成的瓦片包支持分享传播与离线使用。

  • 地图瓦片

    将地图中所有图层切分并存储为栅格图片的地图瓦片,支持 FastDFS 和 MongoDB 分布式存储、SMTiles 、 SuperMap UGC 格式和 GeoPackage 格式。其中,SuperMap UGC 格式是 SuperMap 各个产品间通用的传统地图瓦片格式,相同版本的地图瓦片可以通用。分布式切图服务支持的“UGCV5”切片类型,就是指 5.0 版本原始缓存。

    此外,地图瓦片的图片格式支持 PNG、JPG、GIF。如果选择 PNG,且当前地图颜色值数小于等于 256,SuperMap iServer 会自动将图片存为 PNG8 格式,以节约存储空间。

  • 矢量瓦片

    地图中的指定矢量图层以矢量瓦片的形式进行切分和存储,支持 SVTiles 、MVT 格式。

    注:SVTiles 和 MVT 区别,SVTiles 是由 SuperMap 制定的一种利用 SQLite 数据库存储矢量瓦片数据的存储格式,是一种私有格式,而 MVT 则是目前流行的一种通用格式

    在地图服务的应用中,除了供用户访问浏览地图外,还有为用户提供查询、选择、高亮等操作的实际需求,这时就需要通过要素服务为用户提供上述功能。与地图服务需要通过缓存技术提升访问速度一样,要素服务也需要通过将矢量数据预先生成瓦片来提升客户端的渲染速度,因此矢量瓦片(Vector Tile)就诞生了。矢量数据在存储的时候,其体积比地图瓦片更小,更适合于地图中对时效性要求较高的地物要素的表达,如 POI 信息、路线信息等。常见的在线地图服务,如 Google Maps、百度地图等,都是采用了栅格瓦片做底图,叠加矢量瓦片的做法。

  • 属性瓦片

    将地图中矢量图层的属性数据以属性瓦片的形式进行存储,支持 UTFGrid 格式。

    在地图服务的应用中,如果包含较多的鼠标交互操作,传统做法是在地图上叠加要素图层,每个要素具有自己的热点和事件,用于完成鼠标交互。但在大数据量、高并发请求的环境中,客户端尤其是移动终端上,就不能很好地渲染大数据量的地理要素,因此就面临严重的性能问题。这种情况下,出现了一张地图瓦片结合要素属性信息的缓存方式,也就是在传统的地图瓦片的基础上,额外存储了按照格网划分的要素属性信息,这种预先划分的要素属性信息,就成为属性瓦片(也称互动格网瓦片)。地图瓦片结合属性瓦片的这种用法也已经有很多实践应用,最具代表性的是 MBTiles 规范及其附属的 UTFGrid 规范。

附上:栅格与矢量瓦片 PK 图 image-20201015155525367

image-20201015155555013

image-20201015161934530

# 4.1 矢量瓦片发布流程

# 4.1.1 生成矢量瓦片

image-20201015143718510

image-20201015163402268

# 4.1.2 通过创建服务提供者、组件、接口发布服务

image-20201015163636128

image-20201015164736822

# 4.1.3 预览服务

image-20201015165005405

image-20201015165144577

GIF 2020-10-15 17-10-57