You are here

Starting to play with Eclipse RCP - 2 - installing uDig

logoNow that I was able to create a first RCP (empty) application, let's try to understand how uDig is architectured. What is uDig? A GIS (Geographic Information System) framework for Eclipse. uDig provides low-level GIS functions I need to implement the solution I have in mind: display of cartographic data, layer handling, map projection handling, etc.

I first tried to use the same Eclipse Kepler environment that I previously installed. But I didn't succeed. So I went back to the supported versions, presented in uDig Quickstart guide. I'll try the merge with Kepler when I'm comfortable enough with RCP...

Installation

Following Quickstart guide instructions, I downloaded and used following files for installation:

  • udig-1.4.0-sdk.zip
  • eclipse-3.7.2-delta-pack.zip
  • eclipse-modeling-indigo-SR2-linux-gtk.tar.gz
  • dropins-3.7.2.zip
  • jre1.6.0_25.lin32_jai_gdal_ecw.tar.gz

At first uDig run, following messages are displayed:

Dec 13, 2013 9:59:49 PM org.geotools.referencing.factory.PropertyAuthorityFactory <init>
WARNING: Axis elements found in a wkt definition, the force longitude first axis order hint might not be respected:
PROJCS["Monte Mario / Italy zone 1 - Sicily/Accuracy 3-4m", GEOGCS["Monte Mario", DATUM["Monte Mario", SPHEROID["International 1924", 6378388.0, 297.0, AUTHORITY["EPSG","7022"]], TOWGS84[-50.2,-50.4,84.8,-0.690,-2.012,0.459,-28.08], AUTHORITY["EPSG","6265"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4265"]], PROJECTION["Transverse_Mercator"], PARAMETER["central_meridian", 9.0], PARAMETER["latitude_of_origin", 0.0], PARAMETER["scale_factor", 0.9996], PARAMETER["false_easting", 1500000.0], PARAMETER["false_northing", 0.0], UNIT["m", 1.0], AXIS["Easting", EAST], AXIS["Northing", NORTH], AUTHORITY["EPSG","30031002"]]
!SESSION 2013-12-13 21:59:44.993 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_25
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
Framework arguments:  -product net.refractions.udig.product
Command-line arguments:  -product net.refractions.udig.product -data /home/pascalb/workspaceUDig/../runtime-udig.product -dev file:/home/pascalb/workspaceUDig/.metadata/.plugins/org.eclipse.pde.core/udig.product/dev.properties -os linux -ws gtk -arch x86 -consoleLog

!ENTRY net.refractions.udig.ui 1 0 2013-12-13 21:59:52.096
!MESSAGE net.refractions.udig.ui.WorkbenchConfiguration "net.refractions.udig.internal.ui.UDIGWorkbenchConfiguration" specified but no valid extension found.
Please check that the extension exists and that it is valid.

!ENTRY net.refractions.udig.ui 1 0 2013-12-13 21:59:52.122
!MESSAGE net.refractions.udig.ui.MenuBuilder "net.refractions.udig.ui.uDigMenuBuilder" specified but no valid extension found.
Please check that the extension exists and that it is valid.

!ENTRY net.refractions.udig.catalog 4 0 2013-12-13 21:59:52.735
!MESSAGE Restoring Local Catalog

!ENTRY org.eclipse.ui.intro 4 0 2013-12-13 21:59:53.565
!MESSAGE Could not load SWT style: css/shared.css
!STACK 0
java.net.MalformedURLException: no protocol: css/shared.css
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at java.net.URL.<init>(Unknown Source)
	at org.eclipse.ui.internal.intro.impl.swt.SharedStyleManager.load(SharedStyleManager.java:66)
	at org.eclipse.ui.internal.intro.impl.swt.SharedStyleManager.<init>(SharedStyleManager.java:58)
	at org.eclipse.ui.internal.intro.impl.presentations.FormIntroPartImplementation.<init>(FormIntroPartImplementation.java:94)
	at org.eclipse.ui.internal.intro.impl.model.IntroPartPresentation.createPartControl(IntroPartPresentation.java:257)
	at org.eclipse.ui.intro.config.CustomizableIntroPart.createPartControl(CustomizableIntroPart.java:204)
	at org.eclipse.ui.internal.ViewIntroAdapterPart.createPartControl(ViewIntroAdapterPart.java:99)
	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375)
	at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
	at org.eclipse.ui.internal.Perspective.showView(Perspective.java:2245)
	at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1145)
	at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3921)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3918)
	at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3894)
	at org.eclipse.ui.internal.WorkbenchIntroManager.createIntro(WorkbenchIntroManager.java:173)
	at org.eclipse.ui.internal.WorkbenchIntroManager.showIntro(WorkbenchIntroManager.java:120)
	at org.eclipse.ui.application.WorkbenchWindowAdvisor.openIntro(WorkbenchWindowAdvisor.java:209)
	at org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow.java:817)
	at org.eclipse.ui.internal.Workbench$24.runWithException(Workbench.java:1243)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
	at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at net.refractions.udig.internal.ui.UDIGApplication.start(UDIGApplication.java:132)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	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:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

But uDig starts OK.

Maps

I download a shapefile zip file from CloudMade. To add corresponding layers to uDig, after having extracted the contents of the downloaded archive:

  • Layer > Add... > Files
  • select one of the displayed shape files
  • do this for every layer you want to display
  • to label cartographic objects (streets, points of interest, etc.), right-click on corresponding layer, in Layers view, and select Change Style...
  • in Style Properties area, click on Labels tab. Check enable/disable labelling, and select a label (in my case: NAME, for most if not all layers).

Now, we have a working GIS that we can tailor to suit our needs...

Packaging

Right-click on udig.product and select Export... > Plug-in Development > Eclipse product. In next window, set Root directory to udig, and set Destination Directory. Click on Finish.

This creates a udig directory into the destination directory you selected. Inside this directory, double-clicking on udig_internal returns an error message:

JVM terminated. Exit code=13
/usr/bin/java
-Xmx386M
-Dosgi.parentClassloader=ext
-Dorg.eclipse.emf.ecore.plugin.EcorePlugin.doNotLoadResourcesPlugin=true
-XX:MaxPermSize=256m
-jar /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
-os linux
-ws gtk
-arch x86
-showsplash
-launcher /home/pascalb/Temp/udig/udig_internal
-name Udig_internal
--launcher.library /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.100.v20110505/eclipse_1407.so
-startup /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.overrideVmargs
-exitdata 218012
-vm /usr/bin/java
-vmargs
-Xmx386M
-Dosgi.parentClassloader=ext
-Dorg.eclipse.emf.ecore.plugin.EcorePlugin.doNotLoadResourcesPlugin=true
-XX:MaxPermSize=256m
-jar /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar 

That's more or less the error message I got when I tried to run uDig using Kepler...

For now, I copy the jre directory downloaded from uDig web site to the udig directory, and try again. This time, it works. 

The size of the udig tree hierarchy is 406 MB.