SuperMap iServer 定义了 GIS 服务的整体框架,即三层服务结构。在这三个层次中,SuperMap iServer 分别提供一些默认的模块,如 Provider 层中利用 UGC 内核实现 GIS 功能的 UGCMapProvider,Component 层对基础地图功能进行封装的 Map 模块,如下表。用户可以直接对这些模块进行配置,从而发布出各种适应需求的 GIS 服务。
体系结构 |
模块类型 |
模块名称 |
模块的作用 |
Provider 层 |
MapProvider |
UGCMapProvider |
利用 SuperMap 工作空间数据实现基础地图操作。 |
RestMapProvider |
利用在线的 iServer REST Map 服务实现基础地图操作。 |
CloudMapProvider |
利用超图云服务实现基础地图操作。 |
FastDFSTileProvider |
利用 FastDFS 存储的瓦片实现基础地图操作。 |
GDPMapProvider |
利用超图 GDP(*.zip)瓦片包实现基础地图操作。 |
MongoDBTileProvider |
利用 MongoDB 存储的瓦片实现基础地图操作。 |
SMTilesMapProvider |
利用 SMTiles 或 MBTiles 瓦片包实现基础地图操作。 |
SVTilesMapProvider |
利用 SVTiles 瓦片包实现地图操作。 |
UGCV5TileProvider |
利用 UGC V5格式的地图瓦片实现基础地图操作。 |
WMSMapProvider |
利用第三方 WMS 服务实现基础地图操作。 |
WMTSMapProvider |
利用第三方 WMTS 服务实现基础地图操作。 |
BingMapsMapProvider |
利用 Bing Maps 服务实现基础地图操作。 |
TiandituMapProvider |
利用天地图服务实现基础地图操作。 |
ArcGISRestMapProvider |
利用 ArcGIS REST Map 服务实现基础地图操作。 |
tpkMapProvider |
利用 ArcGIS TPK(*.tpk)瓦片包实现基础地图操作。 |
BaiduMapProvider |
利用百度地图服务实现基础地图操作。 |
OpenStreetMapProvider |
利用 OpenStreetMap 服务实现基础地图操作。 |
AggregationMapProvider |
将多来源地图服务进行聚合实现基础地图操作。 |
GeoPackageMapProvider |
利用 GeoPackage 瓦片包实现基础地图操作。 |
DataProvider |
UGCDataProvider |
利用 SuperMap 工作空间数据实现数据管理相关功能。 |
WFSDataProvider |
利用第三方 WFS 服务实现数据管理相关功能。 |
RestDataProvider |
利用 RSET Data 服务实现数据管理相关功能。 |
AggregationDataProvider |
将多来源数据进行聚合实现数据管理相关功能。 |
GeoPackageDataProvider |
利用 GeoPackage 数据包实现数据管理相关功能。 |
TransportationAnalystProvider |
UGCTransportationAnalystProvider |
利用 SuperMap 工作空间数据实现交通网络分析功能。 |
RestTransportationAnalystProvider |
利用 REST TransportationAnalyst 服务实现交通网络分析服务功能。 |
ArcGISRestNetworkAnalystProvider
|
利用 ArcGIS REST 网络分析服务实现网络分析功能。 |
SpatialAnalystProvider |
UGCSpatialAnalystProvider |
利用 SuperMap 工作空间数据实现空间分析功能。 |
RestSpatialAnalystProvider |
利用 REST SpatialAnalyst 服务实现空间分析服务功能。 |
TrafficTransferAnalystProvider |
UGCTrafficTransferAnalystProvider |
利用 SuperMap 工作空间数据实现交通换乘分析功能。 |
RestTrafficTransferAnalystProvider |
利用 REST TrafficTransferAnalyst 服务实现交通换乘分析服务功能。 |
RealspaceProvider |
UGCRealspaceProvider |
利用 SuperMap 工作空间数据实现三维相关功能。 |
RestRealspaceProvider |
利用 REST 三维服务实现三维相关功能。 |
MongoDBRealspaceProvider |
利用 MongoDB 瓦片实现三维相关功能。 |
NetworkAnalyst3DProvider |
UGCNetworkAnalyst3DProvider |
利用 SuperMap 工作空间数据实现三维网络分析相关功能。 |
DSSProvider(领域空间服务提供者) |
自定义领域空间服务提供者,用于实现特殊业务的空间处理功能。该模块是用户自定义的模块。 |
PlotProvider |
UGCPlotProvider |
利用Plot标号库文件实现动态标绘相关功能。 |
Component 层 |
Map |
MapImpl |
将 MapProvider 类型的 Provider 模块进行功能封装。 |
Data |
DataImpl |
将 DataProvider 类型的 Provider 模块进行功能封装。 |
TransportationAnalyst |
TransportationAnalystImpl |
将 TransportationAnalystProvider 类型的 Provider 模块进行功能封装。 |
SpatialAnalyst |
SpatialAnalystImpl |
将 SpatialAnalystProvider 类型的 Provider 模块进行功能封装。 |
TrafficTransferAnalyst |
TrafficTransferAnalyst |
将 TrafficTransferAnalystProvider 类型的 Provider 模块进行功能封装。 |
Realspace |
RealspaceImpl |
将 RealspaceProvider 类型的 Provider 模块进行功能封装。 |
NetworkAnalyst3D |
NetworkAnalyst3DImpl |
将 FacilityAnalyst3DProvider 类型的 Provider 模块进行功能封装。 |
DSSComponent(领域空间服务组件) |
自定义领域空间服务组件,它是用户自定义的模块。该组件可以:
- 封装 Provider 层中任意模块;
- 利用 DSSComponent 直接实现特殊业务的空间处理。
|
Plot |
PlotImpl |
将 PlotProvider 类型的 Provider 模块进行功能封装。 |
Interface 层 |
RestServlet |
将除 SpatialAnalyst 组件之外的各种 Component 组件以 REST 风格的形式进行发布(Restlet 机制)。 |
JaxrsServletForJersey |
将 SpatialAnalyst 等组件以 REST 风格的形式进行发布(JAX-RS 机制)。 |
AGSRestServlet1 |
将地图服务组件发布为 ArcGIS REST 服务。 |
BaiduRestServlet1 |
将地图服务组件发布为 Baidu REST 服务。 |
GoogleRestServlet1 |
将地图服务组件发布为 Google REST 服务。 |
OSMRestServlet1 |
将地图服务组件发布为 OSM REST 服务。 |
TMSRestServlet1 |
将地图服务组件发布为 TMS REST 服务。 |
WMSSerlvet |
将地图服务组件发布成 WMS 服务。 |
WMTSServlet |
将地图服务组件发布成 WMTS 服务。
|
WFSServlet |
将数据管理服务发布成 WFS 服务。 |
WCSServlet |
将覆盖服务组件发布成 WCS 服务。 |
WPSServlet |
将空间分析组件发布成 WPS 服务。 |
HandlerServlet |
将三维之外的其他组件,以 Handler 接口形式进行发布,用于对接 SuperMap iServer 2008。 |
|
DSSServlet |
实现固定形式的服务发布机制,是用户自定义的模块。该 Servlet/Interface 可以:
- 实现系统所需的公开的 SuperMap iServer 并未提供的服务形式,如 WPS 服务;
- 实现符合自身系统特殊要求的形式的服务。
|
|
由于上述各个模块都对应各自特有的功能,因此在进行模块组装,以便构建 GIS 服务的时候,需要将各个层次上的具有相同服务能力的模块进行组合,不能将两个具有不同服务能力的模块进行组合,如具有地图服务能力的 UGCMapProvider 可以被 MapComponent 调用,但是不能够被 DataComponent 调用。