The POLYGONS package consists of independent modules which together form a polygon creation and manipulation system within an automated mapping environment. The modules which form the POLYGONS package offer:
POLYGONS is designed to replace the existing Laser-Scan utilities POLCHK and CODSEG, as well as to create new facilities for the creation and manipulation of polygon data.
Within the VAX/VMS system IFF files can be treated as any other file type for file management purposes. To enable the user to distinguish an IFF file from a file of another type IFF files have by default the file extension '.IFF'. To provide great flexibility in the production environment IFF files are referenced by all the POLYGONS modules using logical name LSL$IF:. (For an explanation of logical names see the VAX/VMS document set). Logical name LSL$IF: is assigned to a device and directory specification either using the VMS DEFINE command or the Laser-Scan SI utility, (see the "IFF User Guide" for details).
Like VMS utilities, all POLYGONS modules generate VMS format messages and set VMS DCL symbol $STATUS on image exit. This is a valuable feature as a non-interactive process can test the success of a preceding POLYGONS module before proceeding. $STATUS will always be set to a VMS 32 bit condition code. Successful program execution will result in $STATUS being set to SS$_NORMAL. If an error occurred during POLYGONS processing, SS$_ABORT of varying severities, or a VMS System or CLI (Command Line Interpreter) condition code will be used. The user may simply test $STATUS for TRUE or FALSE within a DCL command procedure. If $STATUS is TRUE then processing was successful. If it is FALSE, an error occurred during processing. For a detailed description of the uses of $STATUS see the VAX VMS document set.
None of the POLYGONS modules handle 3 dimensional strings held in IFF ZS entries. Feature containing ZS entries will be copied unprocessed to the output file (if appropriate).
Once logged in the user must give two commands to initialise the POLYGONS package. Before the POLYGONS package can be used DCL symbols and logical names must be assigned to enable the user to invoke the modules. This is dome using a command procedure POLYGONSINI.COM which is supplied as part of the POLYGONS package. POLYGONSINI itself will be defined as a DCL symbol at your site and should be invoked thus: (see PREFACE for explanation of presentation conventions)
The POLYGONSINI command invokes a command procedure which defines a DCL symbol (the module name) for each of the POLYGONS modules. After using POLYGONSINI the user need only type the symbol name to activate the module of his choice.
As an alternative to explicitly typing the POLYGONSINI command each time the user wishes to use the POLYGONS package, the POLYGONSINI command may be placed in the users login file, or in the site dependent default login file.
The second command which must be given before using the POLYGONS package is the SI command. The SI command assigns the logical name LSL$IF: (or IF: for short) to the device-directory specification which contains the IFF file(s) that are to be manipulated. For example:
$ SI DUA3:[BUREAU.TRIALS.DIGITISING]
This will assign logical name LSL$IF: to the device and directory specification DUA3:[BUREAU.TRIALS.DIGITISING]
For further details of the SI command see the IFF User Guide.
POLYGONS utilities use the VMS Command Line Interpreter (CLI) to get and parse the program command line. POLYGONS utilities thus offer a VMS emulating user interface. As many POLYGONS utilities require floating point arguments to command, qualifiers Laser-Scan have developed an enhanced CLI based command line decoding mechanism. This enables the interpretation of numbers as either "real" or "integer".
The CLI allows the user to specify single and lists of integer qualifier arguments. If a list of arguments is specified, each argument must be separated by a comma and the whole list enclosed within parentheses, for example:
Where "EXAMPLE" is the command and /QUALIFIER is a qualifier to that command. There is one qualifier argument - 7
Where "EXAMPLE" is the command and /QUALIFIER is a qualifier to that command. There are 9 qualifier arguments within the argument list.
While developing the floating point command line data type (see Preface) it was recognised that there is a need for numeric range decoding within a VMS emulating command line. Argument ranges are specified with the syntax:
Where n is the lower limit of the range and m is the upper limit of the range (inclusive).
Such ranges are expanded in full. A maximum of 1024 arguments can be specified to any one command qualifier.
If we take our example argument list used above, i.e:
and now use the Laser-Scan argument range decoding mechanism:
we see that a more compact command line results but yields the same arguments. This is clearly an advantage in an IFF map processing environment where a single file could contain hundreds of attributes which the user may wish to reference via command line arguments.
Other examples are:
This yields 8 integer arguments: 2, 3, 4, 5, 6, 7, 8, and 9
This yields 9 integer arguments: 0, 1, 2, 3, 4, 5, 6, 7, and 8
If when ranges are decoded, a qualifier has more than 1024 arguments the Laser-Scan LSLLIB library issues the error message:
%LSLLIB-E-RESPARSOVF, result of parse overflowed buffer
and program execution is terminated.
Floating point value ranges are decoded in a different manner to integer value ranges. Instead of expanding the range to yield all its component integer values the command decoder merely leaves the range as a lower limit and an upper limit. Processing then takes account of any possible value lying between these limits (inclusive).
Select all features having a height which lies within the range 23.5 to 110.2 inclusive.