MAPBLM(3NCARG)
π MAPBLM β the 3NCARG glow-up π
okay bestie, sit DOWN, because we're talking about MAPBLM, from the NCAR GRAPHICS manual (that's the 3NCARG section, iykyk). This is the routine that draws geographical outlines, but masked against an area map you already built. It's giving "I have a region of interest and I only want the boundary lines that live inside it" energy. β¨
π¨ REAL TALK, GIRLIE: this routine uses whichever old outline dataset is selected by the value of the internal parameter'OU'. If you want the new map database"Earth..1"β which was created in 1998, so it's literally an icon β you have to call the EZMAPB routineMPLNDMinstead. Not optional. That's just the lore. π
β¨ SYNOPSIS β¨
CALL MAPBLM (IAMA,XCRA,YCRA,MCRA,IAAI,IAGI,MNOG,ULPR)
πΈ C-BINDING SYNOPSIS πΈ
#include <ncarg/ncargC.h>
void c_mapblm (int *iama, float *xcra, float *ycra,
int mcra, int *iaai, int *iagi, int mnog,
int (*ulpr)(float *xcra, float *ycra, int *ncs,
int *iaai, int *iagi, int *nai))
π¦ DESCRIPTION π¦
okay so here's the whole cast of characters, no skips, no cuts:
IAMAβ an input/output array, dimensioned as specified in a call to the AREAS routineARINAM, of typeINTEGER. This is the array holding the area map that boundary lines get masked against. It must have been initialized by a call toARINAM, and it should contain the edges you need to create the effect you want. Like, for example, an area map might define a region of interest β a zone where user data is available and where boundary lines are supposed to be drawn. Want more deets? Go read the reference document for the package named AREAS. πXCRAandYCRAβ scratch arrays, dimensioned at leastMCRA, of typeREAL.MAPBLMuses them in calls to the AREAS routineARDRLN, and eventually they get used in calls to the user-provided line-processing routineULPR.MCRAβ an input expression of typeINTEGER. It's the dimension of the arraysXCRAandYCRA. That's it, that's the whole job. πββοΈIAAIandIAGIβ scratch arrays, dimensioned at leastNOGI, of typeINTEGER.MAPBLMuses them in calls to the AREAS routineARDRLN, and eventually they get used in calls to the user-provided line-processing routineULPR. The mnemonics mean "Integer Array of Area Identifiers" and "Integer Array of Group Identifiers", respectively. Yes, the names are a whole mouthful. Yes, they ate. πNOGIβ an input expression of typeINTEGER. It's the dimension of the arraysIAAIandIAGI. The mnemonic stands for "Number Of Group Identifiers (of edges in the area map)", which is literally what determines the required dimension ofIAAIandIAGI. πULPRβ the name of the user-supplied line-processing routine. It must be declaredEXTERNALin the routine that callsMAPBLM, so the compiler and loader know it's a routine name to be called and not just some variable, bestie. Your routineULPRgets called once for every piece of a boundary line that comes out of the masking process, and it gets to decide whether to draw each piece or not draw it. Not me being dramatic, that's genuinely the deal.
ULPR gets called with a FORTRAN statement like this:
CALL ULPR (XCRA,YCRA,NCRA,IAAI,IAGI,NGPS)
where XCRA and YCRA are real arrays holding the normalized device coordinates of NCRA points defining a polyline that's part of some boundary line, and IAAI and IAGI are integer arrays holding NGPS area-identifier/group-identifier pairs for the area within which that piece of the line lies. π
And when you write ULPR, you can rely on a SET call having been done which makes it possible to use normalized device coordinates in calls to routines like CURVE, CURVED, GPL, etc. For more details, see the reference document for the package named AREAS β and specifically the description of the subroutine ARDRLN. π«Ά
π C-BINDING DESCRIPTION π
The C-binding argument descriptions are the same as the FORTRAN argument descriptions. Short and sweet, she said what she said. π
π₯ USAGE π₯
okay so this statement:
CALL MAPBLM (IAMA,XCRA,YCRA,MCRA,IAAI,IAGI,MNOG,ULPR)
does the same thing as this statement:
CALL MAPLOT
except β and this is the plot twist, literally β the boundary lines are drawn using calls to MAPITM and MAPIQM, which does the masking of the lines against the area map defined by the arguments in the call, and then passes the pieces resulting from the masking process to a user-provided line-drawing routine. main character behavior tbh. π
π EXAMPLES π
Use the ncargex command to see the following relevant example: cpex10.
(go look at it, it's worth it, fr fr π)
β ACCESS β
To use MAPBLM or c_mapblm, load the NCAR Graphics libraries ncarg, ncarg_gks, and ncarg_c β preferably in that order. Order matters, bestie. Don't fight the order. π€
π§ SEE ALSO π§
Online: ezmap, ezmap_params, mapaci, mapbla, mapdrw, mapeod, mapfst, mapgci, mapgrd, mapgrm, mapgtc, mapgti, mapgtl, mapgtr, mapint, mapiq, mapiqa, mapiqd, mapiqm, mapit, mapita, mapitd, mapitm, maplbl, maplmb, maplot, mappos, maproj, maprs, maprst, mapsav, mapset, mapstc, mapsti, mapstl, mapstr, maptra, maptri, maptrn, mapusr, mapvec, mpchln, mpfnme, mpgetc, mpgeti, mpgetl, mpgetr, mpglty, mpiaty, mpifnb, mpilnb, mpiola, mpiosa, mpipai, mpipan, mpipar, mpisci, mplnam, mplndm, mplndr, mplnri, mpname, mprset, mpsetc, mpseti, mpsetl, mpsetr, supmap, supcon, ncarg_cbind
Hardcopy: NCAR Graphics Contouring and Mapping Tutorial
π COPYRIGHT π
Copyright (C) 1987-2009 University Corporation for Atmospheric Research
The use of this Software is governed by a License Agreement.
and that's the whole page, bestie!! π this was the MAPBLM(3NCARG) page, straight out of the UNIX manual, dated March 1993 β yes, the 90s, she's vintage and she's still serving. π°οΈβ¨
π¦ where this page comes from
- epel 9: ncl-devel 6.6.2-59.el9 Β· LicenseRef-Callaway-BSD
- fedora 43: ncl-devel 6.6.2-58.fc43 Β· LicenseRef-Callaway-BSD
- fedora 44: ncl-devel 6.6.2-62.fc44 Β· LicenseRef-Callaway-BSD
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms