ArcInfo Workstation environment variables

(This information is modified from the ArcInfo Workstation desktop help system "ArcDoc")

System environment variables are available to modify how ArcInfo Workstation operates.

=About system environment variables=

Arc: &type %CANVASCOLOR% WHITE >>> import os >>> os.environ["CANVASCOLOR"] 'WHITE'
 * System environment variables can be set using the the Windows Control Panel or by use of a startup script.
 * Although these environment variables are accessible as AML scripting variables, they cannot be changed after an ArcInfo session has started.
 * System environment variables can be read in Python using os.environ

=Environment variables for ArcInfo windows=

AICULLING 
Specifies whether raster cells which face away from an observer are draped when using SURFACEDRAPE. This technique, referred to as backface culling, is only appropriate when the observer is above the surface. If you would like to view the underside of a raster drape you must first turn this variable OFF.

A boost in drawing performance and a reduction in output graphics file size are found when this variable is set to ON. The default is ON.

ARCDYNAMICPAN 
Controls how the graphic screen will be refreshed during dynamic panning in ARCEDIT. For a description of dynamic panning, see the ARCEDIT DYNAMICPAN command reference.

ARCINFOFONTNAME
Sets the font type used in form menus. If not set, the system default will be used. Pulldown and sidebar menus are not effected by this and the ARCINFOFONTSIZE variables; they always use the system default.

Fixed width fonts are recommended when setting this variable. An example of a fixed width font would be 'Courier' or 'Courier New'. Proportional fonts tend to cause misalignment of text.

ARCINFOFONTSIZE
Sets the font size used in form menus. If not set, the system default will be used. Pulldown and sidebar menus are not affected by this and the ARCINFOFONTNAME variables always use the system default.

The font size is based on screen resolution as shown in the table below.

If your system screen size is 1024x768 in pixel size, font size of 8 (or less) is recommended when using this variable.

ARCMAXBUFPOINTS
Allows you to specify the number of points to be passed to the ARCUSEDRAWBUFFER, buffer before points are drawn to a graphics windows. This and the ARCMAXBUFARCS variables can be used to fine tune your graphics windows' drawing speed. The default is 1500.

ARCMAXBUFARCS
Allows you to specify the number of arcs to be passed to the ARCUSEDRAWBUFFER buffer before arcs are drawn to a graphics window. This and the ARCMAXBUFPOINTS variables can be used to fine tune your graphics windows' drawing speed. The default is 12000.

ARCPANZOOM 
Specifies whether the pan/zoom button will appear on the graphic window frame in ARCEDIT and ARCPLOT. The button will appear by default. The pan/zoom button opens a menu for creating new graphic windows and modifying the display for a given window. See the WINDOWS command reference in ARCEDIT or ARCPLOT for a description of the menu.

ARCTRANSACTIONSESSION 
Controls how transactions are defined in ARCEDIT. Normally the TRANSACTION numbers increment based on the current edit coverage. When the variable is set to ON, TRANSACTION numbers increment based on the ARCEDIT session. It is recommended that the variable be set to ON for use with MULTIPLESELECT.

ARCUSEDRAWBUFFER 
Allows a user to access a drawing buffer which increases drawing speed of data in a graphics window. Rather than drawing directly to a display window, data are sent to this buffer which fills then draws to a graphics window. This process of filling the buffer then drawing on screen is repeated until all data is drawn. The buffer size is changeable using the ARCMAXBUFPOINTS and/or the ARCMAXBUFARCS variables which are described above.

The default is ON.

ARCWINDOWSTATS 
Specifies whether to display cursor position information (i.e., the x,y coordinates, distance, area and delta x,y). The default is to display this information on the frame of the main graphic window in ARCEDIT and ARCPLOT. The coordinate information is not displayed on other graphic windows.

CANVASCOLOR 
Controls whether the ArcInfo graphics window as set by the command DISPLAY 9999 will have a white background or a black background. By default, the background of the ArcInfo graphics window on black-and-white workstation monitors is white; on color workstations, the background is black. The CANVASCOLOR setting must be in uppercase letters.

set CANVASCOLOR=WHITE

CROSSHAIRCOLOR 
Sets the color that will be used to draw the cursor crosshairs in the ArcInfo graphics window. By default, the crosshair is white when the window is black, and black when the window is white. The crosshair color can be set to any color found in the file named colorfile, located under the %ARCHOME%\symbols directory. The CROSSHAIRCOLOR setting must be in uppercase letters.

CROSSHAIRCOLOR=RED

=Environment variables for ArcInfo symbology=

AICODESET 
Allows a local codeset file to be recognized in ArcInfo software programs. The codeset file provides a lookup table for the keyboard EUC (Extended UNIX Code) or ADE (ASCII Decimal Equivalent) and the number of the text character pattern or glyph to be displayed.

AICOLORFILE 
Allows a local colorfile file to be recognized in ArcInfo software programs. The colorfile file stores the color name specifications used for symbology.

AIFONTINDEX 
Allows a local fontindex file to be recognized in ArcInfo software programs. The fontindex file is used to initialize the installed fonts when the ARCEDIT or ARCPLOT programs are started.

=Environment variables for system integration=

APRESSTMPDIR 
Sets the location of the temporary space used with ArcPress. This is the location on the disk where scratch files are created while the rasterization process is running—files the software removes when it's completed. As a general rule, choose a location that contains at least four times the size of the input file being processed.

ARCBLOCKEDCHECK 
The ARCBLOCKEDCHECK environment variable controls whether or not ArcInfo checks for access conflicts when updating a coverage. Setting this variable to 'yes' reduces the chances of data getting corrupted when access conflicts arise. By default, this variable is not defined.

Certain ArcInfo commands require exclusive access to the datasets they work with. ARC level commands include BUILD, CLEAN, GENERATE, INDEX, KILL, RENAME and RENODE. ARCEDIT commands include SAVE and KILL. LIBRARIAN commands include PUTTILE and INSERT. If another user accesses a coverage while these commands are being executed, the commands may fail and even corrupt the data.

The ARCBLOCKEDCHECK environment variable should be set to 'yes' whenever ArcInfo users cannot be insured exclusive access to the data they are updating.

ARCMEMSIZE
Controls how much virtual memory ArcInfo (except for the ARC TOPOGRID command) or ArcStorm allocates per ARC session before switching to ArcInfo swap space. Use the GRIDALLOCSIZE variable for this command. (See the GRIDALLOCSIZE variable reference for more information.)

The default size for virtual memory used by ArcInfo for each ARC session is 36MB. However, ARCMEMSIZE allows you to increase this limit according to how much virtual memory you have on your system. Setting ARCMEMSIZE to 128MB, for instance, gives an ArcInfo session up to 128MB of virtual memory to work with (first RAM, then system swap space) before it will start to use ArcInfo swap space. ArcInfo swap space is temporary scratch files in the local workspace, so it is the slowest performer.

Use ARCMEMSIZE when you have quite a bit of virtual memory available on your system. Typically this is a server class machine in the range of 256MB of RAM or more.

Use the following formula to figure out how much virtual memory is configured:

NT - virtual memory = RAM + Page File UNIX - virtual memory = RAM + Swap Space

Note that while adding RAM and setting ARCMEMSIZE is the best way to increase your performance, you can expand your Page File (NT) or Swap Space (UNIX), instead, if additional RAM is not available.

The numeric used by the ARCMEMSIZE variable is based on bytes, not kilobytes (KB) or megabytes (MB). Because hardware RAM and system swap space is distributed based on MB, you need to convert MB to bytes. To do this, use the following equation:

n X 1024 X 1024

where n = number of MB of virtual memory you wish to assign to the ARCMEMSIZE variable.

For example, if you want to set the variable equal to 128MB, the calculation would be as follows:

128 X 1024 X 1024 = 134217728

Set ARCMEMSIZE to 134217728

(A more appropriate number on modern desktops would be 256 MB (268435456), or 512 MB (536870912).

If you were to set ARCMEMSIZE equal to 128 instead of 134217728, your system would return memory related errors because you have reduced the amount of ArcInfo's usable virtual memory to 128 bytes.

Setting this variable affects each ArcInfo session. Hence, if you were to set this variable equal to 134217728 bytes, each Arc session would take up to 134217728 bytes of virtual memory.

Over committing your virtual memory resources with the ARCMEMSIZE variable can severely reduce certain ArcInfo session(s) performance. You may also have to estimate other processes that are running and their needs for virtual memory into your calculations, i.e. Oracle use, desktop use, etc. Setting the ARCMEMSIZE variable too high may cause some ArcInfo session(s) to rely on ArcInfo swap space, thereby slowing performance considerably.

You can set ARCMEMSIZE either to distribute only RAM resources evenly to multiple ArcInfo sessions or to distribute virtual resources evenly to multiple ArcInfo sessions.

The latter will tend to favor the first ArcInfo sessions. Later sessions may end up relying heavily on ArcInfo swap space, slowing the last sessions significantly.

If you use the first option, you must only consider RAM to calculate the ARCMEMSIZE variable. Say that a server machine with 512MB of RAM that will have up to 4 users of ArcInfo at one time. For the best even distribution of RAM resources for these 4 users, divide 4 into 512, giving you 128MB per user.

Considering that you may have other processes and applications for which you would want to use RAM for best performance, you might need to adjust this number as need be for best utilization of RAM for all application processing.

If you use the second option, you have to consider both RAM and system swap space to calculate the ARCMEMSIZE variable. Take a server machine with 512MB of RAM and 2048MB of system swap space, and up to 4 users of ArcInfo at one time. For the best even distribution of virtual memory resources for these 4 users, divide 4 into 2560 to get 640MB, which is larger than the amount of RAM you have on your system. One ArcInfo session could conceivably take up all the RAM usage, forcing the other users to use system swap space or worse, ArcInfo swap space.

Even though this last situation is unlikely to happen, it's better to over allocate resources and adjust as necessary than to under allocate. Virtual memory monitors that display both physical RAM memory use and system swap space use can be used for your analysis. You should also close any ArcInfo sessions you aren't using to free up virtual memory for the ones you are using.

ARCRQSKBYTES
The environment variable ARCRQSKBYTES controls how much virtual memory in kilobytes (KB) ArcInfo allocates for Relate Quick Search (RQS) Processing. RQS processing is used to optimize performance when executing ARCEDIT SELECT statements with linear relates. The default size for virtual memory potentially used by the RQS process is 1 megabyte (MB). This should be sufficient to handle most typical SELECT queries. ARCRQSKBYTES allows you to increase or decrease this limit according to how much virtual memory may be needed for the SELECT queries you will be executing.

To determine the amount of virtual memory needed to take full advantage of RQS processing, use the equation:

TOTAL_MEMORY_NEEDED = NRECS * RECSIZE

NRECS = total number of records in the related INFO table

RECSIZE = size (in bytes) of the related column

To establish RECSIZE, determine the data type of the related column. If the data type is Character, the RECSIZE will be the item width (in bytes). For all other data types (e.g. Integer, Binary, Number, Binary Float, and Date), the RECSIZE will be 8 bytes.

For example, if your related INFO table had 1000 records and the related column was Integer type (8 bytes), then:

TOTAL_MEMORY_NEEDED = 1000 (records) x 8 (bytes) = 8000 bytes = 8 KB.

In this case you would only need 8 KB to take full advantage of RQS processing. The default limit of 1 MB (1000 KB) virtual memory used for RQS processing is sufficient.

Another example is if your related INFO table has 100000 records and the related column was Character type with an item width of 32 bytes, then:

TOTAL_MEMORY_NEEDED = 100000 (records) x 32 (bytes) = 3200000 bytes = 3,200 KB.

In the above case you would need 3200 KB to take full advantage of RQS processing. RQS processing uses 1 MB (1000 KB) of virtual memory as the default. You would want to increase the amount of virtual memory used by RQS processing to 3.2 MB (3200 KB). You would do this by setting the ARCRQSKBYTES to the total number of kilobytes desired. For this case, set ARCRQSKBYTES to 3200.

RQS processing can be disabled completely by setting ARCRQSKBYTES to 0.

ARCTMPDIR 
Controls where ArcInfo creates temporary scratch files. By default, ArcInfo creates these files in the current workspace. You must have write permission to the current workspace, otherwise these files are created under the \tmp directory of your machine. If your \tmp directory is not large enough to accommodate these files, use the ARCTMPDIR variable to set the default location to a directory that you have write permission to.

Note: Setting this variable locally can increase performance when working with data located on an NFS mapped UNIX disk.

ESRI_LOCAL_LOCKMGR 
Allows users to specify that an ArcInfo session should use a global lock manager versus a local lock manager. By default the variable is set to ON. This means an ArcInfo session will always start a local lock manager process. To avoid starting the local lock manager process, set this variable to OFF. When set to OFF, ArcInfo will automatically utilize an existing global lock manager service. If no global lock manager service is running, ArcInfo will not utilize lock management. For more information on the lock manager refer to the white paper: Multiple User Access for Coverages and Shapefiles

GRIDALLOCSIZE
Allocates virtual memory for the ARC command TOPOGRID. Setting this variable will allow users with more than the recommended amount on their machine to create larger grids with TOPOGRID.

- the number of megabytes of virtual memory to be allocated. The required amount of memory can be calculated based upon the dimensions of the desired output grid, as nrows*ncolumns*0.000014.

For additional information, refer to the TOPOGRID command reference.

OVERLAYALLOCSIZE
Allocates memory for the ARC command AREAQUERY. Setting this variable allows users to control the amount of memory used for the AREAQUERY overlay process. Users can limit or increase the amount of memory allocated to the AREAQUERY operation to more closely match the memory available on their machine.

- the maximum number of megabytes of memory to be allocated. The default maximum memory allocation is 200 megabytes. AREAQUERY will use approximately one half of the specified maximum (if available) to improve the performance of the overlay process.

For additional information, refer to the AREAQUERY command reference.

PRINTER 
Determines where to send the results of the INFO SPOOL command. If not set, the INFO SPOOL command will use the system default printer which is set up by the Printer Manager. To determine which printer is set up to be the system default, look in the system's Print Manager.

If you want the output of the SPOOL command to print on a different printer, you must set the 'PRINTER' variable. For example, to send the output to a laser printer defined as 'laser', use the following command:

PRINTER=laser

USEBACKINGSTORE <ON | OFF>
Controls whether ArcInfo will maintain a copy of all graphic windows within memory.

The default is ON.

=Other environment variables=

These environment variables are set at install time or at startup by the software.

ARCHOME, ARCHOME_USER
This is the ArcInfo Workstation install folder, for example:

C:\> set ARCHOME ARCHOME=D:\ArcGIS\arcexe10x ARCHOME_USER=D:\ArcGIS\arcexe10x

HOMEDRIVE, HOMEPATH
These variables point to the user's home (or "startup") folder. When ArcInfo Workstation or one of its subsystems launches, it will look for text files named ".<program_name>" (.arc, .arcplot, .arcedit, .grid, or .tables) and will run them if found. These hidden startup files can be used to set user preferences for every session.

These variables normally point to the Windows or Unix home folder, for example: C:\> set HOME HOMEDRIVE=C: HOMEPATH=C:\Users\wmoreland

For more details, see the startup AML script in the path:

ARCGISHOME
ARCGISHOME is the install folder for ArcGIS Desktop 8.x and 9.x. ArcGIS 10.x does not set this environment variable as part of the installation.

C:\> set ARCGISHOME ARCGISHOME=D:\ArcGIS\Desktop10.0\

In ArcGIS python scripts, the best way to locate this path is the arcpy (or 9.x gp) GetInstallInfo method: >>> import arcpy >>> arcpy.GetInstallInfo("desktop")["InstallDir"] u'D:\\ArcGIS\\Desktop10.0\\'