首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> GIS 专区 -> 文章内容 退出登录 用户管理
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· Mapbasic参考手册索...
· MapX应用开发中文讲...
相关文章
· ArcGIS在菜单中调用...
· [图文] Server Java开发--B...
· ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server Java...
· [图文] ArcGIS Server Java...
· ArcGIS Server Java...
· [图文] ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server JAVA...
ArcGIS Server Java讲座-空间查询和高亮显示的实现
作者:不详  来源:vscodes.com整理  发布时间:2007-6-29 15:28:36  发布人:Polaris

减小字体 增大字体

ESRIJAVA ADF中做了很多的工作,其中很重要的一个部分是WebQueryWebQuery用来对ArcGISServerArcIMS进行查询,然后在ADF这一端对地图进行渲染。比如说高亮显示,用图片进行渲染等等。
我们来看一个简单的选中,并把选中结果进行高亮显示的开发过程。

事实上选中可以用两种方法,第一种是空间选择,第二种是文本查询,这两种选中都可以。ESRI也提供了进行这两种查询的两个类,这两个类都继承自同一个接口,我们来看一下:
这个类是IdentifyCriteria, TextCriteria,接口是QueryCriteriaQueryCriteria可以设置一些比如最大返回记录,是否返回记录的详细信息等设置。如名所示,IdentifyCriteria用来对数据进行空间查询,我们来看一下,如何使用这个类:

  

IdentifyCriteria ic = new IdentifyCriteria(geom);

   geom是一个WebGeometry类的实例,它可以从客户端触发的MapEvent类中得到。

  创建了这个IdentifyCriteria之后,就可以进行查询了,查询是由WebQuery来完成的,所以先要得到WebQuery


WebQuery query = (WebQuery) context.getAttribute("query");

  大家打开faces-config.xmlmapContext里面由没有query,如果有,用上面的代码就可以得到WebQuery

  得到了WebQuery,就可以大干一场了,可以用下面的办法进行空间查询:


  List

results=query.query(ic,lyrList);

ic就是IdentifyCriterialyrList是一个查询目标层的列表,目标层可以是一个,也可以是多个,比如可以用下面的方法得到所有可以查到的图层:



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;



  }

   当然,如果你不想查所有的图层,也可以让用户进行选择,选择哪个需要查询的图层。

  现在来说说查询返回的结果,我们可以看到结果是一个ListList里面是什么?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 ServerArcIMS都同样适用,Enjoy

End of《ArcGIS Server Java讲座-空间查询和高亮显示的实现》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“ArcGIS Server Java讲座-空间查询和高亮显示的实现”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.