2009年5月14日星期四

ArcGIS Server Java ADF 案例教程 25

二 几何对象查询

在上一章的QueryTask中也有对几何对象的查询,你可以回忆一下那个Task面板中“选择”那个Tool。这个Tool会在Map中绘制一个多边形,然后ADF根据这个多边形查询位于多边形内的所有要素。

几何对象的查询主要使用IdentifyCriteria对象,下面的代码实现了这样一个根据多边形查询要素的功能:
WebContext webContext = event.getWebContext();
WebGeometry webGeometry = (WebPolygon) event.getWebGeometry().toMapGeometry(webContext.getWebMap());

WebQuery webQuery = (WebQuery) webContext.getAttribute("query");
List
layers = webQuery.getQueryLayers();
List
queryLayers = new ArrayList();
for (WebLayerInfo layer : layers)
{
if (layer.getName().equals("World Cities"))
{
queryLayers.add(layer);
break;
}
}

IdentifyCriteria identifyCriteria = new IdentifyCriteria();
identifyCriteria.setWebGeometry(webGeometry);

List
listQueryResult = webQuery.query(identifyCriteria, queryLayers);

在这个查询过程中,首先从MapEvent事件中获得从客户端传来的WebGeometry对象(这里是用户在客户端的Map中画的多边形),这个对象是基于客户端坐标的,因此需要转化成地图坐标。由于我们只想查“World Cities”这个图层上的要素,因此下面又构造了一个queryLayers,将我们想要查询的图层挑选了出来。在此之后,我们就可以使用IdentifyCriteria对象,将ADF转化成地图坐标的WebGeometry对象作为它的参数,进行查询得到结果。

没有评论: