地理信息栅格数据共享工具Deegree简介安装配置教程
- 产品教程
- 2007-11-25
- 143热度
- 0评论
Deegree是德国人开发的一个东东,目的是用来实现地理信息栅格数据Internet共享,本文就简单介绍Deegree的安装特点以及配置文件,最后实现一个简单的影像地图的显示.
Deegree是Java框架下的开源系统,是对OGC WCS(Open Geospatial Consortium Web Coverage Service)规范的实现.
Deegree简介、安装、测试教程:
一、Deegree和WCS简介
对OGC一系列服务规范的实现,就我目前的了解,做的比较好的大概就是GeoServer和Deegree(Lat/Lon).关于WCS,简单地说就是对栅格数据的服务,它允许用户得到连续的栅格图像,这些图像可能包含多个波段,因此,你可以将一幅完整的多波段遥感影像放到你的WCS服务器上用WCS进行Internet共享,而用户利用浏览器,或者其它胖客户端工具通过http请求就可以得到这个影像数据,当然可以对请求参数进行限定,取得其中的一部分(空间的一部分或波段的一部分)数据.
关于Deegree和OGC的详细信息可以参考它们的官方网站
Deegree: http://www.deegree.org/
OGC首页: http://www.opengeospatial.org/
OGC WCS: http://www.opengeospatial.org/standards/wcs
二、Deegree文件系统
目前的最新版本1.1.5, 下载Deegree的WCS1.1.5 demo Full版本(11.7MB):还有一个Demo版本,里面少了一些java包,如果你的机器里面已经有这些包了,可以下demo版本,不过一般就下个Full版本省了很多心思去到处找jar包.
下载后解压得到一个deegreewcs文件夹,其中包含下面这些文件,这里面最重要的就是哪个WEB-INF文件,熟悉javaweb 开发的对这个WEB-INF应该非常熟悉了,它是在Java EE标准web系统架构中定义的文件夹,一个JavaEE系统的主要模块都必须放到这个文件夹内,打开这个文件夹.里面有3个子文件夹和一个web.xml文件如下图所示
三、Deegree部署
Deegree是java写的东东,所以首先当然必须有java虚拟机.如果没有就先下载一个JRE安装,安装Deegree的文档中所述,Deegree是在JDK1.4下开发的,所以应该来说JDK1.4的兼容性最好,不过我在JRE1.5下运行也没有什么问题,所以安装JDK1.5也可以了.
Deegree是Java web应用,但是它没有像GeoServer一样集成Jetty web 服务器,因此,需要自己安装web服务器,这里推荐使用TOMCAT了,不过使用Jetty,JBoss,web sphere等等其它的应该不会有什么区别, 配置步骤也大致一样.如果没有安装TOMCAT,就先下载安装一个吧,反正在Windows底下安装程序又不是什么难事.Deegree开发文档中提到的TOMCAT版本为Tomcat 4.1,实际上我在TOMCAT5.5中应用也能正常,所以当然推荐5.5版本了,配置省事.
JDK和JRE的下载地址: http://java.sun.com/javase/downloads/index.jsp
TOMCAT的下载地址: http://tomcat.apache.org/
关于上述二者的安装和配置成功这里就不说了,要扯就扯到月球上了!(^_^没出太阳系就不错).
第一步:copy整个deegreewcs文件夹(包含上面图片中所有文件的那个文件夹),转到tomcat的安装目录下,可以看到下面目录:
看到圈上红色的webapps文件夹了么?打开它,将上面copy的文件夹粘贴到webapps中.这实际上就是将deegree的java文件部署到tomcat中,在tomcat下只需要将java web应用程序直接copy到webapps文件夹下,重启tomcat,它就自动更新、加载这个应用,所以部署完成.
接下来需要配置deegree让其在tomcat下能够接收http请求并回应请求.你当然可以根据第一张图片中的那个pdf文档一步步做下去,不过如果你对java应用和WCS规范非常陌生,最后可能会出点问题(至于出什么问题那就等你自己去试吧,反正我是试过了,其实只是很小的毛病,看看WCS规范文档就能够改过来).
四、 deegree的配置
1. 数据准备
在%tomcat_home%webapps文件目录下打开deegreewcs,看到两个批处理文件runTileImage.bat和runTileImage2.bat. 这两个程序是切割图片用的.
下面先介绍一点背景资料:OGC规范中并没有强制要求WCS提供服务器端影像的分块处理,但是在OGC规范中有提到影像的分块,他们称之为tile(小瓦片,^_^),这样的分块只是虚拟的分块,并没有具体实施,但deegree为了加快请求响应速度和减少服务器计算负担,预先在服务器端对影像进行了物理分块,这是因为,一般来说,栅格影像服务的数据量会比较大,在提供服务的服务器上,一般将一整幅的影像在一个服务中提供,而消费者(用户)可能并不需要这么多的数据,他们往往只需要其中的一小块,或者一个低分辨率的影像数据,这样在服务器端,临时去计算哪些点是客户端需要的数据点往往使得计算负担非常重.
这样,deegree项目也就开发了相应的分块程序,也就是上面所说的两个批处理程序,这两个批处理的实质是分别调用两个java class类,也就是java的应用程序,使用批处理只是不需要你到windows的控制台下用java命令去执行他们,但是如果你不做任何修改,直接点击这两个批处理文件将不能运行,下面我们修理修理他们:
右键点击runTileImage,选择”编辑”,将会使用win记事本打开它,下面是它的原始内容[NextPage]
java -Xms300m -Xmx1000m -classpath .;.WEB-INFlibdeegree-2003-09-12.jar;.WEB-INFlibjai_codec.jar;.WEB-INFlibjai_core.jar;.WEB-INFlibmlibwrapper_jai.jar TileImageTree
-i "C:/deegreewcs/WEB-INF/data/europe.jpg"
-o "C:/deegreewcs/WEB-INF/data"
-r 0.064,0.032,0.16,0.008
-f jpg
-q 0.95
-k EPSG:4326
pause
现在需要修改它,找到上面那段我用蓝色加粗字体标识的两个字符串,这两个字符串分别代表图片的输入文件和输出文件,也就是说,用这个程序切割的原始图像文件和切割后的文件的上层目录,注意,对于你的每一个应用,提供服务的原始影像文件放在不同的地方,但是用这个程序将生成一个相应的xml配置文件,为了省却很多修改,建议你将自己需要提供服务的影像数据都放到一个地方集中管理,这里我们就推荐使用其默认的目录.
也就是 ”%tomcat_home%webappsdeegreewcsWEB-INFdata” 文件夹,我们可以进去看看其中已经有了一张名字为europe的jpeg图片,如果你有其它的图片也需要提供服务的话,建议在这个文件夹下再建一个文件夹就是了.下面修改其中两个蓝色加粗的字符串为你的图片地址和输出目录,例如在我的机器上要切割上面的那副europe图像,只需要修改为:
-i "H:/Tomcat5_5/webapps/deegreewcs/WEB-INF/data/europe.jpg"
-o "H:/Tomcat5_5/webapps/deegreewcs/WEB-INF/data"
在你自己的机器上,将他们分别填写你自己的图片地址即可,保存.(另一个批处理文件类似修改)
下面补充一下这个批处理文件的其它几个参数的意义:
-r 0.064,0.032,0.16,0.008 //表示需要分别生成空间分辨率为0.064,0.032,0.16和0.008的4种影像
-f jpg //表示输出影像的格式为jpg,如果没有这个参数,默认输出jpg
-q 0.95 //表示生成小幅影像的质量,这个参数只有在选择jpg输出时有效.
-k EPSG:4326 //表示输出的坐标参考系统为EPSG:4326,OGC规范支持WGS:84 和AUTO2 一共3种
接着运行这个批处理,等待N久之后,就可以看到在data文件夹下多了N多的新图片.
注意还生成了一个新的xml文档:gvDesc.xml.这个文档后面要用得到的.
2. 配置deegree
找到WEB-INF下的web.xml文档.用记事本或其它的文本编辑器打开它.找到这么一段
<init-param>
<param-name>capabilities</param-name>
<param-value>file:///C:/deegreewcs/WEB-INF/xml/wcs_capabilities.xml</param-value>
</init-param>
找到其中蓝色加粗的那个字符串,它表示的是描述WCS capabilities的xml文档的地址,修改它为你的地址,这个文件默认就在WEB-INFxml文件夹下,找到它,复制地址栏上面的地址,替换掉上面的字符串,注意,这里用的地址分隔符是斜杠”/”,所以需要修改windows的表示方法,将其中的反斜杠(“”)改为斜杠.
再找到上面提到的这个wcs_capabilities.xml文档,打开它,找到其中这句:
<wcs:GridCoverageLayer descriptorResource="file:///C:/deegreewcs/WEB-INF/data/gvDesc.xml">
将其中蓝色加粗的字符串更改为前面提到的gvDesc.xml的地址即可.保存.
3. 说明
下面这段说明一下前面提到的这3个xml文档的用途,当然如果你不需要其它应用,可以不看了,因为上面的步骤足够让你这个时候就启动tomcat,查看deegree wcs服务的结果了.[NextPage]
1) web.xml
了解java web应用程序开发的人都知道这个文件,因为它是配置java应用的必须文件,它复杂对java servlet进行配置,这里的deegree应用,其实质也就是一个servlet,从这个文件中可以看到这个servlet的名字为deegreewcs,它的java类名称为: org.deegree_impl.enterprise.WCSServlet,它已经打包到lib文件夹下的deegree-2003-09-12.jar包中,可以用winrar打开查看到其中有这个类的class文件.由于这个servlet初始化时需要用到一个参数capablities,因此,在这个xml文档中还配置这个参数,也就是wcs_capabilities.xml文件的URL地址.一般来说,不管是不是添加其它数据服务,这个文档也只需要修改这一处就够了. 当然还有其它一些参数,可以自己看这个xml文档.
2)wcs_capabilities.xml
这个文档是OGC WCS规定的wcs服务能力的描述文档,每个服务提供的服务器都必须能够提供这个文档.关于这个文档的具体描述,在OGC的WCS规范中有详细的规定.下面看看这个文档.
首先看到有一个<wcs:CoverageLayerList>元素,这个元素可以包含许多的子元素,这里,这个文档只包含一个子元素类型为<wcs:GridCoverageLayer>,这个子元素提供对我们前面处理过的那副图片的描述:LayerID=europe,...
也就是说,如果我们还要添加一个影像服务,则首先需要在<wcs:CoverageLayerList>中再添加<wcs:GridCoverageLayer>子元素来描述这幅影像,而这个<wcs:GridCoverageLayer>又有一个属性:descriptionResource,它的值也就是我们在分割影像的同时得到的那个xml文档(默认为gcDesc.xml)的URL地址标识,所以,如果我们添加或修改了相应的影像服务,则这个属性的值也需要相应的修改.
3) gvDesc.xml
这个文档就是使用runTileImage.bat或者runTileImage2.bat生成的xml文档,它描述了生成的小幅影像或不同分辨率影像的信息,在其中关于这些影像的描述方法大致和wcs_capabilities.xml中描述影像的方法一致.由于这个文档中有许多生成的影像的地址,因此,如果我们要将使用那两个批处理得到的文件挪到其它地方,则这个文档中所有出现相关影像地址的地方都需要修改,否则会导致数据搜索服务失败!
五、完成
到这里,应该说大致的步骤和基本原理都已经介绍完了,这时,启动tomcat服务器,等待服务器自动搜索到deegreewcs应用程序并自动加载以后,可以在tomcat的management页面看到已经存在deegreewcs这个应用程序了.此时如果你直接点击那个链接,将出现服务错误信息,原因是deegree没有提供默认的index.html或index.jsp等文件,而tomcat不会自己写服务请求的URL地址,当然就会出错.
请求服务的URL地址需要按照OGC WCS规范来写,这个写法的详细描述还是到规范上找吧,不过这里提供几个try.
1) 请求wcs的capabilities文件: http://127.0.0.1:8080/deegreewcs/wcs?service=WCS&request=GetCapabilities&version=1.0.0
这里第一个请求中version必须指定,且其值应该为0.7.0-1.0.0直接的版本表示法,注意在OGC WCS规范中并没有强制要求这个参数,但是deegree wcs有强制要求.
2) 请求一个前面提到的europe影像的服务.
http://127.0.0.1:8080/deegreewcs/wcs?service=WCS&request=GetCoverage&version=1.0.0&Layer=europe&SRS=EPSG:4326&BBOX=-20,40,40,90&Width=600&Height=400&Format=jpg
得到的将是下面这样一幅地图: