基于udig(开源GIS软件)二次开发(1)


 很早时候就想基于GIS写一点东西,前面基于UDIG做过不短时间的二次开发。当前也有geoserver+openlayers的一些开发经验。未来一段时间每天一个文章好好写一下关于GIS或者RCP的一些东西,刚好UDIG就是基于GIS+RCP的产品。OK,话不多说我们先看看UDIG是个什么东西,大概接下来几天想讲讲UDIG。

百度百科中对udig的讲解是:

http://baike.baidu.com/view/3049420.htm

uDig是一个 open source (EPL and BSD) 桌面应用程序框架,构建在Eclipse RCP和GeoTools(一个开源的Java GIS工具包)上的桌面GIS(地理信息系统) ;是一款开源桌面GIS软件,基于Java和Eclipse平台,可以进行shp格式地图文件的编辑和查看;是一个开源空间数据查看器/编辑器,对OpenGIS标准,关于互联网GIS、网络地图服务器和网络功能服务器有特别的加强。uDig提供一个一般的java平台来用开源组件建设空间应用。

udig的官网地址为:

http://udig.refractions.net/

官网解释为:

A GIS Framework for Eclipse

uDig is an open source (EPL and BSD) desktop application framework, built with Eclipse Rich Client (RCP) technology.

  • uDig can be used as a stand-alone application.
  • uDig can be extended with RCP “plug-ins”.
  • uDig can be used as a plug-in in an existing RCP application.

翻译大概为:一个基于eclipse的gis框架,

udig是一个开元的桌面应用框架,构建于eclipse RCP产品。

具体的定义和功能大家可以看看官网的定义。由于我做udig二次开发的时候是基于udig1.2的版本,目前官网已经更新到了1.4.所以开发中我可能还是用的1.2的框架,但各个主要功能都差不多。

今天主要的工作是让我们下载udig的插件集合或者源码在本地跑起来。

udig 1.4SDK 是基于eclipse 3.7 开发的,如果想保持一切SDK的吻合性,开发中可以下载3.7的eclipse。我这里用的是4.2的eclipse所以才会出现后来的一个报错。

1。  下载udig的SDK,下载地址 :http://udig.refractions.net/download/ 如果只是想使用udig或者看看udig是什么东西,可以下载安装版或者zip版。udig是基于RCP开发的产品。所以使用习惯上和我们的eclipse保持一致。我们下载SDK版本,因为我们要基于udig做一次二次应用。

趁着现在正在下载SDK,我们乱扯一下。UDIG目前可以对多个数据源的信息进行展示,常见的我们的wms服务、shp文件、postgis等都会支持.另外对于SHP(我在开发中主要用到SHP,通过geotools生成shp然后加载到udig里)支持灰常强大,样式、编辑等等很方便。

我们在udig中常用到的几个视图我一会等SDK下载好了给大家截图说明一下。

2.下载完成后,将 udig-1.4.0-sdk.zip 解压到任意目录。打开eclipse(推荐使用RCP /RAP开发版的eclipse),打开后配置一下target。

2.1: window-->preferences.

2.2 在右侧点击add新加一个target或者在当期target中进行添加我们的udig SDK,因为我的这个eclipse目前只是用来做UDIG二次开发,所以我选择在当前target中进行编辑。

当前显示我们的eclipse中自带的查件有600多个。我们选择add 增加我们的udig的SDK

这里我们将SDK进行了解压,选择目录,next后

点击 finish后我们的SDK挂载完成。

2.3 一切完成后,我们可以看到我们的plugins-ins视图中多了很多的插件。

2.4 在plugin-ins视图中我们找到一个 net.refractios.udig这个插件,这个插件就是UDIG这个项目的启动插件,product文件也在这个插件中。在这个插件上我们右键--》import as 选择source 或者bin都可以,完成后,我们切换到 package explorer ,可以看到net.refrations.udig  这个插件已经在这里,我们点开会发现udig.product 文件(这个文件的含义以后我会在RCP的帖子里说明)。点开product文件。

我们点击 lanunch an eclipse application 在eclipse应用中启动UDIG。

2.4 启动后如果正常那一切OK,但我这边启动后我们发现报错了,提示

java.lang.RuntimeException: No application id has been found.
 at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
 at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
 at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
 at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

还有一堆巴拉巴拉的日志说明 缺失插件(!MESSAGE Missing imported package。。。。。)

我们找一下是否哪些插件有异常,因为UDIG是基于feature管理,因此打开
 



 dependencies后发现只有两个feature,理论上来说语言包插件是不会出现多大问题,我们点开第一个freature,



 这我们发现UDIG引用的RCP插件版本为3.7,我当前的环境是4.2因此是插件版本的问题。反回来我们在udig.product 中补一个4.2的RCP feature即可。

补后启动:OK!



 

好了,我们在插件模式下正常启动了UDIG,未来的博客里我会先介绍一下UDIG的一个简单使用。

PS:大西安这么热的天竟然还会感冒,我算不算是奇葩男。。。。。

猜你喜欢

转载自jjxliu306.iteye.com/blog/1914382