How I Make Maps for my Newton

I use an Apple Newton. I have for years. And although I am slowly moving from the Newton to a Nokia Internet Tablet, there are still times I use my Newton and still some things it does better than anything else I have found. But that is a topic for another posting. In this posting I want to explain how I make maps for use with my Garmin Fortrex 101 GPS and GPSMap Lite for the Newton. Also, this tutorial will be for making maps on a PC. Apologies to my Mac friends but I have just never made a map on my Mac.

The first decision is to decide are we making a road map or a wilderness-hiking map. Both follow the same basic principles but there is a difference in the map source. For Road maps I use maps captured from MS MapPoint. I have also used Google mapping. For hiking maps I generally use satellite photos from Google Earth. I did download a special mapping version of AdobeReader and you can get pdf versions of most US topographical maps from the US geological survey web site. But I found the detail in the satellite photos better for hiking purposes. So for this tutorial we will assume we are making a hiking map using Google Earth.

On your screen get a satellite image of the area you want to make the map for. Do a screen capture and load the image into your favorite image editing software. Now we will prep the image for use in the Newton. By the way, don’t close Google Earth yet; we will be getting back to there, but now we need to edit our image. I use Paint Shop Pro 6, an older version but it does everything I want. I usually use these steps but depending on your software you may do it differently. The main thing is to get to a one to four bit grayscale, high contrast image saved as a bmp file. First I set the image to grayscale. Then I choose one bit or four-bit color depth. I make this decision based on the map size and complexity. Most road maps will easily go 1 bit, satellite images not so much so. But remember, a 4 bit image is four times as large. Next I adjust the Contract, brightness, sharpness and gamma till I get the nice high contrast image I will need. After you have made a couple of maps you will recognize a good image on your PC. I save the image in windows bmp format.

All of the maps I make are rectilinear. GPSMap Lite supports other projections and they have a very nice write up in the tutorial on how those projections work. But I make simple rectilinear maps which work great for me. So we need three points on the map that we can easily identify on the Google Earth screen and the bmp image. For best results they need to be in the upper left corner, the upper right corner and the lower left corner. Here is where I generally open a notepad to write down figures. Starting in the upper left corner I go to Google Earth and get the latitude and longitude. Finding the same spot on the bmp image, I get the X and Y pixel coordinates. I log all of this into my notepad and then I move on to the other two spots and log them as well. We will also need a latitude and longitude for the default position or where the GPS cursor is when no GPS is connect. This can be one of the reference points but I generally choose a spot somewhere in the middle of the map.

Now comes the first tricky part. Google Earth gives the latitude and longitude in degrees, minutes and seconds. The map building utility needs the latitude in decimal degrees. Also remember to account for north, south, east and west as the sign on the decimal degrees or your map will never work. You can find conversion utilities on the internet but I have created a utility that automates this process and the next couple of steps as well. You may download it here: http://home.comcast.net/~mhowe41/Software/GPSMap.htm If you use my utility, you need only add a file name and it will call RECTMAP2.exe and create the file automatically. If you do not you will need to run RECTMAP2.exe and enter the values as requested. RECTMAP2.exe is contained in the GPSMap Lite archive. You will now have a text file.

Now we start NTK. Included in the GPSMapp Lite archive is a NTK project called Map.ntk, open this. On the Map_main layout, in the afterScript slot, make the following changes:

// map name as displayed in map list
Name : "Map Name",
// comment as displayed in "theTextView"
Comment : "This is a map for here",
// pointer to map data
theBits : BMAP_1,
// map scale (i.e. 50000)
Scale : 50000,
// scanner resolution in dots per inch (p.e. 150)
Resolution : 150,
// calculate ScaleFactor as "ROUND (Scale / Resolution)"
ScaleFactor : 333,
// coordinate style of map, must be 'RECT or 'CONE
Type : 'RECT,

Set the Name to the name you want your map to use in the map list. Set the comment to some note explaining the map. All of the other things here I left at the defaults you see above. Below that you will see a series of question marks, insert your latitude and longitude file here. It should look something like this afterwards:

////////////////////////////////////////////////
// replace the question marks below by the //
// coefficients output from one of the //
// calibration applications //
////////////////////////////////////////////////
C_X : [7.9866715871E+005, 9.3648738136E+003, 5.6419689500E+001],
C_Y : [5.9414612118E+005, -1.3861231697E+004, -1.4303583254E+001],
C_Long : [-8.5542050168E+001, 1.0678266860E-004, 4.3463994671E-007],
C_Lat : [4.2952148266E+001, -7.2144109466E-005, -1.1019040903E-007],
A : -0.3,
Lat_top : NIL,
Lat_bottom : NIL,
Long_left : NIL,
Long_right : NIL,
// geographic default position for loading map
Def_Lat : 42.93028,
Def_Long : -85.52111
},

Now save your work and compile. The completed package will load a map into GPSMap Lite and a connected GPS will move over the map perfectly.

Below is a listing on how to include a number of maps in the same package. Great for making strip maps for a trip.


thisView.MapList := [
/////////////////////////////////////////////////
// This frame describes the map loaded into //
// BMAP_1. If you have more maps repeat the //
// frame for each map //
/////////////////////////////////////////////////
{
// map name as displayed in map list
Name : "Flint to M59",
// comment as displayed in "theTextView"
Comment : "Beginning of trip",
// pointer to map data
theBits : BMAP_1,
// map scale (i.e. 50000)
Scale : 50000,
// scanner resolution in dots per inch (p.e. 150)
Resolution : 150,
// calculate ScaleFactor as "ROUND (Scale / Resolution)"
ScaleFactor : 333,
// coordinate style of map, must be 'RECT or 'CONE
Type : 'RECT,
// map structure version (always 1 for this template version)
Version : 1,
// remove slot "Public" if map should not be recognized by GPS Map demo version!
Public : TRUE,
////////////////////////////////////////////////
// replace the question marks below by the //
// coefficients output from one of the //
// calibration applications //
////////////////////////////////////////////////
C_X : [1.1976299815E+005, -1.4319330475E+003, -6.9148572344E+000],
C_Y : [8.3570260970E+004, 1.9441055755E+003, 8.8830049190E-002],
C_Long : [8.3844890825E+001, -6.9835682780E-004, -2.4839380246E-006],
C_Lat : [-4.2990313884E+001, 5.1437547078E-004, 3.1909311998E-008],
A : -0.3,
Lat_top : NIL,
Lat_bottom : NIL,
Long_left : NIL,
Long_right : NIL,
// geographic default position for loading map
Def_Lat : -42.9594444,
Def_Long : 83.6925,
},

{
// map name as displayed in map list
Name : "Square lake to 14 mile",
// comment as displayed in "theTextView"
Comment : "Middle of trip",
// pointer to map data
theBits : BMAP_2,
// map scale (i.e. 50000)
Scale : 50000,
// scanner resolution in dots per inch (p.e. 150)
Resolution : 150,
// calculate ScaleFactor as "ROUND (Scale / Resolution)"
ScaleFactor : 333,
// coordinate style of map, must be 'RECT or 'CONE
Type : 'RECT,
// map structure version (always 1 for this template version)
Version : 1,
// remove slot "Public" if map should not be recognized by GPS Map demo version!
Public : TRUE,
////////////////////////////////////////////////
// replace the question marks below by the //
// coefficients output from one of the //
// calibration applications //
////////////////////////////////////////////////
C_X : [5.6404670675E+005, -6.7787674540E+003, -1.0099126739E+001],
C_Y : [3.9230338730E+005, 9.1614870634E+003, -2.2377610885E+001],
C_Long : [8.3271348435E+001, -1.4751890632E-004, -1.6261684604E-007],
C_Lat : [-4.2617532587E+001, 1.0915218830E-004, -3.6032585770E-007],
A : -0.1,
Lat_top : NIL,
Lat_bottom : NIL,
Long_left : NIL,
Long_right : NIL,
// geographic default position for loading map
Def_Lat : -42.60444444,
Def_Long : 83.2225,
},
And so on . . .
Notice that the "theBits" value increments for each additional map. Otherwise, the block is the same.

I hope this helps all of you Newton owners out there making maps. The map making process can do a lot more and the tutorial that comes with GPSMap Lite explains all of those options. But sometimes all of those options can be a deterrent to a new mapmaker. My method is a bare bones approach that will make usable maps. So make maps and don’t get lost.

God Bless you and yours


Comments

Josh Burker said…
Awesome tutorial! Thanks for the helpful information!
Flintartgirl said…
Dad,

You are the biggest geek ever. And I love you for it.

Popular posts from this blog

Simple Pixel Watch (Update to version 6)

How I Met God in the Middle of the Night

The blessing of the food for Easter