服务聚合的配置

发送反馈


SuperMap iServer 服务聚合是指将不同类型、不同来源的服务通过标准化流程整合到 SuperMap iServer 体系中,并通过统一的方式发布给 GIS 客户端。

SuperMap iServer 可以将不同来源的地图聚合成一幅地图展现给客户端,例如将来自 World.sxwu 工作空间的“世界地图”和来自 Jingjin.sxwu 工作空间的“京津地区人口分布图_专题图”,聚合成一幅地图“aggMap”,“aggMap”是一幅涵盖了“世界地图”和“京津地区人口分布图_专题图”所有内容的地图,客户端通过使用“aggMap”可以获取所有的地图功能,而不需要知道服务器端的实现细节。同样的,SuperMap iServer 还可以将不同类型的服务聚合,例如将来自一个 WMS 服务的“中国地图”聚合到上述“aggMap”中,使“aggMap” 涵盖“世界地图”、“京津地区人口分布图_专题图”和“中国地图”的所有内容。

SuperMap iServer 的服务聚合是在服务提供者层实现的,服务聚合的配置通过服务提供者的配置进行。SuperMap iServer 提供了聚合服务提供者(AggregationMapProvider 等)用于实现服务聚合。

基本流程

服务聚合的基本操作流程:

  1. 准备待聚合的服务提供者,需确保坐标系一致
  2. 创建聚合服务提供者(聚合器)
  3. 创建 GIS 服务组件
  4. 关联聚合服务发布的接口,如 REST

聚合地图服务

SuperMap iServer 提供了 AggregationMapProvider 用于实现地图功能的聚合,即聚合不同地图,提供完整的地图功能。不同类型、不同来源的地图在服务提供者层被组织为地图服务提供者,AggregationMapProvider 就是针对这些地图服务提供者进行聚合,AggregationMapProvider 支持聚合天地图地图服务提供者(即 TiandituMapProvider)。有关 SuperMap iServer 提供的地图服务提供者详细介绍,请参见:服务提供者

AggregationMapProvider 可以通过管理界面和配置文件两种方式进行配置。

管理界面配置方式

打开服务管理器,在“服务/服务提供者”选项卡下,点击添加服务提供者,如下图所示:

在弹出的对话框的服务提供者类型一项选择“聚合地图服务提供者”,选择需要聚合的服务提供者名称(服务管理器会自动列出可以聚合的地图服务提供者供选择),添加到选中列表中,然后填写聚合后的地图名称、聚合名称、参与聚合的地图名称,即可以成功添加一个聚合地图服务提供者。

注意:这里的地图聚合顺序与“选中的服务提供者名称”顺序一致,聚合后的效果为京津地区地图在上,世界地图_Night 在下。若地图名称填写错误,则出图为对应 provider 发布的地图列表里的第一幅地图。

配置文件配置方式

iServer 支持通过修改用户自定义服务配置文件(iserver-services.xml)来添加聚合服务提供者,详见服务配置文件结构

现以 iServer 提供的示例服务(iserver-services-samples.xml)为例,添加服务提供者需要为<providers>节点添加一个子节点<provider>,配置一个 AggregationMapProvider 的示例如下:

<!-- 地图聚合服务提供者,注意,目前使用地图聚合服务提供者的时候,
       所有涉及到的 Provider 和 MapImpl 的配置中,缓存图片访问路径的端口号都要固定,不能用{port}来代替。
-->
<provider name="jingjinworld" inner-providernames="ugcMapProvider-Jingjin,ugcMapProvider-World" class="com.supermap.services.providers.AggregationMapProvider">
        <config class="com.supermap.services.providers.AggregationMapProviderSetting">
                        <outputPath>../webapps/output</outputPath>
                        <outputSite>http://localhost:8090/output/</outputSite>
                        <name>jingjinworld</name>
                        <targetName>jingjinworld</targetName>
                        <mapNames>
                                <String>京津地区地图</String>
                                <String>世界地图_Night</String>
                        </mapNames>
        </config>
</provider>

在<provider>节点中,inner-providerNames 属性是配置文件中已经配置的、需要聚合的服务提供者的名称,可以有多个,以“,”分隔,class 属性是聚合服务提供者的实现类,为 AggregationMapProvider。聚合服务提供者对应的配置类为 AggregationMapProviderSetting,其配置项含义如下:

注意:以配置文件方式配置时,在  inner-providernames 参数中,填写在前面的 provider 对应的地图在上,这里聚合后的效果为京津地区地图在上,世界地图_Night 在下。若地图名称填写错误,则出图为对应 provider 发布的地图列表里的第一幅地图。

聚合地图服务提供者可以被地图组件使用,发布地图服务。

聚合数据服务

SuperMap iServer 提供了 AggregationDataProvider 用于实现数据功能的聚合,即聚合不同的数据源。有关 SuperMap iServer 提供的数据服务提供者详细介绍,请参见:服务提供者

AggregationDataProvider 可以通过管理界面和配置文件两种方式进行配置。

管理界面配置方式

打开服务管理器,在“服务/服务提供者”选项卡下,点击添加服务提供者,如下图所示:

在弹出的对话框的服务提供者类型一项选择“聚合数据服务提供者”,选择需要聚合的服务提供者名称(服务管理器会自动列出可以聚合的数据服务提供者供选择),添加到选中列表中,然后填写聚合后的数据源名称、数据源描述信息,即可以成功添加一个聚合数据服务提供者。

配置文件配置方式

iServer 支持通过修改用户自定义服务配置文件(iserver-services-user.xml)来添加聚合服务提供者,详见服务配置文件结构

现以 iServer 提供的示例服务(iserver-services-samples.xml)为例,添加服务提供者需要为<providers>节点添加一个子节点<provider>,配置一个 AggregationDataProvider 的示例如下:

<provider name="aggDataProvider" inner-providerNames="ugcDataProvider-World,ugcDataProvider-Changchun"
                                class="com.supermap.services.providers.AggregationDataProvider">
        <config class="com.supermap.services.providers.AggregationDataProviderSetting">
                        <name>aggData</name>
                        <description></description>
        </config>
</provider>

在<provider>节点中,inner-providerNames 属性是配置文件中已经配置的、需要聚合的服务提供者的名称,可以有多个,以“,”分隔,class 属性是聚合服务提供者的实现类,为 AggregationDataProvider。聚合服务提供者对应的配置类为 AggregationDataProviderSetting,其配置项含义如下: