2008年9月1日星期一

使用GeoServer发布ArcSDE 9.3数据

【环境】GeoServer 1.7.0 RC2,ArcSDE 9.3
【先决条件】安装ArcSDE SDK (java)

对于GeoServer 1.7以前的版本,官方文档支持ArcSDE9.2 sp2及以前版本,但我尝试连接9.3的SDE失败。GeoServer 1.7采用的是GeoTools 2.5,与之前的版本不同,因此我又尝试了这个版本+最新的SDE SDK,发布服务成功。


1.安装GeoServer、GeoServer ArcSDE 扩展及其依赖项

下载GeoServer:http://geoserver.org/display/GEOS/GeoServer+1.7.0-RC2,该页面也包含了ArcSDE Extension的下载链接。

首先安装GeoServer,安装完成以后,将ArcSDE Extension压缩包中的所有文件解压缩到GeoServer的lib目录:%GeoServer 1.7.0-RC2%\webapps\geoserver\WEB-INF\lib。

由于ArcSDE扩展依赖ArcSDE SDK,因此还需要将%ArcGIS%\ArcSDE\lib下的所有jar包复制到GeoServer的lib目录。

通过开始菜单启动GeoServer。


2.配置GeoServer连接ArcSDE

通过http://localhost:8080/geoserver 访问GeoServer Administrator。

首先进入“配置-数据-名称空间 ”,新建自己的名称空间,完成后点击左侧的“保存”。


进入“配置-数据-数据库”,点击“新建”,在这里需要新建一个SDE数据库连接。


进入“配置-数据-FeatureTypes”,点击“新建”,在这里通过一个SDE图层来发布一个FeatureType。这里发布了一个图层,在GeoServer中命名为“bj_road”。完成后点击左侧的“保存”、“应用”。


打开http://localhost:8080/geoserver/mapPreview.do,查看当前发布的SDE图层,选择合适的方式预览。下图是上面发布的bj_road的SVG预览。



3.获得kml服务

GeoServer的kml服务地址如下:http://localhost:8080/geoserver/wms/kml_reflect?layers=<名称空间>:<图层别名>,比如上面发布的bj_road,它的kml地址就是http://localhost:8080/geoserver/wms/kml_reflect?layers=wuyf:bj_road,将这个地址添加到Google Earth或者其它支持kml的客户端就可以对SDE图层数据进行查看了。

3 条评论:

匿名 说...

你好,我是一个GIS初学者,看了你的文章,试着装了一下,发现关于你说的:
----“需要将%ArcGIS%\ArcSDE\lib下的所有jar包复制到GeoServer的lib目录”----
可我的%ArcGIS%\ArcSDE\下根本没有lib文件夹,请问是怎么回事,是不是少装了什么东西?
希望得到您的帮助,my Email:zhaoqh305@gmail.com

牛魔王 说...

因为你没有装ArcSDE SDK

匿名 说...

哦,谢谢,知道了。