`
Virgo_S
  • 浏览: 1153701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Server Java----空间查询和高亮显示的实现

阅读更多
ESRI在JAVA ADF中做了很多的工作,其中很重要的一个部分是WebQuery。WebQuery用来对ArcGISServer和ArcIMS进行查询,然后在ADF这一端对地图进行渲染。比如说高亮显示,用图片进行渲染等等。
我们来看一个简单的选中,并把选中结果进行高亮显示的开发过程。
事实上选中可以用两种方法,第一种是空间选择,第二种是文本查询,这两种选中都可以。ESRI也提供了进行这两种查询的两个类,这两个类都继承自同一个接口,我们来看一下:
这个类是IdentifyCriteria, TextCriteria,接口是QueryCriteria,QueryCriteria可以设置一些比如最大返回记录,是否返回记录的详细信息等设置。如名所示,IdentifyCriteria用来对数据进行空间查询,我们来看一下,如何使用这个类:
IdentifyCriteria ic = new IdentifyCriteria(geom);


  geom是一个WebGeometry类的实例,它可以从客户端触发的MapEvent类中得到。
  创建了这个IdentifyCriteria之后,就可以进行查询了,查询是由WebQuery来完成的,所以先要得到WebQuery:
WebQuery query = (WebQuery) context.getAttribute("query");

  大家打开faces-config.xml,mapContext里面由没有query,如果有,用上面的代码就可以得到WebQuery。
  得到了WebQuery,就可以大干一场了,可以用下面的办法进行空间查询:
List results=query.query(ic,lyrList);

ic就是IdentifyCriteria,lyrList是一个查询目标层的列表,目标层可以是一个,也可以是多个,比如可以用下面的方法得到所有可以查到的图层:
public  ArrayList getQueryLayers(){
    if(layers != null) return layers;
    layers= new ArrayList();
    WebQuery wQuery = this.context.getWebQuery();
    WebLayerInfo layerInfo = null;
    if(wQuery != null){
        List layerList = wQuery.getQueryLayers();
        for(Iterator iter = layerList.iterator(); iter.hasNext(); ) {
            Object item = (Object) iter.next();
             if(item instanceof WebLayerInfo){
                 layerInfo = (WebLayerInfo)item;
                 layers.add(new SelectItem(layerInfo, layerInfo.getName()));
             }
       }
    }
    return layers;
}

   当然,如果你不想查所有的图层,也可以让用户进行选择,选择哪个需要查询的图层。
  现在来说说查询返回的结果,我们可以看到结果是一个List,List里面是什么?List里面的对象是QueryResult.
  你可以循环得到里面的每一个QueryResult,并把它们高亮显示:
for(int ii=0;ii<results.size();ii++){    
    result = (QueryResult) results.get(ii);   
    result.highlight();
}

Highlight采用什么颜色,什么标志进行高亮显示,也是我们可以自己控制的,我个人的喜好是用红色,跟张艺谋一个水准,我们可以把显示符合加到query里面:
WebSimpleMarkerSymbol markers = query.getPointGraphicSymbol();
if (markers == null ) {
    markers = new WebSimpleMarkerSymbol();
    query.setPointGraphicSymbol(markers);
}
markers.setAntialiasing(true);
markers.setColor("255,0,0");
markers.setOutlineColor("255,0,0");
markers.setMarkerType(WebSimpleMarkerSymbol.CIRCLE);

同样,你可以设置线的颜色和多边形的颜色。这样就可以按照你需要的颜色进行高亮显示了。

  当然QueryResult的功能不止能高亮显示,你还可以得到查询结果集的每一个字段的值,用result.getDetails()方法即可得到一个Map,里面有所有结果的字段名和字段值。

   最后有说明的是,以上所有的代码对于ArcGIS Server和ArcIMS都同样适用,Enjoy。

分享到:
评论

相关推荐

    ArcGIS+Server+Java讲座

    19、ArcGIS Server Java讲座-空间查询和高亮显示的实现 52 20、Server Java 自定义开发-Network Analysis 54 21、ArcGIS Server开发——控制图层是否可见 59 22、航线查询问题-Server Java的实现方法 59 23、...

    java -opc ua 连接kepserver 源码

    6. **IDEA编辑器**:IntelliJ IDEA是Java开发的主流集成开发环境,提供了代码高亮、自动完成、版本控制集成等多种功能,使得开发和调试更加高效。 综上所述,这个Java项目展示了如何使用OPC UA与KepServer进行交互...

    Java language server.zip

    Java语言服务器(Java Language Server)是开发者工具中的一个重要组件,尤其对于Java开发环境而言,它提供了强大的代码分析、自动补全、错误检测等功能。通过集成到IDE(集成开发环境)中,Java语言服务器能够极大...

    Arcgis server 查询地图,高亮显示,定位源代码

    【ArcGIS Server查询地图、高亮显示和定位源代码】涉及的是使用GIS技术在Web环境中进行地图服务的开发。此过程主要包括多个步骤,涉及到多个软件的下载和安装,以及环境配置。 首先,需要安装JDK(Java Development...

    eclipse-java-oxygen-3-win32-x86_64.zip

    8. **Java EE支持**:对于Web和企业级Java开发,Eclipse提供了JavaServer Faces (JSF)、Java Persistence API (JPA) 和Enterprise JavaBeans (EJB)等工具,支持创建和管理复杂的Java EE项目。 9. **API文档**:...

    [feiq]ArcGIS Server Java讲座.doc

    - 文档还涉及了空间查询和高亮显示的实现,以及自定义Network Analysis,这些都是地理信息系统中的重要功能。 8. **图层控制和标注**: - 开发者可以学习到如何控制图层的可见性,以及标注的实现,这有助于构建更...

    eclipse-jee-2022-09-R-win32-x86-64.zip

    Eclipse JEE版本是专为JEE开发者设计的,包含了用于Web和企业级应用程序开发的工具集,如JavaServer Faces (JSF)、Java Persistence API (JPA) 和Enterprise JavaBeans (EJB)等。此外,它还集成了Tomcat、GlassFish...

    eclipse-jee-2020-06-R-win32-x86_64

    它包含了诸如JavaServer Pages (JSP)、Java Servlets、Java Persistence API (JPA)、Enterprise JavaBeans (EJB)以及WebSocket等JEE相关技术的支持。 三、核心功能 1. **项目管理**:Eclipse提供了一套完整的项目...

    二次开发arcgis_server_for_java

    - **高亮显示:**为了突出显示查询结果,可以使用高亮显示技术,将符合条件的要素用不同的颜色或样式突出显示出来。 **6.2 网络分析:** - **网络分析:**网络分析是 GIS 中的一项高级功能,它可以用来解决诸如...

    SuperMap iServer Java 课程-SuperMap iServer服务

    - **高亮风格设置**:自定义地图元素的显示样式,如颜色、大小等。 ##### 3.2 WebService服务配置与发布 WebService服务是指基于Web协议的服务接口,可以实现跨平台的数据交互。SuperMap iServer Java 支持...

    eclipse-jee-2020-12-R-中文版(整合中文包).zip

    - **Web开发**:内置了对JavaServer Pages (JSP)、Servlet、JavaServer Faces (JSF)等Web技术的支持。 - **企业服务**:EJB(Enterprise JavaBeans)容器支持,便于开发分布式企业级应用。 - **数据库集成**:...

    基于java的arcgis开发

    ArcGIS Server的开发不仅仅是前端的JSF和ADF,还涉及到了许多GIS专业的知识点,比如如何进行空间查询、高亮显示地理特征、控制图层的可见性、航线查询问题以及如何在Task中实现下拉列表、复选框和单选按钮等。...

    MapXtreme for java源码

    在Java环境中,MapXtreme for Java提供了一套API,允许开发者集成地图功能到自己的应用程序中,实现地图的绘制、图元操作、空间分析等功能。本文将深入探讨MapXtreme for Java中的关键知识点,以及描述中提及的点、...

    ArcGIS Server开发.pdf

    它提供了丰富的控件和类库,用于地图展示、查询、编辑和分析地理数据。 2. **REST API**:REST(Representational State Transfer)是另一种与ArcGIS Server交互的方式,它采用HTTP协议,提供简洁、无状态的接口,...

    solr enterprise search server

    - **实现原理**:通过配置 Solr 的高亮参数(如`hl.fl`、`hl.fragsize`等),可以自定义高亮显示的效果,包括高亮片段的数量、高亮标记等。 - **应用场景**:适用于所有需要提供搜索功能的应用程序,尤其是那些...

    牛客webserver服务器项目一个月速通

    根据给定的文件信息,我们可以总结出一系列关于“牛客webserver服务器项目一个月速通”的重要知识点,主要围绕Linux系统编程的基础展开。 ### Linux开发环境搭建 - **环境准备**: - 安装Linux系统:可以选择通过...

    Apache Solr 3 Enterprise Search Server

    - **高亮显示**:突出显示匹配的关键词,帮助用户快速定位相关信息。 #### 五、技术集成与客户端支持 - **服务器端集成**:Solr可以轻松地与其他服务器端技术集成,如Java、Python等。 - **客户端JavaScript集成**...

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

    在GIS领域,ArcGIS Server是Esri公司推出的一款强大的地理信息系统服务器软件,它允许用户将地理数据和服务发布到网络,以便进行地图查看、数据分析和应用开发。本文将深入探讨如何利用ArcGIS Server自定义tools来...

Global site tag (gtag.js) - Google Analytics