2009年5月8日星期五

ArcGIS Server Java ADF 案例教程 24

第六章 查询及结果

对空间信息进行查询是GIS中很基本且很常用的功能,在这一章中,我们主要看在ADF中如何进行查询、查询出结果以后怎样返回客户端。另外,在这里也先预告下,在下一章我们还会讲查询到的这些结果怎样在Map中表现出来。

一 文本查询

在上一章QueryTask的query方法中我们已经用到了文本查询的功能,你可以回忆一下,在这个方法中我们根据Task面板中文本框的内容,对图层进行了查询,用到的就是keyWord这个字符串变量。下面我们来详细说一下文本查询的过程。

在ADF中负责进行文本查询的是WebQuery对象,需要用到查询功能的ADF应用都需要在配置文件中加上了这个对象:

当我们需要使用查询功能的时候,首先第一步就是获得这个WebQuery对象,当然,通常都是先获得WebContext对象,再查找它的attribute来获得WebQuery对象:
WebQuery webQuery = (WebQuery) webContext.getAttribute("query");

通过这个WebQuery对象我们就可以开始进行查询了,WebQuery最重要的方法就是query方法,让我们先看一下query方法的原型:

这个query方法主要有两个参数:criteria参数表示查询条件,这是一个实现了QueryCriteria 接口的对象,实现这个接口的类有三种:IdentifyCriteria, PredefinedQueryCriteria, TextCriteria,分别对应不同的查询类型,在这里我们将要用到TextCriteria这个类;query方法的另外一个参数queryLayers表示需要进行查询的图层,一个服务中可能有多个图层,这个参数可以限制查询的范围。

上面说到进行查询需要一个实现了QueryCriteria接口的对象作为查询条件,这里我们需要查询文本,所以需要使用TextCriteria,这是一个专为文本查询设计的类。下面的代码定义了一个TextCriteria对象,通过这个对象定义了一些查询条件和限制,最后通过WebQuery对象的query方法来得到查询结果:

这是一个很简单的查询,事实上TextCriteria还可以设置很多限制和条件,比如限制查询字段、是否模糊查询、设置返回字段、设置LayerDefinition (包括字段别名、符号渲染方式)等等。最后,查询后会得到一个QueryResult的集合,关于这个QueryResult的特点和用法,我们在后面会有一个小节专门说明。

4 条评论:

匿名 说...

更新了,谢谢牛魔大哥!

匿名 说...

好贴,希望看到有关分页查询方面的教程,谢谢!

匿名 说...

牛魔王,加快速度!加油!

netfish 说...

牛魔王大哥,加油!我一直在关注你的blog。