ArcGIS Runtime SDK for iOS中获取ImageServiceLayer的栅格值
本文原创,转载请注明原创地址 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的栅格值的更多相关文章
- ArcGIS Runtime SDK for iOS开发地图图层-图形图层
注:本文翻译自:https://developers.arcgis.com/ios/objective-c/guide/creating-a-graphics-layer.htm 创建图 ...
- ArcGIS Runtime SDK for iOS之符号和渲染
符号定义了图形外观的非地理方面.它包括了图形的颜色.线宽.透明度等等.ArcGIS Runtime SDK for iOS包含了许多符号类,其中的每个类可以让你以独特的方式指定符号.每个符号的类型也是 ...
- ArcGIS Runtime SDK for iOS开发系列教程(5)——要素信息的绘制
在客户端绘制点.线.面要素是GIS应用的基本功能,这一讲我将向大家介绍在iOS中如何来实现这一功能.大家都知道在Flex.Silverlight.js中对于要素的绘制都有一个叫GraphicsLaye ...
- ArcGIS Runtime SDK for Android中SimpleFillSymbol.Style样式
SimpleFillSymbol.Style样式枚举共8种: 1.BACKWARD_DIAGONAL 反对角线填充 2.CROSS 交叉线填充 3.DIAGONAL_CROSS 前后对角线填充 4.F ...
- ArcGIS runtime sdk for wpf 授权
这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
1.前言 ArcGIS Runtime SDK是一整套用于构建原生及跨平台的地图应用程序的开发包,包括移动设备的Android.iOS.Windows Phone,针对桌面的.Net.Java.OSX ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO
1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(11)、ArcGIS Runtime SDK常见空间数据加载
ArcGIS Runtime SDK for Android 支持多种类型空间数据源.每一种都提供了相应的图层来直接加载,图层Layer是空间数据的载体,其主要继承关系及类型说明如下图所示: 转载请注 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView
1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版预 ...
随机推荐
- Microsoft SQL Server学习(四)--约束
SQLServer - 约束 主要是为了保证数据库中的数据一致性.有效性.准确性, 从而提高了数据库中数据的正确性 一.约束的分类 在SQLserver中,约束分三种不同类型 1.实体约束 实提约束是 ...
- apache hadoop 伪分布式安装
1. 准备工作 1.1. 软件准备 1.安装VMWare 2.在VMWare上安装CentOS6.5 3.安装XShell5,用来远程登录系统 4.通过rpm -qa | grep ssh 检查cen ...
- 用rownum先排序后分页
今天突然想到rownum可以解决分页问题,于是做了各种实验,找个几个文章,最后有了一定成果. 现有表tablename,含有字段showorder,要求提取showorder的第11行到20行数据. ...
- x86汇编之十(使用字符串)
x86汇编之十(使用字符串) 转自网络,出处不详 一.传送字符串 Intel提供了完整的字符串传送指令,就像是MOV指令一样. 1.MOVS指令 1)movs指令格式 把字符串从一个位内存位置传送到另 ...
- margin与padding如何进行区分
margin与padding如何进行区分,这是很多学html人的困扰,其实说白了padding 就是内容与边框的空隙.而margin则是模块与模块的空隙.[3]
- JavaScript 实现页面中录音功能
页面中实现录音需要使用浏览器提供的 MediaRecorder API,所以前提是需要浏览器支持 MediaStream Recording 相关的功能. 以下代码默认工作在 Chrome 环境中. ...
- vue基础---事件处理
(1)事件监听 v-on 指令监听 DOM 事件,并在触发时运行JS代码 <div class="event_area"> {{message}} <button ...
- ViewPager与fragment详解链接
http://blog.csdn.net/harvic880925/article/details/38453725, http://blog.csdn.net/mwj_88/article/deta ...
- <MySQL>入门二 增删改 DML
-- DML语言 /* 数据操作的语言 插入:insert 修改:update 删除:delete */ 1.插入 -- 插入语句 /* 语法:insert into 表名(列名...) values ...
- SpringSecurity 获取认证信息 和 认证实现
JdbcDaoImpl 实现获取认证信息 PasswordEncoder 实现具体认证过程