本文原创,转载请注明原创地址 http://blog.csdn.net/dongyu1009/article/details/37697389

用AGSImageServiceIdentifyTask能够获取ArcGISImageServiceLayer图层中的栅格值。这涉及了三个比較重要的类:AGSImageServiceIdentifyParameters、AGSImageServiceIdentifyTask和AGSImageServiceIdentifyResult,另一个delegate代理类。以下一一简单介绍一下:

AGSImageServiceIdentifyParameters

AGSImageServiceIdentifyParameters是用来设置identify參数的。能够用类方法imageServiceIdentifyParameters构造,即

[AGSImageServiceIdentifyParameters AGSImageServiceIdentifyParameters];

AGSImageServiceIdentifyParameters共包含以下几个属性

---geometry用于指定查询栅格的位置。经常是一个AGSPoint,也能够用AGSPolygon来查询一个区域的栅格值。

---mosaicRule是镶嵌规则。默觉得AGSMosaicMethodCenter。

---pixelSizeX和pixelSizeY用来设置象元大小,默觉得被查询栅格图层的象元大小。在象元大小范围内的全部镶嵌数据集都会被查询到。

AGSImageServiceIdentifyTask

实例化的时候须要设置查询的URL,假设须要验证的话须要设置credential

其它的没什么可介绍的,在查询的之前已经要为查询设置代理,查询的时候用- (NSOperation*) identifyWithParameters:(AGSImageServiceIdentifyParameters *)      identifyParams方法。

AGSImageServiceIdentifyResult

catelogItems是返回的栅格文件夹(我也不知道怎么翻译啦,一个Raster Catelog是Raster Dataset栅格数据集的集合)。

catalogItemVisibilities顾名思义,栅格文件夹是否可见

location就是identify的查询位置

name就是identify查询的属性名称

objectId不解释了。就是一个id

properties是一个属性的集合

value就是name相应属性的象元值

AGSImageServiceIdentifyDelegate

代理是用来获得查询结果用的。必须实现以下两个方法,第一个是identify查询失败的时候调用的,第二个是identify查询成功调用的,会获得一个AGSImageServiceIdentifyResult对象。

(void)     - imageServiceIdentifyTask:operation:didFailToIdentifyWithError:

(void)     - imageServiceIdentifyTask:operation:didIdentifyWithResult:

以下是详细的用法。

1、为ViewController设置代理,并实现查询完毕的两个方法:

在ViewController.h中

#import <UIKit/UIKit.h>
#define IMAGE_SERVICE "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/World/MODIS/ImageServer"</p>

@interface ViewController : UIViewController <AGSImageServiceIdentifyDelegate>

@property (strong, nonatomic) AGSImageServiceIdentifyTask *task;

@end

在ViewController.m中

- (void)imageServiceIdentifyTask:(AGSImageServiceIdentifyTask*)identifyTask operation:(NSOperation*)op didIdentifyWithResult:(AGSImageServiceIdentifyResult *)result{
NSLog(@"properties :%@", result.properties);
NSLog(@"value :%@", result.value);
NSLog(@"name : %@", result.name);
NSLog(@"catalogItems count :%d", [[result.catalogItems features] count]);
} - (void)imageServiceIdentifyTask:(AGSImageServiceIdentifyTask*)identifyTask operation:(NSOperation*)op didFailToIdentifyWithError:(NSError *)error{
NSLog(@"fault");
}

2、设置AGSImageServiceIdentifyTask:

    self.task = [[AGSImageServiceIdentifyTask alloc] initWithURL:[NSURL URLWithString:IMAGE_SERVICE]];
self.task.delegate = self;

3、设置AGSImageServiceIdentifyParameters:

    AGSImageServiceIdentifyParameters *param = [AGSImageServiceIdentifyParameters imageServiceIdentifyParameters];

    param.geometry = [AGSPoint pointWithX:116.425541 y:39.969147 spatialReference:[AGSSpatialReference spatialReferenceWithWKID:4326]];

    [self.task identifyWithParameters:param];

完整的代码例如以下:

ViewController.h中

//  ViewController.h
// Wang
//
// Created by dongyu on 14-7-10.
// Copyright (c) 2014年 org.reach. All rights reserved.
// #import <UIKit/UIKit.h> @interface ViewController : UIViewController <AGSImageServiceIdentifyDelegate> @property (strong, nonatomic) AGSImageServiceIdentifyTask *task; @end

在ViewController.m中

//  ViewController.m
// Wang
//
// Created by dongyu on 14-7-10.
// Copyright (c) 2014年 org.reach. All rights reserved.
// #import "ViewController.h"
#define IMAGE_SERVICE @"http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/World/MODIS/ImageServer" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad]; self.task = [[AGSImageServiceIdentifyTask alloc] initWithURL:[NSURL URLWithString:IMAGE_SERVICE]];
self.task.delegate = self; AGSImageServiceIdentifyParameters *param = [AGSImageServiceIdentifyParameters imageServiceIdentifyParameters]; param.geometry = [AGSPoint pointWithX:116.425541 y:39.969147 spatialReference:[AGSSpatialReference spatialReferenceWithWKID:4326]]; [self.task identifyWithParameters:param]; } - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} #pragma mark - delegate
- (void)imageServiceIdentifyTask:(AGSImageServiceIdentifyTask*)identifyTask operation:(NSOperation*)op didIdentifyWithResult:(AGSImageServiceIdentifyResult *)result{
NSLog(@"properties :%@", result.properties);
NSLog(@"value :%@", result.value);
NSLog(@"name : %@", result.name);
NSLog(@"catalogItems count :%d", [[result.catalogItems features] count]);
} - (void)imageServiceIdentifyTask:(AGSImageServiceIdentifyTask*)identifyTask operation:(NSOperation*)op didFailToIdentifyWithError:(NSError *)error{
NSLog(@"fault");
} @end

demo的下载地址:

http://download.csdn.net/detail/dongyu1009/7623695

新手发博文,有不好的地方,望大家批评指正。

ArcGIS Runtime SDK for iOS中获取ImageServiceLayer的栅格值的更多相关文章

  1. ArcGIS Runtime SDK for iOS开发地图图层-图形图层

    注:本文翻译自:https://developers.arcgis.com/ios/objective-c/guide/creating-a-graphics-layer.htm        创建图 ...

  2. ArcGIS Runtime SDK for iOS之符号和渲染

    符号定义了图形外观的非地理方面.它包括了图形的颜色.线宽.透明度等等.ArcGIS Runtime SDK for iOS包含了许多符号类,其中的每个类可以让你以独特的方式指定符号.每个符号的类型也是 ...

  3. ArcGIS Runtime SDK for iOS开发系列教程(5)——要素信息的绘制

    在客户端绘制点.线.面要素是GIS应用的基本功能,这一讲我将向大家介绍在iOS中如何来实现这一功能.大家都知道在Flex.Silverlight.js中对于要素的绘制都有一个叫GraphicsLaye ...

  4. ArcGIS Runtime SDK for Android中SimpleFillSymbol.Style样式

    SimpleFillSymbol.Style样式枚举共8种: 1.BACKWARD_DIAGONAL 反对角线填充 2.CROSS 交叉线填充 3.DIAGONAL_CROSS 前后对角线填充 4.F ...

  5. ArcGIS runtime sdk for wpf 授权

    这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述

    1.前言 ArcGIS Runtime SDK是一整套用于构建原生及跨平台的地图应用程序的开发包,包括移动设备的Android.iOS.Windows Phone,针对桌面的.Net.Java.OSX ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO

    1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...

  8. 《ArcGIS Runtime SDK for Android开发笔记》——(11)、ArcGIS Runtime SDK常见空间数据加载

    ArcGIS Runtime SDK for Android 支持多种类型空间数据源.每一种都提供了相应的图层来直接加载,图层Layer是空间数据的载体,其主要继承关系及类型说明如下图所示: 转载请注 ...

  9. 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView

    1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版预 ...

随机推荐

  1. js中时钟表盘

    1.js时钟表盘 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  2. Farseer.net轻量级开源框架 中级篇:执行SQL语句

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 事务的使用 下一篇:Farseer.net轻量级开源框架 中级篇: DbFacto ...

  3. you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(255), sort integer not null

    you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version ...

  4. ie6,ie7,ie8,FF 浏览器兼容问题

    javascript部分 1. document.form.item 问题问题:代码中存在 document.formName.item("itemName") 这样的语句,不能在 ...

  5. C++ string使用

    在c语言里,我们使用一个字符串时,是通过字符数组或者字符指针的方式来进行使用,在C++里,标准模板库已经给我们提供了string类型(string是以类的方式提供给我们使用). 定义和初始化strin ...

  6. CF 429B B.Working out (四角dp)

    题意: 两个人一个从左上角一个从左下角分别开始走分别走向右下角和右上角,(矩阵每个格子有数)问到达终点后可以得到的最大数是多少,并且条件是他们两个相遇的时候那个点的数不能算 思路: 首先这道题如果暴力 ...

  7. 【阶梯报告】洛谷P3391【模板】文艺平衡树 splay

    [阶梯报告]洛谷P3391[模板]文艺平衡树 splay 题目链接在这里[链接](https://www.luogu.org/problemnew/show/P3391)最近在学习splay,终于做对 ...

  8. Springboot2.0中jpa默认创建的mysql表为myisam引擎问题

    使用Springboot2.0后,使用jpa操作mysql数据库时,默认创建的表的引擎是myisam,myisam是不能加外键的,找了一些资源,最终可以用此方法解决! yml格式: spring: j ...

  9. Haoop Mapreduce 中的FileOutputFormat类

    FileOutputFormat类继承OutputFormat,需要提供所有基于文件的OutputFormat实现的公共功能,主要有以下两点: (1)实现checkOutputSpecs方法 chec ...

  10. Thunderbird and Gmail

    https://support.mozilla.org/en-US/kb/thunderbird-and-gmail