starmap

The starmap program produces star maps according to the options you give it. It knows all the stars down to magnitude 11.5, which is 1,391,099 stars. You can also give it additional objects to display, such as planets. It has many options for controlling what part of the sky you want to see, and what lines and labels and magnitudes of stars you want to see, etc.

I wrote the program itself. The data files it uses were derived from various sources; some written by me and some not. For details, see the comment near the start of starmap.c, which is in astro30src.zip.

Producing a star map is a two step process:

  1. Run "starmap" with the options you want. This outputs "PostScript" commands that say what lines, dots, text, etc. are to be printed and where. This output needs to be stored in a file.
  2. Run a PostScript viewer (such as GSview for Windows or gv for Linux) to actually display the results. From a GSview window you can also print this to your printer.

But the file called "map.bat" (for Windows) or "map" (for Linux) does both of these in one step. For either system, you just type "map" followed by whichever starmap options you want, then the Enter key. That brings up a new window, showing you the star map. When you are done looking at the map and/or printing it, you can close that window.

If there is something wrong in your command line, an error message will be printed. If you gave it a wrong option letter, it will print the whole list of options. Otherwise, it will tell you more specifically about what is wrong.

(NOTE: After you downloaded, if you are on Windows you should have edited "map.bat" as described in this additional setup if necessary; and for Linux you may want to alter "map" if desired.)

Below is a description of all the options. They all consist of a dash followed by a letter. For some of them, you then type a space and some more information.

The order of options on the line doesn't matter. But all of this has to be on one line, even it is very long and so appears to wrap around.

To see the details of each option, you can run

        map -h
and you will get the following output:
starmap program, version 3.2

starmap -a additional_objects -d designations -g grid_level -i inhibits \
        -l limiting_mag -m map -p precession_year -s label_mags -t title \
        -v viewfields -z zenith -b -e -h -n -q -u -w -x
(all parameters are optional)

Program to generate PostScript commands for printing a star map.  The map
can be centered on any point in the sky, and cover a specified field of
view.  Or, you can print the following six standard maps to cover the sky,
with some overlap:
        1 = north circumpolar
        2 = south circumpolar
        3 = midsection, right ascension 0 hours to beyond 7.5 hours
        4 = midsection, right ascension before 7.5 hours to 15 hours
        5 = midsection, right ascension 12 hours to beyond 19.5 hours
        6 = midsection, right ascension before 19.5 hours wrapped to 3 hours
The intent is that you would print maps 3 and 4 and splice them into
one wide map; and the same with 5 and 6.

For the parameters below, whenever right ascension is stated, it can be in
any of these six formats:  H  Hh  HhM  HhMm  HhMmS  HhMmSs  where H is
hours, M is minutes, and S is seconds.  Whenever an angle is stated, for
declination or other things, it can be in any of these six formats:  D  Do
DoM  DoM'  DoM'S  DoM'S"  where D is degrees, M is arcminutes, and S is
arcseconds.  For all twelve formats, only the last number given can have a
decimal point, and none can have a sign except for D.  All must be in the
appropriate range.  If D is negative, that sign applies to M and S also, if
present.

The parameters that have operands are:
    -a: show additional objects.  The operand to -a is either "file="
        followed by the name of a file containing a list of objects, one per
        line, or the objects can be listed on the command line, separated by
        colons (":").  Each object is given as 4 items:  right ascension,
        declination, magnitude, name.  If given in a file, the 4 items can
        be separated by either commas or spaces or tabs.  If given on the
        command line, they must be separated by commas.  The name is
        optional, and if omitted, the last separator may also be omitted.
    -d: designations to print for a star, whichever exist, as follows:
           b:   Bayer letter (the default choice)
           f:   Flamsteed number
           b-f: Bayer if it exists, otherwise Flamsteed
           b+f: Bayer preceded by Flamsteed
           n:   neither
    -g: level of coordinate grid lines to show, as follows:
           0: do not print (also inhibits the ecliptic and galactic equator)
           1: right ascension every hour, declination every 10 degrees
           2: right ascension every 30 minutes, declination every 5 degrees
           3: right ascension every 5 minutes, declination every degree
        The default is 1, except 2 for centered maps with screen width less
        than 60 degrees and 3 for centered maps of width less than 25 degrees.
        Near the poles, not as many right ascension lines are shown.
    -i: inhibit printing of each item in this operand.  The letters in the
        operand may be in any order, and are as follows:
           b: constellation boundaries
           n: constellation names
           o: constellation outlines
           s: star names and designations
    -l: limiting magnitude (faintest stars to print): default 5.0,
        minimum -2.0, maximum 11.5.  Star names etc. are placed to avoid
        colliding with stars down to 5.0, but fainter than that there will
        be collisions.
    -m: which map to print (default 1).  This can be a number from 1 to 6,
        for one of the standard maps; or it can be comma separated items
        specifying a map centered on some point in the sky.  In the latter
        case, the items can be right ascension, declination, and optionally
        the width to be shown as an angle from 1 to 90 degrees defaulting
        to 60; or they can be an ID and optionally the width.
        An ID can be a constellation, or an object given by its proper name
        or by its Bayer or Flamsteed designation.
        A Bayer designation is a letter, followed by a digit if needed,
        followed by a constellation.  The letter can be the name of a Greek
        letter spelled out, or a single Roman letter that represents a Greek
        letter; a for alpha, b for beta, etc.  The whole list of Roman
        letters for the Greek alphabet in Greek alphabetical order is:
           a b g d e z h q i k l m n x o p r s t u f c y w.
        A Flamsteed designation is a number followed by a constellation.
        In any of these contexts, for constellation you can use the standard
        name, or the possessive form, or the official three letter
        abbreviation (like Cetus, Ceti, Cet).  In any of the forms of ID,
        blanks and case of letters are ignored.
    -p: year to precess everything to, default 2000.
    -s: limiting magnitudes for showing object names, Bayer letters, and
        Flamsteed numbers: default 4.5, minimum -2.0, maximum 11.5.  One or
        two numbers (comma separated) may be given.  If one number, it applies
        to all of these IDs.  If two, the first applies to Bayer and Flamsteed
        and the second applies to object names.  Object names for objects from
        the -a option are printed regardless of magnitude.  For standard maps,
        some names are never printed.  For centered maps, some names may or
        may not be printed, based on the screen width, to avoid collisions.
    -t: title to be printed above the map.  If it is multiple lines, end each
        line but the last with \n.  The font size defaults to 14.  For a
        different size, begin the string with s(X) where X is the size.
    -v: view field circles to draw.  This is for centered maps only.  The
        items are colon separated.  Each item starts with an angle, which is
        the diameter of the view field, optionally followed (comma separated)
        by the right ascension and declination of where the view field is to
        be centered, or an ID in the same format as for the -m option.  If
        right ascension/declination and ID are not given, the view field will
        be centered where the map is centered.
    -z: right ascension and declination of the zenith; the horizon is drawn
        based on this.  They are comma separated.  This is for centered
        maps only.

The parameters without operands are:
    -b: use black and white only in drawing the map.
    -e: print page edges (your paper should extend at least to there).
    -h: print this help message and exit.
    -n: show star number where the proper name would normally be.
    -q: quantize magnitudes to the nearest integer.
    -u: show magnitude times 10 where the proper name would normally be.
    -w: print on white background.
    -x: draw an X at the point the map is centered on (centered maps only).
Here is an example showing R.A. 15 hours 23 minutes, declination minus 15 degrees 17 arcminutes, and screen width 35 degrees. The limiting magnitude is set to 6.5, and star names and letters are shown down to magnitude 6.
        map  -m 15h23m,-15o17,35o  -l 6.5  -s 6
The resulting map looks like this.

You can use whichever options you want, and let the others default to the values stated above. You can list them in any order. Normally, don't put any spaces in the option information, but if you need to, like in a name of something, put the information in "quotes". There needs to be space between options, except that Options with no information can be combined; like, instead of "-b -w" you can say "-bw".

The most important option is -m, because that tells it where to center the map and what the width in degrees should be. There are several ways to specify the place, as in the examples below. Note that right ascension can be given either in hours with optional minutes and seconds (using h, m, and s), or as a decimal number of hours. Similarly, declination and screen width can be in degrees with optional arcminutes and arcseconds (using o, ', and "), or as a decimal number of degrees. (Actually, for arcseconds, in Windows you should omit the " after the number, because the command window doesn't handle it correctly. You can always omit the character after the last number. For Linux you need to be careful of both the ' and " characters, quoting or backslashing them as needed so that the shell will take them literally.)

Examples of the -m option:

        -m 3                  (standard map number 3)
        -m 15h20,-17o30,40    (center at RA 19 hours 20 minutes, declination
                               -17 degrees 30 minutes, with 40 degree width
                               of field)
        -m 15.33,-17.51,40    (center at RA 15.33 hours, decl -17.51 degrees,
                               width 40 degrees)
        -m canismajor,30      (center on Canis Major, 30 degrees wide)
        -m albireo,20         (center on Albireo, 20 degrees wide)
        -m betascorpii,25     (center on beta Scorpii, 25 degrees)
        -m bscorpii,25        (center on beta Scorpii [b stands for beta],
                               25 degrees)
        -m pi3orionis,25      (center on pi3 Orionis, 25 degrees)
        -m 18cygni            (center on 18 Cygni; no width given, so it
                               defaults to 60 degrees)
Here are some other popular options:

Use -l to set the limiting magnitude for printing an object, and -s to set the limiting magnitude for showing its name or Bayer letter or Flamsteed number.

Use -a to provide additional objects to print, like planets etc. Example:

        -a 14h15,9o17,6.9,Ceres:14h59,-3o17,5.8,Vesta
Or put this into a file in this folder (directory), using Notepad if you are in Windows. The file could be called example.txt and contain
        14h15     9o17     6.9     Ceres
        14h59    -3o17     5.8     Vesta
and you would say
        -a file=example.txt
In Linux you can give the -a option the output of the "runplanet" shell script (see here) by saying
        -a $(runplanet)
If you intend to print, you should use -w to get a white background, or else you'll be using a lot of ink. And if you don't have a color printer, use -b for black and white.

To show the horizon, use -z, giving it ra,decl of the zenith. The declination of the zenith is your latitude. Its RA is the hour angle of the vernal equinox. You can find that by running the celcoo program like this:

        celcoo -R 0 -D 0  (and other options, like date and time)
Or, in Linux, you can use the output of the "zenith" shell script (see here.)