How to make electronic charts

The EPS system requires that charts are scanned in rectangles. Each rectangle covers a certain area specified as an integer number of minutes latitude and an integer number of minutes longitude.

This means that cylinder-projection charts (eg. Mercator) can be used. It is not required that each rectangle are scanned in the same resolution, that each rectangle are scanned from charts of the same scale, or that each rectangle covers the same area.

For example in the demo, the rectangles are 10'x10'.

Charts can be GIF's or JPEG.s. Each rectangle is stored in a file named after the South-West corner of the rectangle, the area it covers and a number, DPD (Dots Per Degree) that describes the quality of the scanned rectangle. I.e.: "55g50N12g40E_10x20q4000.jpg" is a 4000DPD JPEG chart that covers the rectangle 55°50'N 12°40E' to 56°00'N 13°00E'.

The DPD is used when there are multiple charts for the same area. Different charts are used depending on the scale--When zooming out charts with lower DPD are used. I.e. on a 1:70000 chart 1 degree latitude is 1.8 meter or 70 inches. If the chart is scanned at 72 Dot Per Inch, the quality is 62*72 = 5040 DPD. The DPD measure does not have to be very accurate it is just a way to help EPS decide which chart to use.

Hints when scanning

To make EPS perform optimally:


The HTML-files and the .class-files are placed in the same directory, in the rest of this document called EPSDIR

All chart rectangles must be placed in a directory, default 'EPSDIR/charts'.

If EPS is to be used across a network, EPSDIR/charts must contain a file 'index.html' that contains the names of the chart-files. One name per line.

The "Save options" item in the "Save" menu saves these options:

Most of the options are set by entering the new value in the input field and selecting the option in the "Set"-menu.

How to use the EPS system

When the application is started, a window appears. The window can be resized.

On the left is the chart. To the left and below the chart are two scrollbars. At the top 8 are buttons that triggers actions. To the right a number of panels are located. The input field at the top is used for all inputs except position. Positions are entered through the position fields below the input field.

Below the position fields the way-point list is located. A way-point can be activated by clicking on it. Below the way-point list, a list of routes is located. When a route is selected by clicking on it, a list of the way-points in the route appears in the "way-point in route" list. At the bottom the output Area is located.

When clicking with the left mouse-button on the charts, the position is displayed, and the chart cursor is set to this position. The chart cursor is displayed as:

Using the chart

The chart can controlled by the arrow keys or scrollbars and the zoom bar. Even though the area covered by chart rectangles in the chart-directory is probably rather small, the scrollable chart is potentially the size of the earth--It is possible to use areas, for which no scanned charts exist (The Way-point, Route, and track log facilities does not require a chart)

When the bubble of a scrollbar is located at one of the ends, it can be moved to the center of the scrollbar (without scrolling the chart) by clicking on the small triangles at the ends of the scrollbar. In this way it is possible to scroll infinitely.

The zoom-bar allows zooming in and out.

Way-points are shown on the chart as dots with a name. The color of the dots are set in the "Set" menu. Default is red.

Routes are shown as lines. At the center of each leg of a route, the length of the leg is shown. At each way-point in a route the distance covered since start is shown. The color of the lines are set in the "Set" menu. Default is blue.

The track is shown as green lines. the EPS arbitrarily selects certain points shown as squares, between which the average speed is shown. The color of the track are set in the "Set" menu. Default is green.

Chart rectangles are loaded as they become visible (by zooming or scrolling). Therefore the system will be a little slow initially. But charts are cached, so once the charts are loaded, it should work smoothly.

Adding a way-point

A way-point can be added by setting the chart cursor on the chart, typing the name of the way-point into the input field, and clicking the "add cursor WP" button or by typing the name in the input field and the position in the position fields a clicking the "Add Pos WP" Button.. Waypoints are identified by name and position. I.e. it is possible to add waypoints with the same name but different positions. If a way-point is active, the new way-point is inserted after the active way-point. Waypoints are deactivated by pressing the 'c'-key in the waypoint list.

Adding a Route

A route is added by typing the name of the route into the input field and clicking the "add Route" button.

Adding a Way-point to a Route

The route must be activated (by clicking on the route list). The way-point can be added in three ways:

Go to Waypoint

Clicking the "Go to waypoint" button or double-clicking a waypoint in the waypoint list, makes the active waypoint appear at the center of the screen.

Adding a track log position

New track log positions are added with the middle mouse button. The right mouse button starts a new track log. I.e., the next track position is not connected to the previous.

Reading way-points, routes, and track stored in files

The filename is typed into the input field and the "Load Waypoints", "Load Track", or "Load Routes" button is clicked.

If a route file is read that contains a way-point that is not in the way-point list, it is added to the way-point list.

Garlink/WinGPS routes and way-point files should also work. This is the format exported and imported by WinGPS (.SWP and .RWP files). Track files cannot be read or written. But if someone send me a track file, I will implement it.

I will add support for other formats if I get a request with a specification of the format and a sample file.

Saving way-points, routes, and track

Way-points, routes, and track are saved with the "output" menu. They are saved under the name in the "input" field. Unfortunately Netscape does not allow file operations. Therefore output "files" are displayed in the "Output Area" if file operations are not allowed. They can then be saved to a file using cut and paste. On Unix I use "cat > filename" in an xterm.

Initial waypoints, routes, and tracks

When EPS starts, initial waypoints-, routes-, and track- files can be read. The names of these files are set in the "Set" menu. A blank input disables the file.

The initial files are useful if you use eg. the same waypoint file most of the time.

Default are the demo files ("w0.wpt", "r0.rt", and "t0.trk"). To get rid of the demo files choose "All" in the "Delete" menu and then "Options" in the "Save" menu.

Computations and marked waypoints

To compute the distance between two waypoints, mark the first waypoint by selecting it and press the "Mark WP" button. Select the second waypoint and select the "distance" item in the "Compute menu". The result will be displayed in the output area.

The marked waypoint is shown with a "*".

Communicating with GPS unit

Set the port by typing the port name in the input field and select "Port Name" in the "Set" Menu. On Windows platforms ports are named "COM1", "COM2" etc. On Linux, ports are named "/dev/ttyS0", "/dev/ttyS1", etc.

On Windows platforms the Java Communications API must be installed for communication with GPS-unit.

On Linux RXTX must be installed. RXTX can be used with its own API or using the Solaris/Sparc CommAPI. EPS is compiled with JavaComm support, so if you want to use the precompiled EPS with RXTX you need to install the Solaris CommAPI.

You can also compile EPS with the basic RXTX. Then you just have to uncomment the line "import*;" and remove the line "import javax.comm.*;" in the files "" and "".


EPS can read NMEA output from the GPS unit. Select "Display NMEA output" in the file Menu. EPS records positions and show the track. EPS ensures that the current position is always displayed on the screen, but it is possible to zoom and scroll while displaying NMEA output.

The "Track" item in the "Save"-menu can be used to save positions collected from NMEA output.

The GPS unit must be connected, turned on and set to output NMEA (the "Interface" menu on Garmin units).

Dgps IP

Set server host and port in "set" menu. Start "DGPS IP" in the File menu.

The GPS unit must be connected, turned on and set to output RTCM input (the "Interface" menu on Garmin units, use RTCM/NMEA if you also want NMEA output).

The speed must be 4800 baud. RTCM/NMEA is always 4800 baud. See dgps-ip for more info

Garmin Protocol

If the GPS unit supports the Garmin protocol, EPS can up- and download waypoints, tracks, and routes. Use the "File"-menu.

The GPS unit must be connected, turned on and set to GRMN/GRMN in the "Interface" menu on the GPS unit.

The demo chart

Handmade by me. I don't want to get in trouble with the copyright holders, so you won't get the real thing. It is a nautic chart (1:70000) of the northern part of Øresund between Denmark and Sweden. The island Ven is where Thycho Brahe had his observatory, "Uranienburg".

Way-point SVANEM is Svanemøllen harbour. This is where my boat is.

The way-points, routes, and track-files, "w0.wpt", "r0.rt", and "t0.trk", are loaded at start-up. A part of the track file is constructed.


Known Problems

Communication with GPS unit does not work in Netscape on Win32. The reason is that I can not get "Java Communications API" to work with Netscape. If anyone succeeds, please tell me.

Downloading and installing

Download from The EPS SourceForge page The "eps_all.tgz"> distributions (tar,gz) contains source code, classes and demo charts. It is approx. 700KByte. It is a gzip'ed tar file. Can be unpacked with winzip.

The "" distribution (zip) contains source code, classes and demo charts. It is approx. 700KByte. It the same as above, just packed as a zip-file.

The "EPS.jar" distributions contains contains source code, classes and demo charts. It is possible to test a jar distribution by executing: "java -jar EPS.jar -j".

If executed as "java -jar EPS.jar" EPS will look for charts etc in the current directory.

EPS.jar can be unpacket by "jar xf EPS.jar". Then execute is as "java EPS".

Running EPS

JDK: run as "java EPS"

EPS needs at least version 1.1.5 of JDK.

Netscape: load "netscape.html".

This can be used to run EPS across a network. EPS needs at least Netscape 4.5.

If EPS is started from a local file-system (with "Open File" or with a "file:/..." URL) EPS will ask for permission to the file-system. If this is granted, EPS can save Waypoints, Routes, and Tracks to disk.

If EPS is started over a network, Waypoints, Routes, and Tracks cannot be saved.

Netscape cannot communicate with GPS-units.

Other Browsers (MS Internet Explorer 4.0): load "browser.html".

You will not be able to write to disk or communicate with GPS.

Compiling EPS

EPS is compiled. But you can edit the source code and recompile it yourself.

EPS can be compiled with javac (JDK 1.1 or JDK 1.2). Delete all .class files and do "javac".

I did compile it with MS Visual J++ once.

If EPS is to be used from Netscape the file must be compiled with the Netscape classes (java40.jar). I.E add java40.jar to CLASSPATH and compile If Netscape is not used for EPS, it is not necessary to compile

I compile EPS line this (from the Makefile):

export CLASSPATH=.:${HOME}/java/commapi/comm.jar; javac
export CLASSPATH=.:${HOME}/java/java40.jar; javac
The last line is only necessary if EPS must run on Netscape and have access to the file system.


Software tested on Linux/JDK, NT/JDK, Personaljava, Netscape 4.5. Tested with a Garmin GPS 38.

Sharp Zaurus

Eps will run on Sharp Zaurus, a PDA with 240x320 Screensize, running Linux/Qt and Jeode Java-Runtime.

We provide a Installation Package (ipk) in the Downloadarea on for this PDA wich can be installed with Advanced Package Manager, available like many other interesting apps on

Please note: After installing the ipk you have to make /home/QtPalmtop/bin/runeps executable with chmod 777 at the commandline, therefore you will need a terminal installed on your Zaurus.

If you like to use your gps with your Sharp Zaurus (I tested it with a Garmin GPS12), you have to download java-comm-library available at installed in /home/QtPalmtop/java/comm.jar.

EPS is known working fine with Sharp Rom Version 2.38 and 3.10.

Garmin communication code is based on Gpstrans by Carsten Tschach (

Niels Elgaard Larsen