Supermap iClient for JavaScript 多数据集查询

作者:柳惠珠

一. 前言

在日常使用查询的时候,经常会对多个数据集进行查询,一个一个数据集查询会非常的耗时也麻烦。iClient for Javascript提供了多数据集查询的功能。下面我就以SQL查询为例,分别阐述一下地图查询与数据集查询的具体用法。

二. 地图查询

1 . SuperMap.REST.QueryBySQLParameters

这里写图片描述

queryParams,这个属性是用来设置查询的过滤条件。这是一个数组,数组中中可以写多个FilterParameter对象来实现对多个数据集的查询。

2 . SuperMap.REST.FilterParameter

这里写图片描述

attibuteFilter属性设置过滤条件,相关的条件的书写可查看另一篇博文
http://blog.csdn.net/supermapsupport/article/details/53910299
name属性用于设置查询的数据集名称。

3 . 示范代码

var queryParam = [], queryBySQLParams, queryBySQLService;
queryParam[0] = new SuperMap.REST.FilterParameter({
       name: "Countries@World.1",
       attributeFilter: "Pop_1994>1000000000 and SmArea>900"
});
queryParam[1] = new SuperMap.REST.FilterParameter({
        name: "Captials@World.1",
        attributeFilter: "Pop_1994>1000000000 and SmArea>900"
});
queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
        queryParams: [queryParam]
});
queryBySQLService = new SuperMap.REST.QueryBySQLService(url, {
	eventListeners: {"processCompleted": processCompleted,   "processFailed": processFailed}});
   queryBySQLService.processAsync(queryBySQLParams);

4 . 查询结果

查询完成后会传入一个queryEventArgs数据结果到processCompleted这个方法中。

这里写图片描述

地图查询的结果会按照数据集分组, 可以通过queryEventArgs.result.recordsets[]来查看每个数据集的查询结果。
这里写图片描述如果数据集的类型不同,例如,有点数据集,面数据集,线数据集等。可以通过查看queryEventArgs.result.recordsets[0].features[0].geometry来判断数据的类型。

二. 数据集查询

1 . SuperMap.REST.GetFeaturesBySQLParameters

这里写图片描述
queryParameter与地图查询不同,不是一个数组,只是一个FilterParameter对象。所以,多数据集就要在datasetNames里面进行设置,这个是一个数组,可以写多个数据集的名称。

2 . SuperMap.REST.FilterParameter

这里写图片描述

这里写图片描述与地图查询不同的是,我们GetFeaturesBySQLParameters里面已经通过datasetNames属性设置了数据集的名称,所以在数据集查询的时候,name属性我们就不再进行设置了,设置attributeFilter即可。

3 . 示范代码

var getFeatureParam, getFeatureBySQLService, getFeatureBySQLParams;
getFeatureParam = new SuperMap.REST.FilterParameter({
        attributeFilter: "SmID > 50"
});
getFeatureBySQLParams= new SuperMap.REST.GetFeaturesBySQLParameters({
      queryParameter: getFeatureParam,
      datasetNames:["World:Countries","World:Capitals"]
});
getFeatureBySQLService = newSuperMap.REST.GetFeaturesBySQLService(url2
, {
	      eventListeners: {"processCompleted": processCompleted, 
	      "processFailed": processFailed}});
getFeatureBySQLService.processAsync(getFeatureBySQLParams);

4 . 查询结果

查询完成后会传入一个queryEventArgs数据结果到processCompleted这个方法中。

这里写图片描述

可以通过queryEventArgs.result.features[]来查看每个数据集的查询结果。
这里写图片描述如果数据集的类型不同,例如,有点数据集,面数据集,线数据集等。可以通过查看queryEventArgs.result.features[0].geometry来判断数据的类型。

这里写图片描述这里需要注意的是:地图查询的结果会按照数据集进行分类,而数据集查询的结果不会按照数据集进行分类,而是直接将结果都放在features里面。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值