`

关于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扣不出来

能不能贴给出代码

相关推荐

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

    现在,我们将探讨如何自己动手实现ArcMap中的Identify功能。 首先,我们需要理解Identify功能的工作原理。当用户在地图界面上点击时,Identify会执行以下步骤: 1. **坐标定位**:确定鼠标点击的位置在地图上的...

    arcengine+C# identify功能实现.txt

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

    arcgis二次开发实现identify功能

    "arcgis二次开发实现identify功能"就是这样一个典型的案例,它涉及到的主要知识点包括ArcGIS Engine、Identify任务以及相关的API使用。 ArcGIS Engine是Esri公司提供的一个开发工具集,它允许程序员使用.NET、Java...

    IdentifyTask ArcGIS地图源码_ios源码

    ArcGIS是Esri公司提供的一套强大的GIS解决方案,它提供了丰富的API和工具,使得开发者能够轻松地在iOS应用中实现地图功能。本篇文章将重点探讨一个基于ArcGIS的iOS源码项目——IdentifyTaskDemo,帮助开发者理解如何...

    arcgis server 自定义tools 应用简单技巧

    2. **缓冲区分析**:通过设置搜索半径,你可以扩展Identify功能,不仅识别点击点所在图层的特征,还包括其周围一定范围内的其他特征。 3. **结果筛选**:根据业务需求,自定义工具可以对识别结果进行筛选,只显示...

    arcgis engine开发identify程序

    10. **扩展性与自定义**:ArcGIS Engine的灵活性允许开发者根据需求扩展Identify功能,例如添加过滤条件、支持多图层同时识别、集成自定义逻辑等。 11. **错误处理**:在开发过程中,应考虑到可能出现的错误情况,...

    AE+C#Identify功能实现.pdf

    总的来说,这篇文档介绍了一个基于C#和ArcGIS的 Identify 功能实现,它展示了如何集成GIS组件来构建一个具有地图交互和查询能力的应用程序。通过这个功能,用户可以在地图上直观地获取地理信息,这对于地理数据分析...

    ArcGis右击菜单显示自定义Identity属性窗口

    在提供的文件名"ArcGisSixteen"中,尽管没有详细信息,但可能暗示了这是关于ArcGIS 10.6或10.7版本的内容,因为ArcGIS的版本号通常以阿拉伯数字表示,而"Sixteen"可能代表16(即10.6)。在这些版本中,ArcGIS提供了...

    arcgis _js

    ArcGIS JavaScript API的核心是JavaScript语言,它与Esri的ArcGIS Server紧密配合,提供地图服务、图层、地理编码、几何操作等多种功能。 **SDK的必要性**: 在使用ArcGIS JavaScript API进行开发时,Esri的软件...

    arcgisengine综合系统

    本文将深入探讨基于C#实现的ArcGIS Engine综合系统,涵盖文件打开、专题图制作、属性查询、Identify查询以及拉框选择等功能的实现,旨在为开发者提供一个全面的技术参考。 一、文件打开 在ArcGIS Engine中,文件...

    自制ArcEngine中的iDentify工具

    其中,iDentify工具是一个非常实用的功能,用户可以通过点击地图上的某一点来获取该点周围一定范围内的地理要素信息。本文将详细介绍如何在ArcEngine中实现一个类似ArcMap中的iDentify工具。 #### 实现思路 为了在...

    使用ArcGIS Engine来实现地图的点击查询并闪烁

    "使用ArcGIS Engine实现地图点击查询并闪烁" ArcGIS Engine 是 Esri 公司提供...使用 ArcGIS Engine 实现点击查询并闪烁需要精心设计和编写代码,我们需要充分利用 ArcGIS Engine 提供的接口和功能来实现自己的需求。

    ArcGIS API for Flex library(整理)

    ### 六、ArcGIS Server 9.3 和 ArcGIS API for Flex 实现Identify的功能图查属性 #### 目的 - 实现图查属性功能,即通过点击地图上的特定位置来获取该位置的相关属性信息。 #### 步骤 1. **触发Identify操作**:...

    Openlayer调用arcgis的REST服务的代码

    ### OpenLayers与ArcGIS Server REST API的集成及应用 ...通过这种方式,开发者可以更灵活地构建地理信息系统应用,并利用ArcGIS Server的强大功能。此外,还提供了一些实用的链接资源供读者进一步学习和探索。

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

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

    (word完整版)ArcGIS-Engine地图查询.doc

    ArcGIS Engine 9.3 提供了 Identify 工具,但是这个工具是一个通用的信息查询新工具。开发者通常需要自己开发一套符合自己业务需求更加灵活的查询功能模块,甚至一些功能不仅仅是查询信息,很多编辑编辑功能以及和...

    arcgis资料

    根据提供的信息,我们可以总结出以下有关使用C#与ArcGIS Engine (AE) 开发环境实现类似于ArcMap中Identify功能的知识点。 ### 一、ArcMap中的Identify功能概述 在ArcMap中,Identify是一种非常实用的功能,主要...

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

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

Global site tag (gtag.js) - Google Analytics