ol+天地图+geoserver_openlayers解析吉奥天地图wfs服务

本文介绍了如何使用OpenLayers通过GET和POST方式查询天地图的WFS服务,包括FEATUREID和BBOX查询。还提到了WFS服务的基础知识,如GeoServer对WFS的支持以及WFS1.0和1.1的区别,并展示了GetFeature操作的示例。

//使用FEATUREID查询

new OpenLayers.Request.GET(

{

url :

"http://search.tianditu.com/wfs?request=GetFeature",

params: {

typeName: "DOMAIN_POI_NEW",

FEATUREID: "DOMAIN_POI_NEW.6649356"

},

callback : handler

});

//使用BBOX查询

new

OpenLayers.Request.GET( {

url :

"http://search.tianditu.com/wfs?request=GetFeature",

params: {

typeName: "DOMAIN_POI_NEW",

BBOX: "105.99,29.99,106,30" //map.getExtent().toBBOX()

},

callback : handler

});

说明:

url WFS服务器地址,必须加上?request=GetFeature

typeName 图层名称

FEATUREID WFS的图元ID,采用标准格式: [图层名].[OID编号]

BBOX 指定区域查询,注意不要设置过大,否则浏览器可能失去响应。

通过POST方式访问“天地图”WFS服务,可以使用OpenLayers.Request.POST类,示例代码如下:

var

xmlPara = ""

+ "

+ "xmlns:wfs='http://www.opengis.net/wfs' "

+ "xmlns:gml='http://www.opengis.net/gml' "

+ "xmlns:ogc='http://www.opengis.net/ogc' "

+

"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "

+ "xsi:schemaLocation='http://www.opengis.net/wfs

http://schemas.opengis.net/wfs/1.0.0/wfs.xsd'>"

+ ""

+ ""

+ ""

+ "STANDARDNAME"

+ "*解放碑*"

+ ""

+ "";

var request

= OpenLayers.Request.POST( {

url : "http://search.tianditu.com/wfs?",

data : xmlPara,

callback : handler

});

};

说明:

url WFS服务器地址

data WFS请求正文,返回的GML由回调函数handler处理

handler负责处理服务端返回的GML数据,也就是矢量化的地图数据,根据应用需求编写代码,获取feature的通用代码如下:

var g = new OpenLayers.Format.GML();

var features = g.read(req.responseText);

for ( var i = 0; i < features.length; ++i) {

var feature =

features[i];

var geometry =

feature.geometry;

var attributes =

feature.attributes;

}

定义过滤条件时请使用STANDARDNAME字段,不要使用DOMAINNAME字段,前者应该有索引支持,而后者没有,查询速度差别很大。

经过测试,typeName="DOMAIN_POI_NEW"和typeName="iso19112:SI_Gazetteer"都能返回结果。由于缺少官方文档说明,不知道这两个图层有何区别。

尝试使用OpenLayers.Protocol.WFS无法访问“天地图”WFS服务,服务器返回:

请求参数[REQUEST]的值为空或不正确。

提醒:

使用POST查询时,页面文件或代码文件务必保存为utf-8编码,如果使用gbk、gb2312编码,汉字地名会变成乱码,导致javascript代码错误。

WFS简介:

WFS基础:

GeoServer支持OGC(开放地理信息联盟)规范的Web Feature

Service(WFS)服务。WFS服务目前有两个版本1.0和1.1。通过WFS服务可以通过网络获得原始的矢量数据,使得从客户端获取地图的原始数据结构和数据成为可能。WFS的高级应用还包括修改和锁定数据。

GeoServer全面实现了WFS 1

.0和1.1两个版本。包括一些基本操作:GetCapability,DescrptionFeatureType,GetFeature.

WFS1.0和WFS1.1的不同点:

WFS.1.1默认得到GML3,WFS1.0默认得到GML2

GML3与GML2在描述几何图形时存在细微差别。

1. 指定空间坐标系写法不同

2. 获得的坐标顺序不同。

WFS 1.1.0 request = latitude/longitude (y/x)

WFS 1.0.0 request = longitude/latitude (x/y)

WFS 矢量参数:

GeoServer提供了一组用户参数。

CQL 过滤器

Reprojection

XML request validation

GetCapability namespace filter

WFS操作

操作 描述

GetCapability 获得服务列表,同时检查WFS操作和参数

DescriptionFeatureType 获得指定数据集的信息和属性

GetFeature 获得图形和属性的实际数据

LockFeature 在编辑时阻止对该组件类型的访问

Transaction 编辑已有的组件类型,创建、修改、删除

GetGMLObject 1.1.0支持。

GetFeature

GetFeature 操作请求实际的空间数据。与其他操作相比更复杂、强大。

最简单GetFeature命令是一个没有参数的。

http://localhost:8080/geoserver/wfs?

service=wfs&

version=1.1.0&

request=GetFeature&

typeName=namespace:featureType

请求指定FID的feature

http://localhost:8080/geoserver/wfs?

service=wfs&

version=1.1.0&

request=GetFeature&

typeName=namespace:featureType&

featureID = feature

限制返回组件数量

http://localhost:8080/geoserver/wfs?

service=wfs&

version=1.1.0&

request=GetFeature&

typeName=namespace:featureType

maxFeature=N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值