Openlayers加载Geoserver WFS.docx
- 文档编号:30155726
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:13
- 大小:511.43KB
Openlayers加载Geoserver WFS.docx
《Openlayers加载Geoserver WFS.docx》由会员分享,可在线阅读,更多相关《Openlayers加载Geoserver WFS.docx(13页珍藏版)》请在冰豆网上搜索。
Openlayers加载GeoserverWFS
Openlayers加载GeoserverWFS
1、环境说明:
操作系统:
Window764位
GeoServer:
GeoServer2.1.2,端口8090
Openlayers:
OpenLayers-2.12
Tomcat:
apache-tomcat-7.0.22,端口8080
2、数据准备及发布
本文用到的数据为一面状数据,本地shapefile文件(Continents.shp),预览图如下:
2.1、在GeoServer的数据目录新建一目录Continents,把shp文件连同它关联的其它几个文件复制到该目录下;
2.2、打开GeoServer管理页面,用管理员登录:
admin/geoserver;
2.3、新建一个Workspace,命名“mytest”,uri设置为:
“
2.4、添加一个Store,点击“Stores”->“AddnewStore”,
选择“Shapefile”,在新的页面中输入如下信息:
(1)选择Workspace:
设置为新建的“mytest”;
(2)设置DataSourceName:
Continents;
(3)选择Shapefilelocation:
file:
data/Continents/Continents.shp
点击“save”保存。
2.5、图层发布。
上一步点击“save”后,即弹出发布界面,如下图所示:
点击“Publish”按钮,弹出参数设置界面,该界面中主要设置wfs、wms服务相关的一些参数,不作详解,根据实际情况选择设置即可:
点击“Save”按钮,返回“Layers”界面,就可以看到新发布的Layer了:
2.6、图层预览:
点击GeoServer管理页面中“LayerPreview”按钮,找到刚发布的Layer;
点击“OpenLayers”,显示如下:
点击“Selectone”,选择“WFS->GML2”,输出如下错误:
java.lang.NullPointerException
null
出现该错误的原因是Workspace(“mytest”)没有输出到图层的字段信息中,为什么会出现该问题目前还不清楚,要解决该问题可以通过如下方法:
在“Workspaces”页面中,修改“mytest”为其它名称(如mytest2),点击保存,这时会提示一个错误,不管它,保存完后,再到“LayerPreview”页面中查看,这时就可以了,如下图。
如果觉得“mutest2”不喜欢,再改回去也没问题了。
具体原因还要再详细查找。
到此次为止,服务发布完成。
3、在OpenLayers中加载Geoserver发布的WFS。
本人在实现该功能时遇到了两个问题:
(1)关于Openlayers中加载wfs的写法;
(2)Openlayers加载wfs时存在跨域问题。
下面一个一个来说。
3.1写法问题
google、baidu、查看OpenlayersAPI及Example后,得出在Openlayers中加载GeoServerWFS服务的写法如下:
varwfs=newOpenLayers.Layer.Vector("WFS",{
strategies:
[newOpenLayers.Strategy.Fixed()],
projection:
newOpenLayers.Projection("EPSG:
4326"),
protocol:
newOpenLayers.Protocol.WFS({
version:
"1.0.0",
url:
"http:
//localhost:
8090/geoserver/wfs",
featureType:
"Continents",
featurePrefix:
"mytest",
featureNS:
"
srsName:
"EPSG:
4326",
geometryName:
"the_geom"
})
});
下面介绍下几个关键的参数:
url:
指GeoServerwfs服务地址,我安装在本机,端口号为8090;
featureType:
发布的wfs图层名称,如上文所述,本文发布的wfs图层为:
Continents;
featureNS:
GeoServer中workspaceuri,本文中新建的workspace为:
清楚了加载wfs的写法后,发现怎么加载都没反应,后来在IE中调试发现,报“拒绝访问”的错误,XX后得知存在跨域问题。
3.2跨域问题
Openlayers提供了使用代理的方式解决跨域问题,不过要搭建好这个代理环境得花点功夫。
“在OpenLayers中如果要使用代理,那么我们先要改变全局变量OpenLayers.ProxyHost的值,设置成服务器的地址,url则为提供数据的地址,它和服务器不在同一个域中,这实际上是利用服务器进行了中转,因为服务器去跨域取数据要灵活的多<”
下面具体说明在Tomcat下搭建的过程:
(1)获取proxy.cgi文件。
如果你已经下载到了Openlayers包,可以在其eaxmple文件夹下找到该文件,或者可以去网站下载(proxy.cgi);
(2)安装python;
(3)修改tomcat配置。
在Tomcat的配置文件中找到context.xml做如下修改:
;
或者copy该文件至META-INF下做如上修改。
(4)新建Javaweb工程(我的工程名称为openlayers),修改web.xml文件,添加如下内容:
cgi
org.apache.catalina.servlets.CGIServlet
debug
0
cgiPathPrefix
WEB-INF/cgi
executable
C:
/Python26/ArcGIS10.0/python.exe
passShellEnvironment
true
5
default
/
cgi
/cgi/*
上述标注处是要根据实际安装修改的地方。
(5)修改proxy.cgi文件,添加本机GeoServer服务地址。
如下:
将修改好的文件复制到javaweb工程的WEB-INF/cgi(与web.xml文件中的配置对应)文件夹下。
至此代理搭建完成。
启动tomcat服务,在地址栏中输入 http:
//localhost:
8080/openlayers/cgi/proxy.cgi,即可看到Openlayers的主页。
本文最后加载看到的截图如下:
参考文献:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Openlayers加载Geoserver WFS Openlayers 加载 Geoserver