SuperMap iServer JAVA API介绍

作者:MR

    SuperMap iServer (以下简称iServer)的 JAVA API严格来说就是iServer JAVA类库提供的开发接口,为了区别于扩展iServer,我们说的JAVA API都是指:在其他应用中,引用iServer相关jar包进行开发的API(方式)。

    在 SuperMap iServer 中,一个完整的 GIS 服务的发布流程如下图所示:

发布流程

1. 通过服务提供者设置,可以构建服务提供者;
2. 通过服务提供者和服务组件设置,可以构建服务组件上下文,服务组件由服务组件上下文构建而成;
3. 通过服务组件和服务接口设置,可以构建服务接口上下文,服务接口由服务接口上下文构建而成。

    SuperMap iServer 提供了基于 REST 的应用编程接口——SuperMap iServer REST API,这些接口封装了大部分的 GIS 功能,包括基本的地图功能,数据编辑功能,分析功能等。SuperMap iServer 将这些 GIS 功能通过 SuperMap iServer REST API 提供给客户端,客户端使用这些 API,能够获取到相应的 GIS 能力。

    **iServer Java API开发主要用于后端(java语言,其他语言请使用iServer REST API或SuperMap iClient)向iServer发送HTTP请求,得到iServer响应。**当然,自己使用java.net.*相关包使用iServer REST API也能达到相同效果,使用iServer Java API的好处是,不需要自己构造请求体以及解析iServer返回内容、并且不存在浏览器的跨域限制等。

###使用服务提供者

    服务提供者对象可以使用对应的服务提供者设置对象来构造,在iServer帮助文档 JAVAdoc 里可以看到各种服务提供者类和其对应的设置类,请对照iServer发布的各种服务1来确定应该使用哪一个,同时也注意下各服务提供者类之间的继承关系。

    最常用的是使用各种服务接口类型服务提供者,比如RestMapProviderRestDataProvider等,其次是具体各种类型的服务提供者。比如,具体的地图服务提供者则是com.supermap.services.components.spi.MapProvider的子类,接近30个之多。
    前者(服务接口类型服务提供者,不依赖SuperMap iObjects Java环境,下面简称组件)的设置类可以简单得只需要设置一个访问地址即可(若服务设置授权访问就需要设置token或者用户名密码),构造出对应服务提供者对象就可以使用服务提供者对象的方法了。例如,构建一个 RestDataProvider 的代码如下:

// 服务提供者设置
RestDataProviderSetting RDPS = new RestDataProviderSetting();
RDPS.restServiceRootURL = "http://support.supermap.com.cn:8090/iserver/services/data-world/rest";
// 创建服务提供者
dataProvider = new RestDataProvider(RDPS);
// TODO
// 获取数据源 "World" 里所有数据集名,其他请参考RestDataProvider类参考
//List< String > dtnms = dataProvider.getDatasetNames( "World" );
//for ( String s : dtnms )
//{
//	System.out.println( s );
//}

    后者的设置类视情况定(参见对应设置类的类参考),数据来源为本地的几乎都需要工作空间信息、缓存来源信息等,这种方式依赖组件环境且不再是向目标URL发请求,而是可以直接对本地数据进行操作(转发服务的除外,看类参考)。一般在特殊应用场景才会这么使用,打开操作本地数据等更多的应用场景应该是扩展iServer和使用组件。iServer帮助文档提供了一个示例

###使用服务组件

    通过服务提供者和服务组件设置,可以构建服务组件上下文,服务组件由服务组件上下文构建而成。前面已经介绍了怎么构建一个服务提供者,以数据服务组件为例,创建一个数据服务组件 DataImpl 对象代码如下:

// 服务提供者设置
RestDataProviderSetting RDPS = new RestDataProviderSetting();
RDPS.restServiceRootURL = "http://support.supermap.com.cn:8090/iserver/services/data-world/rest";
// 创建服务提供者集合
List< DataProvider > dataProviders = new ArrayList<>( );
dataProviders.add( new RestDataProvider(RDPS));
// 服务组件上下文
DataContext dataContext = new DataContext( );
dataContext.setProviders( dataProviders );
// data服务组件实现类
DataImpl dataImpl;
try
{
	dataImpl = new DataImpl( dataContext );
	// TODO
	// 获取数据源 "World" 里所有数据集名,其它使用参见DataImpl类参考
	//List< String > dtnms = dataImpl.getDatasetNames( "World" );
	//for ( String s : dtnms )
	//{
	//	System.out.println( s );
	//}
} catch ( DataException e )
{
	e.printStackTrace( );
}

###使用服务接口

    JAVA API服务接口的使用主要用于获取服务的元数据、地图瓦片、要素等。iServer的帮助文档已经提供了一个使用的完整示例,参照示例和Java doc即可。使用场景不多。


  1. 可以访问iServer服务管理页面,通过添加服务提供者(http://{IP}:{端口}/iserver/manager/spsAndspsets)、添加服务组件并绑定服务接口(http://{IP}:{端口}/iserver/manager/scsAndscsets)来发布服务加深对三层结构的了解,帮助文档点此 。通过iServer JAVA API创建服务提供者的过程和在iServer管理页面添加服务提供者一致。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值