服务聚合的配置 |
SuperMap iServer 服务聚合是指将不同类型、不同来源的服务通过标准化流程整合到 SuperMap iServer 体系中,并通过统一的方式发布给 GIS 客户端。
SuperMap iServer 可以将不同来源的地图聚合成一幅地图展现给客户端,例如将来自 World.sxwu 工作空间的“世界地图”和来自 Jingjin.sxwu 工作空间的“京津地区人口分布图_专题图”,聚合成一幅地图“aggMap”,“aggMap”是一幅涵盖了“世界地图”和“京津地区人口分布图_专题图”所有内容的地图,客户端通过使用“aggMap”可以获取所有的地图功能,而不需要知道服务器端的实现细节。同样的,SuperMap iServer 还可以将不同类型的服务聚合,例如将来自一个 WMS 服务的“中国地图”聚合到上述“aggMap”中,使“aggMap” 涵盖“世界地图”、“京津地区人口分布图_专题图”和“中国地图”的所有内容。
SuperMap iServer 的服务聚合是在服务提供者层实现的,服务聚合的配置通过服务提供者的配置进行。SuperMap iServer 提供了聚合服务提供者(AggregationMapProvider 等)用于实现服务聚合。
服务聚合的基本操作流程:
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,其配置项含义如下: