logo资料库

GeoServer3D开发环境配置.docx

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
GeoServer3D开发文档
1、文档简介
2、准备工作
3、GeoServer源码导入eclipse
4、W3DS模块集成到Core中
4.1、修改pom.xml文件
5、完善源码
6、结语
GeoServer3D 开发文档 1、文档简介 本文主要介绍 GeoServer 开发的环境配置,因为主要涉及到 W3DS 模块的集 成与扩展,所以后边针对 W3DS 模块的集成做些介绍。 2、准备工作 1、 下 载 源 码 http://geoserver.org/display/GEOS/GeoServer+2.4.0 目 前 最新最稳定的版本是 2.4.0; 2、 下载工具,JDK,Eclipse,Maven,SVN,这些东东可以去官网下载, 3、GeoServer 源码导入 eclipse 这个具体步骤可以按照源码中 developer_README.txt 文件中的步骤来,比较 费时,因为构建过程中要下载很多 jar 包,需要注意一下几点: 1、 如果你想构建 eclipse 工程可以不用执行 mvn (clean) install 命令(编 译命令),可以直接使用 mvn (clean) eclipse 命令就可以成构建 eclipse 工程,可能会出现很多文件 download 失败,需要多尝试几次; 2、 若是有关于 test 的错误,那么使用 mvn -DskipTests clean eclipse 跳 过 test。这一过程主要是下载 eclipse 要用到的 jar 以及一些 pom 文件 ( 通 常 会 下 载 到 C/ 下 的 某 个 .m 文 件 夹 下 , 像 我 的 : C:\Users\lenovo\.m2\repository,这是 maven 默认的本地仓库位置, 你可以进入 Maven 安装目录下的 conf 子目录中,打开 settings.xml 进行配置修改,默认的本地仓库更改到 D: /.m2/repository 这个目录, d:/.m2/repository); 3、 如果你还遇到其他的问题的话可以自己查一下,构建 eclipse 项目之后 就可导入 eclipse 环境中了,步骤是 file—import—existing project into workplace,接下来选择源码根目录就行了; 4、 Start up Eclipse.Got to: Windows -> Preferences ,In the wondow
that pops up click on Java -> Build Path -> Classpath VariablesOn the Classpath Variables panel, select New Define a new variables called M2_REPO and set it to your local maven repository. (for windows and Settings/username/.m2/repository) C:/Documents it would be 5、 还可能会有字符编码的错误,你自己在源码中自己改一下就行了 6、 运行 web-app 包中的 start 类,就可以启动 GeoServer 服务了,访问 http://localhost:8080/geoserver 4、W3DS 模块集成到 Core 中 如果你需要 W3DS 模块的集成与扩展工作,还需要做以下的配置文件和源码 的修改工作,W3DS 源码的结构有三部分组成:W3DS 模块在 community 中。 core, those modules which GeoServer requires to function and are distributed with the main GeoServer distribution; extension, plug-ins available as separate artifacts from the main distribution; community, experimental or unstable modules which are not part of the release process; 4.1、修改 pom.xml 文件 首先将 W3DS 模块从 community 中移到 GeoServer 根目录内,需要修改四个 pom.xml 文件; 1、 因为需要把 W3DS 模块从 community 中移到 GeoServer 根目录中,所 以 community 包的根目录的 pom.xml 文件做以下修改:该文件夹中的 232 行到 237 行删掉: w3ds w3ds
2、 W3DS 包中的 pom.xml 做修改:文件中第 7 行和第 10 行作如下修改, 红色字体是修改过的。 org.geoserver geoserver 2.4.0 org.geoserver w3ds jar Web 3D Service 3、 Geoserver 根目录中的 pom.xml 文件的 150 行和 1460 行处添加 w3ds 模块: org.geoserver wcs1_1 ${gs.version} org.geoserver wfs ${gs.version} org.geoserver wms ${gs.version} org.geoserver w3ds ${gs.version} org.geoserver gwc
${gs.version} net.sf.json-lib json-lib 。。。。。。。。。。。。。。。。。。。。。。。。。 platform main security wcs wcs1_0 wcs1_1 wfs wms w3ds ows gwc rest restconfig web community extension 4、 Web 包下的子包 app 包中的 pom.xml 的 20 行处添加 w3ds 模块: org.geoserver.web web-core ${project.version}
org.geoserver.web web-wms ${project.version} org.geoserver.web w3ds ${project.version} org.geoserver.web web-gwc ${project.version} 修改完以上 4 处 pom.xml 文件应该再重新构建 eclipse 项目,导入 eclipse 中 发布服务,W3DS 模块就可以集成到 geoserver 框架中,可以发布三维数据,但 是有可能会出现源码中有些文件不完整的情况,需要我们完善。 5、完善源码 源码中 W3DS 包中有可能缺少一个图片文件,还有 web-demo 包中需要完善 一些代码 1、 geoserver-2.3.3-src\geoserver-2.3.3\web\w3ds\src\main\java\org\geoser ver\w3ds\web 该源码路径下有可能缺少一个图片文件 server_3d.png; 2、 web-demo 包 有 两 个 文 件 需 要 完 善 : MapPreviewPage.java 和 MapPreviewPage.html,这两个文件是实现 LayerPreview 功能的 wicket 代码文件,没有完善之前是下边这样的效果:没有可以预览 X3D 数据 格式的功能
3、 MapPreviewPage.html 文件作如下修改:红字为添加内容
     
4、 MapPreviewPage.java 文件作如下修改:红字为添加内容 /* Copyright (c) 2001 - 2013 OpenPlans - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.web.demo; import static org.geoserver.web.demo.PreviewLayerProvider.ALL; import static org.geoserver.web.demo.PreviewLayerProvider.COMMON; import static org.geoserver.web.demo.PreviewLayerProvider.NAME; import static org.geoserver.web.demo.PreviewLayerProvider.TITLE; import static org.geoserver.web.demo.PreviewLayerProvider.TYPE; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.logging.Level; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.link.ExternalLink; import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.repeater.RepeatingView; import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model; import org.geoserver.catalog.LayerInfo; import org.geoserver.ows.util.ResponseUtils; import org.geoserver.w3ds.utilities.X3DInfoExtract; import org.geoserver.web.GeoServerApplication; import org.geoserver.web.GeoServerBasePage; import org.geoserver.web.demo.PreviewLayer.PreviewLayerType; import org.geoserver.web.wicket.GeoServerDataProvider.Property; import org.geoserver.web.wicket.GeoServerTablePanel; import org.geoserver.wfs.WFSGetFeatureOutputFormat; import org.geoserver.wms.GetMapOutputFormat; import org.geotools.geometry.jts.ReferencedEnvelope; /** * Shows a paged list of the available layers and points to previews * in various formats */ @SuppressWarnings("serial") public class MapPreviewPage extends GeoServerBasePage { PreviewLayerProvider provider = new PreviewLayerProvider(); GeoServerTablePanel table; private transient List availableWMSFormats; private transient List availableWFSFormats; private String getW3DSRequest(X3DInfoExtract x3dInfo, PreviewLayer layer, String format) { String textHtmlUrl = null; if (x3dInfo.isTiled()) { crs String layer.layerInfo.getResource().getSRS(); = "&crs=" +
分享到:
收藏