十一、ArcGIS Runtime SDK for iOS 100.X教程系列之关键字检索

关键字检索需要利用的类是AGSServiceFeatureTable和AGSQueryParameters,通过AGSServiceFeatureTable的queryFeaturesWithParameters:系列方法,检索对应条件的元素结果。

-(id<AGSCancelable>)queryFeaturesWithParameters:(AGSQueryParameters *)parameters
                             queryFeatureFields:(AGSQueryFeatureFields)queryFeatureFields
                                     completion:(nullable void(^)(AGSFeatureQueryResult *__nullable result, NSError *__nullable error))completion;

AGSServiceFeatureTable类实体是根据动态图层服务初始化得来,但是要注意,直接根据动态图层服务无法初始化得到AGSServiceFeatureTable对象,必须是服务下的子图层服务链接才行,这就意味着query检索比较繁琐,因为一个动态服务下的子图层不仅仅有多个,而且可能存在嵌套关系,能使用的动态图层服务链接是类似这样的:

http://XXXXX/arcgis/rest/services/GTKJGH/CJXC_KG_2019/MapServer/3

注意最后面的"/3",其对应的就是服务下的子图层id。AGSServiceFeatureTable初始化代码如下:

[[AGSServiceFeatureTable alloc] initWithURL:[NSURL URLWithString:[executeObject.serviceURL stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]]]

AGSServiceFeatureTable对象也可以通过动态图层AGSArcGISMapImageLayer实例遍历得到的子图层AGSArcGISMapImageSublayer对象的table属性访问得到,关于子图层获取,参照前面的博文。

然后是AGSQueryParameters,初始化后主要在于它的属性设置,一个是returnGeometry:是否要返回元素图形形状信息,一个是whereClause:查询的SQL语句。

whereClause关键字查询语句:"XXXFieldName" LIKE '%绿地%',标注蓝色的部分是需要查询匹配的属性名,注意不是别名(alias),标注绿色部分是关键字,语句中的%是匹配任意字符的意思,当需要查询多个属性的匹配结果,语句注意要用括号括起来,如:(("XXXFieldName1" LIKE '%绿地%') OR ("XXXFieldName2" LIKE '%绿地%')),关于属性,可以通过AGSServiceFeatureTable实例的fields属性获取:

@property (nonatomic, copy, readonly) NSArray<AGSField*> *fields;

也可以通过浏览器查看属性信息,如下图: 

web端服务中查看属性信息

最后,使用AGSServiceFeatureTable的query系列方法检索获取结果便可,这里还需要注意,其结果的获取通过回调的AGSFeatureQueryResult的featureEnumerator属性对象的allObjects获取,得到的就是AGSFeature类元素对象:

[FeatureTable queryFeaturesWithParameters:params queryFeatureFields:AGSQueryFeatureFieldsLoadAll completion:^(AGSFeatureQueryResult * _Nullable result, NSError * _Nullable error) {
    for (AGSFeature *resultFeature in result.featureEnumerator.allObjects) {
//遍历得到的元素对象,可以拿来获取属性值,以及图形信息等
}
}];

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值