The routine GRAFMP plots a geographical axis system.
The call is: | CALL GRAFMP (XA, XE, XOR, XSTP, YA, YE, YOR, YSTP)
| level 1 |
or: | void grafmp (float xa, float xe, float xor, float xstp, float ya, float ye, float yor, float ystp); |
XA, XE | are the lower and upper limits of the X-axis. |
XOR, XSTP | are the first X-axis label and the step between labels. |
YA, YE | are the lower and upper limits of the Y-axis. |
YOR, YSTP | are the first Y-axis label and the step between labels. |
Additional notes:
The routine XAXMAP plots a secondary X-axis.
The call is: | CALL XAXMAP (A, B, OR, STEP, CSTR, NT, NY) | level 2 |
or: | void xaxmap (float a, float b, float or, float step, char *cstr, int nt, int ny); |
A, B | are the lower and upper limits of the X-axis. |
OR, STEP | are the first label and the step between labels. |
CSTR | is a character string containing the axis name. |
NT | indicates how ticks, labels and the axis name are plotted. If NT = 0, they are plotted in a clockwise direction. If NT = 1, they are plotted in a counter-clockwise direction. |
NY | defines the horizontal position of the X-axis. A secondary axis must be located inside the axis system. |
The routine YAXMAP plots a secondary Y-axis.
The call is: | CALL YAXMAP (A, B, OR, STEP, CSTR, NT, NX) | level 2 |
or: | void yaxmap (float a, float b, float or, float step, char *cstr, int nt, int nx); |
A, B | are the lower and upper limits of the Y-axis. |
OR, STEP | are the first label and the step between labels. |
CSTR | is a character string containing the axis name. |
NT | indicates how ticks, labels and the axis name are plotted. If NT = 0, they are plotted in a clockwise direction. If NT = 1, they are plotted in a counter-clockwise direction. |
NX | defines the vertical position of the Y-axis. A secondary axis must be located inside the axis system. |
The 4 basic methods are:
The routine PROJCT selects the geographical projection.
The call is: | CALL PROJCT (CTYPE) | level 1 |
or: | void projct (char *ctype); |
CTYPE | is a character string defining the projection. |
= 'CYLI' | defines a cylindrical equidistant projection. |
= 'MERC' | selects the Mercator projection. |
= 'EQUA' | defines a cylindrical equal-area projection. |
= 'HAMM' | defines the elliptical projection of Hammer. |
= 'AITO' | defines the elliptical projection of Aitoff. |
= 'WINK' | defines the elliptical projection of Winkel. |
= 'SANS' | defines the elliptical Mercator-Sanson projection. |
= 'CONI' | defines a conical equidistant projection. |
= 'ALBE' | defines a conical equal-area projection (Albers). |
= 'CONF' | defines a conical conformal projection. |
= 'AZIM' | defines an azimuthal equidistant projection. |
= 'LAMB' | defines an azimuthal equal-area projection. |
= 'STER' | defines an azimuthal stereographic projection. |
= 'ORTH' | defines an azimuthal orthographic projection. |
= 'MYPR' | defines an user-defined projection. Default: CTYPE = 'CYLI'. |
Additional notes:
-540 <= XA <= XE <= 540 -180 <= YA <= YE <= 180
-540 <= XA <= XE <= 540 - 85 <= YA <= YE <= 85
-540 <= XA <= XE <= 540 - 90 <= YA <= YE <= 90
-180 <= XA <= XE <= 180 - 90 <= YA <= YE <= 90
-180 <= XA <= XE <= 180 0 <= YA <= YE <= 90 or - 90 <= YA <= YE <= 0For azimuthal projections with YE - YA > 90, the hemisphere around the map pole is projected onto a circle. Therefore, the hemisphere can be selected with the map pole. The plotting of the axis system will be suppressed.
If YE - YA <= 90, the part of the globe defined by the axis scaling is projected onto a rectangle. The map pole will be set by GRAFMP to ((XA+XE)/2, (YE+YA)/2). The scaling parameters must be in the range:
-180 <= XA <= XE <= 180 and XE - XA <= 180 - 90 <= YA <= YE <= 90
The routine WORLD plots coastlines and lakes.
The call is: | CALL WORLD | level 2 |
or: | void world (void); |
Additional note:
The routine SHDMAP plots shaded continents.
The call is: | CALL SHDMAP (CMAP) | level 2 |
or: | void shdmap (char *cmap); |
CMAP | is a character string defining the continent. |
= 'AFRI' | means Africa. |
= 'ANTA' | means the Antarctic. |
= 'AUST' | means Australia. |
= 'EURA' | means Europe and Asia. |
= 'NORT' | means North America. |
= 'SOUT' | means South America. |
= 'LAKE' | means lakes. |
= 'ALL' | means all continents and lakes. |
Additional note:
The routine SHDAFR plots shaded African countries.
The call is: | CALL SHDAFR (INRAY, IPRAY, ICRAY, N) | level 2 |
or: | void shdafr (int *inray, long *ipray, int *icray, int n); |
INRAY | is an integer array containing the countries to be
shaded. INRAY can have the following values:
1: Algeria 19: Gabon 37: Nigeria 2: Angola 20: Gambia 38: Rwanda 3: Benin 21: Ghana 39: Senegal 4: Botswana 22: Guinea 40: Seychelles 5: Burkina Faso 23: Guinea Bissau 41: Sierra Leone 6: Burundi 24: Kenya 42: Somalia 7: Cameroon 25: Lesotho 43: South Africa 8: Central Afr. Rep. 26: Liberia 44: Sudan 9: Chad 27: Libya 45: Swaziland 10: Comoros 28: Madagascar 46: Tanzania 11: Congo, Dem. Rep. 29: Malawi 47: Togo 12: Congo, Rep. 30: Mali 48: Tunesia 13: Cote d'Ivoire 31: Mauritania 49: Uganda 14: Djibouti 32: Mauritius 50: West Sahara 15: Egypt 33: Morocco 51: Zambia 16: Equatorial Guinea 34: Mozambique 52: Zimbawe 17: Eritrea 35: Namibia 18: Ethiopia 36: Niger 0: Africa |
IPRAY | is an integer array containing shading patterns. |
ICRAY | is an integer array containing colour numbers. |
N | is the number of countries to be shaded. |
The routine SHDEUR plots shaded European countries.
The call is: | CALL SHDEUR (INRAY, IPRAY, ICRAY, N) | level 2 |
or: | void shdeur (int *inray, long *ipray, int *icray, int n); |
INRAY | is an integer array containing the countries to be
shaded. INRAY can have the following values:
1: Albania 17: Luxembourg 33: Belarus 2: Andorra 18: Malta 34: Bosnia 3: Belgium 19: Netherlands 35: Croatia 4: Bulgaria 20: North Ireland 36: Czech Republic 5: Germany 21: Norway 37: Estonia 6: Denmark 22: Austria 38: Latvia 7: Cyprus 23: Poland 39: Lithuania 8: United Kingdom 24: Portugal 40: Macedonia 9: Finland 25: Romania 41: Moldava 10: France 26: Sweden 42: Russia 11: Greece 27: Switzerland 43: Serbia 12: Ireland 28: Spain 44: Slovakia 13: Iceland 29: CSFR 45: Slowenia 14: Italy 30: Turkey 46: Ukraine 15: Yugoslavia 31: USSR 16: Liechtenstein 32: Hungary 0: Europe |
IPRAY | is an integer array containing shading patterns. |
ICRAY | is an integer array containing colour numbers. |
N | is the number of countries to be shaded. |
Additional notes:
The routine SHDUSA plots shaded USA states.
The call is: | CALL SHDUSA (INRAY, IPRAY, ICRAY, N) | level 2 |
or: | void shdusa (int *inray, long *ipray, int *icray, int n); |
INRAY | is an integer array containing the states to be
shaded. INRAY can have the following values:
1: Alabama 19: Maine 37: Oregon 2: Alaska 20: Maryland 38: Pennsylvania 3: Arizona 21: Massachusetts 39: Rhode Island 4: Arkansas 22: Michigan 40: South Carolina 5: California 23: Minnesota 41: South Dakota 6: Colorado 24: Mississippi 42: Tennessee 7: Connecticut 25: Missouri 43: Texas 8: Delaware 26: Montana 44: Utah 9: Floria 27: Nbraska 45: Vermont 10: Georgia 28: Nevada 46: Virginia 11: Hawaii 29: New Hampshire 47: Washington 12: Idaho 30: New Jersey 48: West Virginia 13: Ilinois 31: New Mexico 49: Wisconsin 14: Indiana 32: New York 50: Wyoming 15: Iowa 33: North Carolina 51: Washington DC 16: Kansas 34: North Dakota 17: Kentucky 35: Ohio 18: Louisiana 36: Oklahoma 0: USA |
IPRAY | is an integer array containing shading patterns. |
ICRAY | is an integer array containing colour numbers. |
N | is the number of states to be shaded. |
The routine CURVMP plots curves through data points or marks them with symbols.
The call is: | CALL CURVMP (XRAY, YRAY, N) | level 2 |
or: | void curvmp (float *xray, float *yray, int n); |
XRAY, YRAY | are real arrays containing the data points. |
N | is the number of data points. |
Additional notes:
The routine MAPBAS defines the map data file used in the routine WORLD. An internal DISLIN map file, some external map files compiled by Paul Wessel and map files in Mapgen format can be used. The map files compiled by Paul Wessel can be copied via FTP anonymous from the sites
The external map files 'gshhs_l.b', 'gshhs_i.b', 'gshhs_h.b' and 'gshhs_f.b' must be copied to the map subdirectory of the DISLIN directory, or the name of the map file must be specified with the routine MAPFIL.
Map files in Mapgen format are available from the Coastline Extractor:
The call is: | CALL MAPBAS (COPT) | level 1, 2 |
or: | void mapbas (char *copt); |
COPT | is a character string defining the map data file. |
= 'DISLIN' | defines the DISLIN base map. |
= 'GSHL' | defines 'gshhs_l.b' as base map. |
= 'GSHI' | defines 'gshhs_l.i' as base map. |
= 'GSHH' | defines 'gshhs_l.h' as base map. |
= 'GSHF' | defines 'gshhs_l.f' as base map. |
= 'MAPFIL' | defines an external map file as
base map that is specified with the routine
MAPFIL. Default: COPT = 'DISLIN'. |
The routine MAPFIL defines an external map file. The map file can be used as base map if the routine MAPBAS is called with the parameter 'MAPFIL'.
The call is: | CALL MAPFIL (CFIL, COPT) | level 1, 2 |
or: | void mapfil (char *cfil, char *copt); |
CFIL | is a character string containing the filename of the external map file. |
COPT | is a character string describing the format of the map coordinates. COPT can have the values 'GSHHS' and 'MAPGEN'. |
The routine MAPLEV defines land or lake coordinates for WORLD if the external map files from Paul Wessel are used.
The call is: | CALL MAPLEV (COPT) | level 1, 2 |
or: | void maplev (char *copt); |
COPT | is a character string that can have the values 'ALL', 'LAND' and 'LAKE'.
Default: COPT = 'ALL'. |
MAPPOL defines the map pole used for azimuthal projections.
The call is: | CALL MAPPOL (XPOL, YPOL) | level 1 |
or: | void mappol (float xpol, float ypol); |
XPOL, YPOL | are the longitude and latitude coordinates
in degrees where:
-180 <= XPOL <= 180 and -90 <= YPOL <= 90.Default: (0., 0.) |
Additional note:
For an azimuthal projection with YE - YA > 90, DISLIN automatically projects a hemisphere around the map pole onto a circle. The hemisphere can be reduced using MAPSPH.
The call is: | CALL MAPSPH (XRAD) | level 1 |
or: | void mapsph (float xrad); |
XRAD | defines the region around the map pole that will
be projected onto a circle (0 < XRAD <= 90). Default: XRAD = 90. |
The routine MAPREF defines, for conical projections, two latitudes where the cone intersects or touches the globe.
The call is: | CALL MAPREF (YLW, YUP) | level 1 |
or: | void mapref (float ylw, float yup); |
YLW, YUP | are the lower and upper latitudes
where:
0 <= YLW <= YUP <= 90 or - 90 <= YLW <= YUP <= 0Default: YLW = YA + 0.25 * (YE - YA), YUP = YA + 0.75 * (YE - YA) |
Additional note:
The routine MAPMOD determines how data points will be connected by CURVMP.
The call is: | CALL MAPMOD (CMODE) | level 1, 2 |
or: | void mapmod (char *cmode); |
CMODE | is a character string defining the connection mode. |
= 'STRAIGHT' | defines straight lines. |
= 'INTER' | means that lines will be interpolated linearly. Default: CMODE = 'INTER'. |
The routine POS2PT converts map coordinates to plot coordinates.
The call is: | CALL POS2PT (XLONG, YLAT, XP, YP) | level 2 |
or: | void pos2pt (float xlong, float ylat, float *xp, float *yp); |
XLONG, YLAT | are the map coordinates in degrees. |
XP, YP | are the plot coordinates calculated by POS2PT. |
The corresponding functions are:
The routine SETCBK defines a user written callback routine.
The call is: | CALL SETCBK (ROUTINE, 'MYPR') | level 0, 1, 2, 3 |
or: | void setcbk ((void) (*routine)(float *xp, float *yp), "MYPR"); |
ROUTINE | is the name of a routine defined by the user. In Fortran, the routine must be declared as EXTERNAL. |
In the following example, a cylindrical projection is implemented as an user-defined projection:
PROGRAM MYPR EXTERNAL MYFUNC COMMON /MYCOMM/ XA,XE,YA,YE,NXL,NYL XA = -180. XE = 180. YA = -90. YE = 90. NXL = 2400 NYL = 1200 CALL METAFL ('cons') CALL DISINI CALL PAGERA CALL COMPLX CALL AXSLEN (NXL, NYL) CALL PROJCT ('MYPR') CALL SETCBK (MYFUNC, 'MYPR') CALL GRAFMP (XA, XE, XA, 90., YA, YE, YA, 30.) CALL GRIDMP (1,1) CALL WORLD CALL DISFIN END SUBROUTINE MYFUNC (XP, YP) COMMON /MYCOMM/ XA,XE,YA,YE,NXL,NYL XP = (XP - XA)/(XE - XA) * (NXL - 1) YP = (YP - YA)/(YE - YA) * (NYL - 1) END