http://www.classicning.com/blog/post/454.html
目标:在浏览器中点击一个地图要素(绝大多数情况下仅限于多边形)立刻得到该要素的属性信息。在Web端获得要素的信息通常情况下有两种方法可以使用,一是WMS的GetFeatureInfo,另一个是WFS的GetFeature。
事实上WMS不仅仅可以用GetMap请求获得地图,还可以用GetFeatureInfo请求来直接获取Feature的属性。尽管在OGC WMS1.3.0的标准规范中,GetFeatureInfo是一个Optional的功能,不过GeoServer还是实现了这项功能。下面是GeoServer例子中用OpenLayers获得属性信息的方法:
imap.events.register('click',imap,function(e){
var url = imap.layers[0].getFullRequestString({
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: imap.getExtent().toBBOX(),
X: e.xy.x,
Y: e.xy.y,
INFO_FORMAT: 'text/plain',
QUERY_LAYERS: imap.layers[0].params.LAYERS,
FEATURE_COUNT: 50,
layers: 'winter:constructions',
styles: '',
srs: 'EPSG:4326',
WIDTH: imap.size.w,
HEIGHT: imap.size.h},
iwmsurl //my wms url
);
OpenLayers.loadURL(url, '', this, showFeatureInfo, showFeatureInfo);
});
其中imap是OpenLayers的Map对象实例。向服务器发送一个GetFeatureInfo请求,只需传入当前Web地图中的象素坐标x,y就可以让GeoServer找到点击的空间对象,这是WMS GetFeatureInfo的最大特点。GeoServer支持多种格式的结果输出,这里选择纯文本后可以用正则表达式进行匹配,取出我们真正想要的那些属性信息。
WFS的GetFeature比较容易理解,在我的印象中WFS就是用来做这类事情的。不过我比较担心的是它的效率问题。用WFS进行属性的查询:首先我们要构建一个Filter,这个Filter中需要创建一个点击点的GML对象,在通过空间位置关系运算符查找到我们点击的多边形,用GML返回多边形的属性值。获得点击点的空间坐标已经可以有OpenLayers的getLonLatFromPixel方法实现。
现在还不知道WMS的要素查找是怎样实现的,所以不好判断两个方法究竟谁的效率高。
分享到:
相关推荐
而设置图层样式的两种方法是:通过设置SuperMap.Feature.Vector的样式Style属性获得样式,或者直接设置图层对象的style对象。例如,创建一个带有样式的矢量图层实例,可以直接在图层创建时指定style属性: ```...
3. 当今流行的技术研发模式是C/S(Client-Server)和B/S(Browser-Server)两种体系结构来实现的。 4. Web应用中的每一次信息交换都要涉及到服务器和客户端两个层面。 5. HTML文档的开头和结束元素为<html></html>...
2. **DescribeFeatureType**:用于获取指定要素类型的详细结构和属性信息。 3. **GetFeature**:这是WFS中最常用的请求之一,用于检索地理空间特征。可以通过设置参数来限定返回的数据集,例如限制查询范围、过滤...
VRML是一种解释执行的文本程序,使用节点(Node)和路由(Route)这两个基本要素来构成虚拟世界场景。节点是场景中的基本单位,它可以是几何形状、光源、视点等,而路由则定义了节点之间的动态交互关系。VRML场景...
通过`request.getCookies()`方法获取客户端发送的所有Cookie对象。 3. **隐藏表单域**:在HTML表单中添加隐藏字段,用于保存会话数据。 4. **URL重写**:通过在URL后面添加参数来传递会话数据。 - **内部跳转与...
10. JSP开发网站的两种模式分为JSP+JavaBean和JSP+JavaBean+Servlet。 11. 假设有一个JavaScript函数为show(),如果要求在页面加载时就执行,最好使用标记的onload事件。 12. 在Tomcat服务器中部署Web应用程序时,...
11. **WfsClient**: Web要素服务客户端,用于与WFS服务器进行交互。 ### 地图用户界面组件 1. **AreaStyleDlg**: 区域样式对话框,用于设置区域样式的属性。 2. **CloseTableDlg**: 关闭表格对话框,用于关闭...
这两个属性分别表示窗体客户端区域的高度和宽度,不包括边框和标题栏。了解并正确使用它们,可以精确控制窗体内部元素的布局和尺寸。 #### 8. Color属性 Color属性用于设置窗体的背景颜色,Delphi提供了丰富的预定...
开发者还需要掌握如何对要素进行缓冲区分析,如何获取要素的空间坐标信息并在地图上进行闪烁显示,以及如何获取和更新要素的图形参数。 6. 实现圆裁剪、多边形裁剪、拓扑分析、路径分析 裁剪功能是指在特定条件下...
房屋信息包括房屋获取隶属宗地、房屋编号、房屋结构与层数、房屋属性更新等信息。 土地利用要素是指对土地利用信息的编辑和检查。土地利用信息包括土地利用类型、土地利用状态、土地利用面积等信息。 标准库检查 ...
可以通过以下四种方式获取: - **方式一**:通过`GenericServlet`的`getServletContext()`方法。 - **方式二**:通过`ServletConfig`的`getServletContext()`方法。 - **方式三**:通过`HttpSession`的`...
2. 倾斜模型成果数据:在建模完成后,可以得到两种成果数据——单体化模型和非单体化模型(倾斜模型)。单体化模型适用于超图三维场景中的应用,而非单体化模型则采用自动化的方式生产,并能够提供更为丰富的三维...
`<jsp:getProperty>`用于获取JavaBean的属性值,而`<jsp:setProperty>`用于设置JavaBean的属性值。通过这些标签,开发者可以轻松地在JSP页面中管理和操作JavaBean实例的属性。 以上介绍的JSP基础语法涵盖了JSP页面...
FTP有两种模式:主动(PORT)模式和被动(PASV)模式,其中被动模式在防火墙或NAT环境下更常见。 2. **下载文件并读取内容**:在FTP连接建立后,可以使用`GetResponse`方法获取响应,然后通过`FtpWebResponse....
表单提交通常有两种方式:GET和POST。GET方式通常用于简单的查询操作,如搜索功能;而POST方式则用于数据提交操作,如登录或注册等。 ```html 项目名/ttt/wwww"> 提交"/> ``` #### 6. URL重写 URL重写主要...
- **知识点**:两种主流的应用开发结构。 - **详细说明**:C/S(Client/Server)结构指的是客户端/服务器架构,而B/S(Browser/Server)结构则是基于浏览器/服务器架构。在现代Web应用开发中,B/S结构因其易于部署和...
- SessionBean:用于管理会话级别的业务逻辑,分为无状态(Stateless)和有状态(Stateful)两种。 - EntityBean:用于表示持久化数据,可以映射到数据库表。 3. **StatefulBean与StatelessBean的区别** - ...