The MapPlot class draws outlined and/or filled maps of arbitrary regions of the globe and may be used to map overlay plots into a number of standard projections.
Header file: ncarg/hlu/MapPlot.h Class name: mapPlotClass Class pointer: NhlmapPlotClass Fortran class function: NHLFMAPPLOTCLASS Superclass: Transform Composite classes: MapTransformation,PlotManager
Type name: NhlTMapDataBaseVersion Definition: typedef enum _NhlMapDataBaseVersion { NhlNCARG4_0 = 0, /* "Ncarg4_0" */ NhlNCARG4_1 = 1 /* "Ncarg4_1" */ } NhlMapDataBaseVersion; Type name: NhlTMapBoundarySets Definition: typedef enum _NhlMapBoundarySets { NhlNOBOUNDARIES = 0, /* "NoBoundaries" */ NhlGEOPHYSICAL = 1, /* "Geophysical" */ NhlNATIONAL = 2, /* "National" */ NhlUSSTATES = 3, /* "USStates" */ NhlGEOPHYSICALANDUSSTATES = 4, /* "GeophysicalAndUSStates" */ NhlALLBOUNDARIES = 5 /* "AllBoundaries" */ } NhlMapBoundarySets; Type name: NhlTSpecifiedFillPriority Definition: typedef enum _NhlSpecifiedFillPriority { NhlGEOPHYSICALPRIORITY = 0, /* "GeophysicalPriority" */ NhlPOLITICALPRIORITY = 1 /* "PoliticalPriority" */ } NhlSpecifiedFillPriority; Type name: NhlTMapGridMaskMode Definition: typedef enum _NhlMapGridMaskMode { NhlMASKNONE = 0, /* "MaskNone" */ NhlMASKOCEAN = 1, /* "MaskOcean" */ NhlMASKNOTOCEAN = 2, /* "MaskNotOcean" */ NhlMASKLAND = 3, /* "MaskLand" */ NhlMASKNOTLAND = 4, /* "MaskNotLand" */ NhlMASKFILLAREA = 5, /* "MaskFillArea" */ NhlMASKMASKAREA = 6 /* "MaskMaskArea" */ } NhlMapGridMaskMode; Type name: NhlTMapShapeMode Definition: typedef enum _NhlMapShapeMode { NhlFREEASPECT = 0, /* "FreeAspect" */ NhlFIXEDASPECTFITBB = 1, /* "FixedAspectFitBB" */ NhlFIXEDASPECTNOFITBB = 2 /* "FixedAspectNoFitBB" */ } NhlMapShapeMode;
+---------------------------------------------------------------+ | MapPlot Resource Set | |---------------------------------------------------------------| | NAME TYPE ACCESS | | CLASS DEFAULT | |===============================================================| | mpDataBaseVersion NhlTMapDataBaseVersion RCSG | | MpDataBaseVersion "Ncarg4_0" | |---------------------------------------------------------------| | mpShapeMode NhlTMapShapeMode RCSG | | MpShapeMode "FixedAspectFitBB" | |---------------------------------------------------------------| | mpAreaNames NhlTStringGenArray RCSG | | MpAreaNames <array> | |---------------------------------------------------------------| | mpAreaTypes NhlTIntegerGenArray G | | MpAreaTypes <array> | |---------------------------------------------------------------| | mpFixedAreaGroups NhlTIntegerGenArray G | | MpFixedAreaGroups <array> | |---------------------------------------------------------------| | mpDynamicAreaGroups NhlTIntegerGenArray RCSG | | MpDynamicAreaGroups <array> | |---------------------------------------------------------------| | mpAreaGroupCount NhlTInteger RCSG | | MpAreaGroupCount 10 | |---------------------------------------------------------------| | mpOutlineOn NhlTBoolean RCSG | | MpOutlineOn True | |---------------------------------------------------------------| | mpOutlineDrawOrder NhlTDrawOrder RCSG | | MpOutlineDrawOrder "PostDraw" | |---------------------------------------------------------------| | mpOutlineBoundarySets NhlTMapBoundarySets RCSG | | MpOutlineBoundarySets "Geophysical" | |---------------------------------------------------------------| | mpOutlineSpecifiers NhlTStringGenArray RCSG | | MpOutlineSpecifiers NULL | |---------------------------------------------------------------| | mpAreaMaskingOn NhlTBoolean RCSG | | MpAreaMaskingOn False | |---------------------------------------------------------------| | mpMaskAreaSpecifiers NhlTStringGenArray RCSG | | MpMaskAreaSpecifiers NULL | |---------------------------------------------------------------| | mpFillOn NhlTBoolean RCSG | | MpFillOn False | |---------------------------------------------------------------| | mpFillDrawOrder NhlTDrawOrder RCSG | | MpFillDrawOrder "Draw" | |---------------------------------------------------------------| | mpFillBoundarySets NhlTMapBoundarySets RCSG | | MpFillBoundarySets "Geophysical" | |---------------------------------------------------------------| | mpFillPatternBackground NhlTColorIndex RCSG | | FillBackgroundColor "Background" | |---------------------------------------------------------------| | mpMonoFillColor NhlTBoolean RCSG | | MpMonoFillColor False | |---------------------------------------------------------------| | mpFillColor NhlTColorIndex RCSG | | FillColor "Foreground" | |---------------------------------------------------------------| | mpFillColors NhlTColorIndexGenArray RCSG | | MpFillColors <array> | |---------------------------------------------------------------| | mpMonoFillPattern NhlTBoolean RCSG | | MpMonoFillPattern True | |---------------------------------------------------------------| | mpFillPattern NhlTFillIndex RCSG | | FillPattern "SolidFill" | |---------------------------------------------------------------| | mpFillPatterns NhlTFillIndexGenArray RCSG | | MpFillPatterns <array> | |---------------------------------------------------------------| | mpMonoFillScale NhlTBoolean RCSG | | MpMonoFillScale True | |---------------------------------------------------------------| | mpFillScaleF NhlTFloat RCSG | | FillScaleF 1.0 | |---------------------------------------------------------------| | mpFillScales NhlTFloatGenArray RCSG | | MpFillScales <array> | |---------------------------------------------------------------| | mpFillAreaSpecifiers NhlTStringGenArray RCSG | | MpFillAreaSpecifiers NULL | |---------------------------------------------------------------| | mpSpecifiedFillDirectIndexing NhlTBoolean RCSG | | MpSpecifiedFillDirectIndexing False | |---------------------------------------------------------------| | mpSpecifiedFillPriority NhlTSpecifiedFillPriority RCSG | | MpSpecifiedFillPriority "GeophysicalPriority" | |---------------------------------------------------------------| | mpSpecifiedFillColors NhlTColorIndexGenArray RCSG | | MpSpecifiedFillColors <dynamic array> | |---------------------------------------------------------------| | mpSpecifiedFillPatterns NhlTFillIndexGenArray RCSG | | MpSpecifiedFillPatterns <dynamic array> | |---------------------------------------------------------------| | mpSpecifiedFillScales NhlTFloatGenArray RCSG | | MpSpecifiedFillScales <dynamic array> | |---------------------------------------------------------------| | mpDefaultFillColor NhlTColorIndex RCSG | | FillColor 16 | |---------------------------------------------------------------| | mpDefaultFillPattern NhlTFillIndex RCSG | | FillPattern "SolidFill" | |---------------------------------------------------------------| | mpDefaultFillScaleF NhlTFloat RCSG | | FillScaleF 1.0 | |---------------------------------------------------------------| | mpOceanFillColor NhlTColorIndex RCSG | | FillColor 10 | |---------------------------------------------------------------| | mpOceanFillPattern NhlTFillIndex RCSG | | FillPattern "SolidFill" | |---------------------------------------------------------------| | mpOceanFillScaleF NhlTFloat RCSG | | FillScaleF 1.0 | |---------------------------------------------------------------| | mpLandFillColor NhlTColorIndex RCSG | | FillColor 8 | |---------------------------------------------------------------| | mpLandFillPattern NhlTFillIndex RCSG | | FillPattern "SolidFill" | |---------------------------------------------------------------| | mpLandFillScaleF NhlTFloat RCSG | | FillScaleF 1.0 | |---------------------------------------------------------------| | mpInlandWaterFillColor NhlTColorIndex RCSG | | FillColor 10 | |---------------------------------------------------------------| | mpInlandWaterFillPattern NhlTFillIndex RCSG | | FillPattern "SolidFill" | |---------------------------------------------------------------| | mpInlandWaterFillScaleF NhlTFloat RCSG | | FillScaleF 1.0 | |---------------------------------------------------------------| | mpGeophysicalLineColor NhlTColorIndex RCSG | | LineColor "Foreground | |---------------------------------------------------------------| | mpGeophysicalLineDashPattern NhlTDashIndex RCSG | | LineDashPattern "SolidLine" | |---------------------------------------------------------------| | mpGeophysicalLineDashSegLenF NhlTFloat RCSG | | LineDashSegLenF <dynamic> | |---------------------------------------------------------------| | mpGeophysicalLineThicknessF NhlTFloat RCSG | | LineThicknessF 1.0 | |---------------------------------------------------------------| | mpUSStateLineColor NhlTColorIndex RCSG | | LineColor "Foreground" | |---------------------------------------------------------------| | mpUSStateLineDashPattern NhlTDashIndex RCSG | | LineDashPattern "SolidLine" | |---------------------------------------------------------------| | mpUSStateLineDashSegLenF NhlTFloat RCSG | | LineDashSegLenF <dynamic> | |---------------------------------------------------------------| | mpUSStateLineThicknessF NhlTFloat RCSG | | LineThicknessF 1.0 | |---------------------------------------------------------------| | mpNationalLineColor NhlTColorIndex RCSG | | LineColor "Foreground" | |---------------------------------------------------------------| | mpNationalLineDashPattern NhlTDashIndex RCSG | | LineDashPattern "SolidLine" | |---------------------------------------------------------------| | mpNationalLineDashSegLenF NhlTFloat RCSG | | LineDashSegLenF <dynamic> | |---------------------------------------------------------------| | mpNationalLineThicknessF NhlTFloat RCSG | | LineThicknessF 1.0 | |---------------------------------------------------------------| | mpGridAndLimbOn NhlTBoolean RCSG | | MpGridAndLimbOn True | |---------------------------------------------------------------| | mpGridAndLimbDrawOrder NhlTDrawOrder RCSG | | MpGridAndLimbDrawOrder "PostDraw" | |---------------------------------------------------------------| | mpGridMaskMode NhlTMapGridMaskMode RCSG | | MpGridMaskMode "MaskNone" | |---------------------------------------------------------------| | mpGridSpacingF NhlTFloat RCSG | | MpGridSpacingF 15.0 | |---------------------------------------------------------------| | mpGridLatSpacingF NhlTFloat RCSG | | MpGridLatSpacingF 15.0 | |---------------------------------------------------------------| | mpGridLonSpacingF NhlTFloat RCSG | | MpGridLonSpacingF 15.0 | |---------------------------------------------------------------| | mpGridMaxLatF NhlTFloat RCSG | | MpGridMaxLatF 15.0 | |---------------------------------------------------------------| | mpGridPolarLonSpacingF NhlTFloat RCSG | | MpGridPolarLonSpacingF 15.0 | |---------------------------------------------------------------| | mpGridLineColor NhlTColorIndex RCSG | | LineColor "Foreground" | |---------------------------------------------------------------| | mpGridLineDashPattern NhlTDashIndex RCSG | | LineDashPattern "SolidLine" | |---------------------------------------------------------------| | mpGridLineDashSegLenF NhlTFloat RCSG | | DashSegLenF <dynamic> | |---------------------------------------------------------------| | mpGridLineThicknessF NhlTFloat RCSG | | LineThicknessF 1.0 | |---------------------------------------------------------------| | mpLimbLineColor NhlTColorIndex RCSG | | LineColor "Foreground" | |---------------------------------------------------------------| | mpLimbLineDashPattern NhlTDashIndex RCSG | | LineDashPattern "SolidLine" | |---------------------------------------------------------------| | mpLimbLineDashSegLenF NhlTFloat RCSG | | LineDashSegLenF <dynamic> | |---------------------------------------------------------------| | mpLimbLineThicknessF NhlTFloat RCSG | | LineThicknessF 1.0 | |---------------------------------------------------------------| | mpPerimOn NhlTBoolean RCSG | | EdgesOn False | |---------------------------------------------------------------| | mpPerimDrawOrder NhlTDrawOrder RCSG | | MpPerimDrawOrder "Draw" | |---------------------------------------------------------------| | mpPerimLineColor NhlTColorIndex RCSG | | LineColor "Foreground" | |---------------------------------------------------------------| | mpPerimLineDashPattern NhlTDashIndex RCSG | | LineDashPattern "SolidLine" | |---------------------------------------------------------------| | mpPerimLineDashSegLenF NhlTFloat RCSG | | LineDashSegLenF <dynamic> | |---------------------------------------------------------------| | mpPerimLineThicknessF NhlTFloat RCSG | | LineThicknessF 1.0 | |---------------------------------------------------------------| | mpLabelsOn NhlTBoolean RCSG | | PlotLabelsOn False | |---------------------------------------------------------------| | mpLabelDrawOrder NhlTDrawOrder RCSG | | MpLabelDrawOrder "PostDraw" | |---------------------------------------------------------------| | mpLabelFontHeightF NhlTFloat RCSG | | FontHeightF <dynamic> | |---------------------------------------------------------------| | mpLabelFontColor NhlTColorIndex RCSG | | FontColor True | +---------------------------------------------------------------+
NoCreate
you will receive a warning
message. Tick marks have not yet been implemented for map
projections. Except for TickMark resources, you can
also access resources for the PlotManager composite
annotation objects. However, the PlotManager object
modifies the access and behavior of some of the resources belonging to
these objects, as follows:
MapPlot allows access to two different databases containing points defining geophysical and political features of the globe. The original database, defined at a generally lower resolution, is out out of date with respect to national borders. However, because of its lower resolution, rendering is much faster for maps that span a major portion of the globe. Therefore the low resolution database remains the default. The new database defines twice as many named areas, has much higher resolution, and the political boundaries are up to date as of mid-year 1998. Because of the density of its data, it is best suited for plots of limited areas of the globe where the greater detail can be appreciated.
You can use MapPlot as a base plot on which one or more plot objects, such as a ContourPlot object, are overlaid, thereby transforming its elements into the current map projection. You can also control the order of drawing of MapPlot elements relative to each other and to the elements of any overlaid plot objects. Used in conjunction with area masking, these facilities allow you to limit overlay plots to the geographical boundaries for which their data have meaning. For instance, you can confine a contour plot of ocean temperatures to areas representing only the ocean. Note that unlike most plot objects, you cannot add the MapPlot as an overlay of another base plot. It can, however, be used as an annotation plot.
MapPlot supports grids representing latitude and longitude. You can mask the grids independently of area masking. Also supported are labels for some key features of the world map, including the poles, the equator, the Greenwich Meridian and the International Dateline. Finally, you can draw a perimeter, either rectangular or elliptical, around the projected map area.
The map projections provided by the MapTransformation must retain their intrinsic shape in order to be considered "correct" projections. However, in some situations you may not care whether this shape is preserved. The MapPlot object provides a resource, mpShapeMode, that allows you to decide whether or not to preserve the shape intrinsic to the projection. Moreover, if shape is to be preserved, you can decide whether you want to shrink the MapPlot viewport to fit around the projected area, which is centered in the originally specified viewport; or whether you want the viewport to remain as originally specified, even if the projected area cannot completely fill the space. In this case, you can get the values of the MapTransformation resources mpLeftMapPosF, mpRightMapPosF, mpBottomMapPosF, and mpTopMapPosF in order to find the actual boundaries of the projected area.
The string array resources allow individual specification of areas and
area categories. To the basic boundary specification (which might well
be NoBoundaries
), you add other areas you want to outline
or fill and subtract areas you want to mask. You do this using string
array specifier resources, of which there are three: mpOutlineSpecifiers,
mpFillAreaSpecifiers,
and mpMaskAreaSpecifiers.
Normally MapPlot determines the fill attributes for each area based on its group memberships within the fixed and dynamic area group arrays. However, for areas specified explicitly in the mpFillAreaSpecifiers array, you can override the usual fill attribute choices and pick the fill attributes explicitly. This will be explained further below.
MapPlot maintains two arrays of these area groups, accessible through the integer array resources mpFixedAreaGroups and mpDynamicAreaGroups. Both arrays are keyed to the mpAreaNames array, and within each array, the value of each element represents the area group assigned to an area. Most areas are assigned to different groups in the two area group areas, but in a number of cases (all areas representing water bodies, for instance), MapPlot assigns an area to the same group in both arrays.
The mpFixedAreaGroups array is sometimes known as the geophysical group array, because it provides the indexes that allow you to distinguish land areas from water areas. As its name implies, you cannot modify the mpFixedAreaGroups resource. Within this array, based on area type, MapPlot assigns each area in the database either to the Ocean group, to the Land group, or to the InlandWater group (i.e. to groups 1, 2, or 3).
The mpDynamicAreaGroups array is sometimes called the political group array, since the default assignment of dynamic area group numbers guarantees that adjoining politically distinct areas belong to different area groups. However, you are free to assign area groups within the dynamic area group array in any way you please. You may use all the available area groups from 1 through the current value of mpAreaGroupCount.
The elements of the array resources used to set fill color, fill pattern, and fill scale are indexed through the area group numbers. In other words, the first element of each of these arrays defines a fill attribute for group 0, the second an attribute for group 1, and so forth. For convenience, you can also access the fill attribute resources of groups 0 through 4 using a set of resources with names corresponding to the area group name. These resources have names with the following prefixes: mpDefault..., mpOcean..., mpLand..., and mpInlandWater.... You can think of these resources as aliases for the corresponding array resource element. When an array resource and a named alias resource accessing one of its elements are set in the same SetValues call, the named alias resource overrides.
Each of the three basic fill attributes supported by MapPlot, fill color, fill pattern, and fill pattern scale factor, provides both a scalar resource that you can use if you want to set all area groups to the same value, and an array resource that you use if you want to set each area group individually. The scalar fill attribute resources are mpFillColor, mpFillPattern, and mpFillScaleF. The array resources names, formed by pluralizing the scalar resource names (after removing the 'F' suffix, if present) are mpFillColors, mpFillPatterns, and mpFillScales. The boolean resources, mpMonoFillColor, mpMonoFillPattern, and mpMonoFillScale, specify use of the scalar resources when set True, and the array resources when set False. Note that if a Mono resource is set True, the named alias resources applying to that attribute are ignored, since they are, after all, only aliases for particular elements of the array resource.
For each attribute that has the Mono resource set False, MapPlot finds a group number for each area either from the fixed area group array or the dynamic area group array and uses that number as an index into the appropriate array resource. How does MapPlot decide when to index based on the fixed area group number and when to index based on the dynamic area group number? For fill areas specified using only the mpFillBoundarySets resource, MapPlot chooses between the area group arrays as follows:
NoBoundaries
Geophysical
National
USStates
GeophysicalAndUSStates
AllBoundaries
GeophysicalPriority
,
MapPlot picks an index from the mpFixedAreaGroups
array to determine fill attributes. Otherwise, it picks an index from
the mpDynamicAreaGroups
array. You may reverse the fill priority for individual areas within
the mpFillAreaSpecifiers
array by prepending the exclamation mark character ('!') to the area's
specifier string. For instance, if mpSpecifiedFillPriority
is set to PoliticalPriority
but you want Australia to be
displayed using its geophysical color, you would set the appropriate
mpFillAreaSpecifiers
element to the value "!australia".
SolidFill
, as determined by the value of the mpFillPattern resource.
If you want to explicitly specify the attributes of only certain of
the areas specified in the mpFillAreaSpecifiers,
while others base their fill attributes on area group memberships as
discussed in the previous section, there are special values you can
assign to indicate an "unset" value. For mpSpecifiedFillColors
use the special color index UnspecifiedColor
(-2); for mpSpecifiedFillPatterns
the special fill pattern index UnspecifiedFill
(-2); and
for mpSpecifiedFillScales
use the otherwise invalid value, 0.0.
By default, the specified fill attribute arrays directly set the attribute. In other words, the value of an element of mpSpecifiedFillColors represents an HLU color index, the value of an element of mpSpecifiedFillPatterns represents an HLU pattern index, and the value of an element of mpSpecifiedFillScales is a floating point number representing a fill scaling factor. However, if you set the resource mpSpecifiedFillDirectIndexing False, the values of these array elements are converted to integers and treated as group numbers. This facility allows you to use the specified fill attribute arrays to specify the fill attributes of an area indirectly by temporarily changing its group membership.
Noboundaries
, it is possible that
areas within the map projection may remain unspecified either as
filled or masked. MapPlot fills these areas
using the default fill attributes.
You can turn on grid masking and choose how to select the areas where
grid lines do not appear with the NhlTMapGridMaskMode
resource mpGridMaskMode. Note
that grid masking operates independently of area masking, although it
is possible to mask the grid over masked areas if you set
mpGridMaskMode to MaskMaskArea
.
You can set the line attributes for the grid and limb lines independently. Grid attributes are controlled using the resources mpGridLineColor, mpGridLineDashPattern, mpGridLineDashSegLenF, and mpGridLineThicknessF. You set limb line attributes using mpLimbLineColor, mpLimbLineDashPattern, mpLimbLineDashSegLenF, and mpLimbLineThicknessF.
1. MapPlot does not yet
support tickmarks since the Geographic
style has not
yet been implemented for the TickMark class.
2. MapPlot does not
support substring matching when using the new Ncarg4_1
map
database. Due to the hierarchical nature of the new database, this
capability is not as necessary as with the old database. Expect that if
and when new matching facilities are developed, they will not work the
same way as they do for the old database.
3. Eventually you should be able to add groups of points that define your own areas, give them arbitrary names and add these areas to the area names array.
NG4.1 Home, Index, Examples, Glossary, Feedback, Ref Contents, Ref WhereAmI?