`

关于Arcgis的Identify功能

阅读更多
ArcMap中的Identify功能是有目的查看要素(Feature)属性信息经常使用的工具。ArcMap中的Identify功能有以下几个特征:

第一,   鼠标点击具有“穿透力”,可以同时对多个图层的要素实现选择;
第二,   同一图层可以选择多个要素;
第三,   被选中要素并不高亮显示,而是以绿色闪烁一次;
第四,   所有选中要素列于弹出的信息窗口中。

identify 是GIS中比较常用的工具之一,在arcgis api for flex中esri为我们提
供了一个Identify Task来轻松完成identify 的功能。
首先,还是使用<esri:IdentifyTask>标签来创建一个Identify Task。
  
 <!-- Identify Task -->
    <esri:IdentifyTask id="identifyTask"
        identifyComplete="identifyCompleteHandler(event)"       
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Special
ty/ESRI_StatesCitiesRivers_USA/MapServer"/>
当identifyTask执行完毕的时候响应identifyComplete消息,我们就可以把
identify的结果做一些处理,比如添加到Graphic layer 上。
在执行identify之前,首先要对identify的参数设置一下,我们需要一个
IdentifyParameters对象。下面的代码是AS3脚本的代码,用来创建
IdentifyParameters和identify执行。
 var identifyParams : IdentifyParameters = new IdentifyParameters();
                identifyParams.returnGeometry = true;
                identifyParams.tolerance = 3;
                identifyParams.width = 600;
                identifyParams.height = 550;
                identifyParams.geometry = geometry;
  identifyParams.layerOption =
IdentifyParameters.LAYER_OPTION_ALL;
                identifyParams.mapExtent = map.extent;                 
                identifyTask.execute( identifyParams );
其中tolerance是容差半径
width:Width of the map currently being viewed in pixels.
height : Height of the map currently being viewed in pixels
geometry 是用来做identify的几何,常用的有点选,矩形选择,多边形选择等
参数设置好了之后,直接调用identifyTask.execute( identifyParams );就ok了

那么我们用来做identify的几何怎么来呢,在什么时候去做Identify呢?
首先回答第一个问题,做identify的几何我们可以利用第四讲中draw控件使用鼠
标交互来获得,这也是RIA的特点之一。
那么在什么时候做identify呢?
就在做identify的几何画完之后做,嘿嘿,等于没说嘛,当然要在画完了就做:-D
现在我们就来完成上面的工作
定义一个draw控件
<esri:Draw id="drawToolbar" map="{map}"
graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">

记得添加上drawEnd消息的响应函数drawEndHandler(event),这个事件会在draw
之后响应。
用as3脚本实现drawEndHandler和identifyCompleteHandler函数
 private function drawEndHandler(event:DrawEvent):void
            {
                var geometry : Geometry = event.geometry;
                var identifyParams : IdentifyParameters = new
IdentifyParameters();
                identifyParams.returnGeometry = true;
                identifyParams.tolerance = 3;
                identifyParams.width = 600;
                identifyParams.height = 550;
                identifyParams.geometry = geometry;
  identifyParams.layerOption =
IdentifyParameters.LAYER_OPTION_ALL;
                identifyParams.mapExtent = map.extent;                 
                identifyTask.execute( identifyParams );
          
           private function identifyCompleteHandler
(event:IdentifyEvent):void
           {
               for each (var result:IdentifyResult in
event.identifyResults)
               {
                   myGraphicsLayer.add(result.feature);
               }
           }
ok ,我们的工作大致就完成了,下面我们来看一下效果

Flash:demo
源代码:
 <?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:esri="http://www.esri.com/2008/ags"
    layout="absolute"
    pageTitle="Identify Features on the Map"
    >
     <mx:Script>
        <![CDATA[
            import com.esri.ags.Graphic;
            import com.esri.ags.events.DrawEvent;
            import com.esri.ags.events.IdentifyEvent;
            import com.esri.ags.geometry.Geometry;
            import com.esri.ags.symbol.Symbol;
            import com.esri.ags.tasks.IdentifyParameters;
            import com.esri.ags.tasks.IdentifyResult;
            import com.esri.ags.toolbars.Draw;
            private function drawEndHandler(event:DrawEvent):void
            {
                var geometry : Geometry = event.geometry;
                var identifyParams : IdentifyParameters = new IdentifyParameters();
                identifyParams.returnGeometry = true;
                identifyParams.tolerance = 3;
                identifyParams.width = 600;
                identifyParams.height = 550;
                identifyParams.geometry = geometry;    
                identifyParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL;
    identifyParams.mapExtent = map.extent;
                               
                identifyTask.execute( identifyParams );
           }
          
           private function identifyCompleteHandler(event:IdentifyEvent):void
           {
               for each (var result:IdentifyResult in event.identifyResults)
               {
                   myGraphicsLayer.add(result.feature);
               }
           }       
        ]]>
    </mx:Script>   
    <!-- Draw ToolBar --> 
    <esri:Draw id="drawToolbar" map="{map}" graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">
    </esri:Draw>   
    <!-- Identify Task -->
    <esri:IdentifyTask id="identifyTask"
        identifyComplete="identifyCompleteHandler(event)"
        url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"/>
    <mx:Panel  width="100%" height="100%">
       <mx:Button label="Identify" click="drawToolbar.activate(Draw.MAPPOINT)"/>   
        <esri:Map id="map" width="100%" height="100%">
            <esri:ArcGISDynamicMapServiceLayer
                url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer" />
            <esri:GraphicsLayer id="myGraphicsLayer"/>
        </esri:Map>
 </mx:Panel>
</mx:Application>




参考:
http://blog.csdn.net/suinon/archive/2008/05/27/2488129.aspx
分享到:
评论
2 楼 java-007 2009-05-07  
不好意思,现在我用的flex做的前台展示,没有jsp的。你可以看一下实现思路,然后改成jsp的。
1 楼 jiquan_hu 2009-05-06  
怎么是flex的啊,能给出jsf+jsp上面的么?
我在mapviewer.jsp扣不出来

能不能贴给出代码

相关推荐

    arcengine+C# identify功能实现.txt

    内部自带一个属性查看窗口,使用树结构对当前位置下所有图层对应的元素信息进行展示。需要修改的部分:缓冲区域范围。

    arcgis二次开发实现identify功能

    arcgis二次开发实现identify功能

    自己动手实现Arcmap中的Identify功能

    自己动手实现Arcmap中的Identify功能 自己动手实现Arcmap中的Identify功能 自己动手实现Arcmap中的Identify功能 自己动手实现Arcmap中的Identify功能

    基于Flex的ArcGIS开发经典例子说明文档

    (六)ArcGIS.Server.9.3和ArcGIS API for Flex实现Identify的功能图查属性 25 (七)ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能 30 (八)ArcGIS.Server.9.3和ArcGIS API for Flex实现MapTips...

    ArcGIS API for Flex library

    六、ArcGIS.Server.9.3和ArcGIS API for Flex实现Identify的功能图查属性(六)........................................................................ 24 七、ArcGIS.Server.9.3和ArcGIS API for Flex实现...

    Demo:ArcEngine简单教程——数据属性:属性表、识别(Identify);删除图层 等功能实现

    ArcEngine简单教程——数据属性:属性表、识别(Identify);删除图层 等功能实现Demo。包括实现右击TOC可以显示数据属性表、删除图层,双击Map可以识别地图属性 备份连接:链接:...

    C# ArcGIS Engine基础开发教程(5)——学习地图查询

    ArcGIS Engine9.3为开发者提供了无需写代码即可进行查询功能的Identify工具,但是这个工具是一个通用的信息查询新工具。而开发者通常需要自己开发一套符合自己业务需求更加灵活的查询功能模块,甚至一些功能不仅仅是...

    ArcGIS API for Flex library(整理)

    六、ArcGIS.Server.9.3和ArcGIS API for Flex实现Identify的功能图查属性(六)........................................................................ 24 七、ArcGIS.Server.9.3和ArcGIS API for Flex实现...

    ArcGIS Android API 量算,Buffer,坐标转换,Query,Identity功能

    该代码使用ArcGIS 的android API开发.实现基本地图的浏览,点坐标显示,线,面的长度及面积测量,坐标转换,点击查询,属性资料查询.缓冲区分析. 使用本地的arcGIS server 服务. 将代码内的数据服务路径替换成自己的即可.

    GIS Engine开发 IDentify功能(ICommand、ListView)

    完整的代码,直接运行。实现了ICommand接口,点选属性查询,比ArcMAP更容易辨识。为什么没有积分了

    arcgisengine综合系统

    基于C#实现的小系统,包括文件打开、专题图制作、属性查询、Identify查询、拉框选择等等功能,希望可以多多交流

    ArcGIS Runtime SDK for iOS v2.3.2

    早期的ArcGIS Runtime for iOS功能设计主要是围绕ArcGIS Server发布的各项服务,提供了对于REST服务的浏览、操作和交互,有经验的开发者会发现这和Web API非常接近,因此说只要掌握基础的Object-C,Web开发者也能...

    arcgis工具

    arcgis工具总结 1. 要素的剪切与延伸 实用工具 TASK 任务栏 Extend/Trim feature 剪切所得内容与你画线的方向有关。 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Snapping Environment对话框 捕捉设置...

    Flex\WebGIS经典例子

    (六)ArcGIS.Server.9.3和ArcGIS API for Flex实现Identify的功能图查属性 (七)ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能 (八)ArcGIS.Server.9.3和ArcGIS API for Flex实现MapTips ...

    openlayer-Identify:基于Openlayer 的Control方式,仿照Arcgis desktop的Identify,包含所有动画和界面都非第三方插件

    openlayer-Identify基于Openlayer 的Control方式,仿照Arcgis desktop的Identify,包含所有动画和界面都非第三方插件效果展示图 one仿照Arcgis的功能特性 1. 图层类型选择器,包括(所有图层、可见图层、最上面的...

    arcgis engine应用

    ArcGIS Engine的应用框架、空间分析、ArcSDE Server服务。有打开保存空间地图功能,地图漫游、放大缩小、全图功能。重写Identify控件。更换界面皮肤样式(支持.ssk)。

    基于ArcGIS_Engine组件开发教程

    C#\ArcGIS Engine 可以实现以下功能 鼠标滑过显示要素 tip 通过鼠标选择要素并高亮显示在 MapControl 自由旋转地图弹出颜色选择器显示图层的属性窗口 ArcGIS Engine 实现鹰眼 等等

    MyWebGIS.rar

    ArcGIS API for JavaScript 简单web工程,主要功能为1点 线 面 绘制,多点,多变形,三角形绘制等,2三种查询(identify。find。query查询)视域分析。缓冲区分析等

Global site tag (gtag.js) - Google Analytics