Power Line Systems, Inc. 610 N. Whitney Way, Suite 160
Madison, WI 53705, U.S.A.
Phone: (608) 238-2171, Fax: (608) 238-9241
Email: info@powline.com
Home Search News Products

Memory Management in PLS-CADD

The following discussion applies to the 32 bit edition of PLS-CADD only. The x64 edition is only limited by the amount of memory in your computer.

Several industry trends are contributing to a desire to load ever larger XYZ point files into PLS-CADD. The wide availability of reasonably priced high performance LiDAR systems is one of them. Another is the use of PLS-CADD as a vegetation management tool. In both cases the resulting files can be a challenge to work with. This technical note will answer some commonly asked questions as well as give you the background information necessary to make intelligent decisions about managing this mass of data.

For the sake of efficiency PLS-CADD stores XYZ data sequentially in a single piece of memory (an array). This provides for extremely fast operation, but imposes the requirement that the system have a contiguous piece of memory that is large enough to store all of your points. When Windows cannot supply this memory you run into trouble.

One frequently asked question is: "how many points can I load"? The answer can be arrived at via a simple formula:

Maximum # XYZ Points = (Largest available memory block) / (Size of XYZ Point)  

Each XYZ point consumes 48 bytes (assuming there are no plan or profile comments associated with it). The size of the largest contiguous block depends on which version of Windows you are running as shown in the table below:

Theoretical XYZ Point Limits for the 32 bit Edition of PLS-CADD
Operating System Service Pack or Hotfix Largest Contiguous Block (MB) Total Available Memory (MB) Number of XYZ Points (millions)
Windows 2000 SP4 1133 1981 23.6
Windows XP SP2 550 1969 11.4
Windows XP SP2 w/hotfix 894472 809 1987 16.8
Windows XP SP3 800 1961 16.7
Windows Vista RTM and SP1 1668 1935 34.7
Windows Vista x64 (also XP x64) RTM and SP1 2047 3999 42.6
Windows 7 RC 1570 1923 34.2

Note that these limits are taken from clean installs of Windows. It is possible that dramatically less memory may be available and a correspondingly fewer number of points may be loaded if the system has other software installed that is poorly behaved. In other words, the limits given above are the best that you can hope to achieve.

The memory sizes listed are virtual memory, not physical memory (RAM). In all cases, we recommend you have at least 2GB of RAM installed in the system. The virtual memory is also known as the address space. The amount of address space that Windows makes available to PLS-CADD is ultimately what governs how many points you can load.

You will note that Windows XP SP2 took a large step backwards in terms of the number of points which may be loaded. This is due to a bug in the original Windows XP which was fixed in Service Pack 1 and subsequently reintroduced in Service Pack 2. Microsoft has a hotfix available which fixes this problem in SP2. One of the primary benefits of Windows Vista is the increase in the number of points that may be loaded.

Memory Preallocation

Preallocate XYZ Points Dialog Consider two different scenarios: In the first PLS-CADD asks Windows for a large piece of memory and in the other PLS-CADD starts by asking for a small piece of memory and then repeatedly tries to grow it until it is the same size as the large chunk. Due to a problem known as fragmentation, you can often get twice as much memory in the former scenario as you could in the later. Restating this in a PLS-CADD context, it is better to preallocate enough memory for the maximum number of XYZ points you could have than it is for PLS-CADD to repeatedly attempt to grow your XYZ memory as you add points. The F1/Survey and Terrain Features/Preallocate memory for XYZ points feature allows you to do just this. The only caveat is that you should not preallocate any more memory than you need since the memory reserved via preallocation is not available for other data such as raster or vector attachments, PFL points, etc. The preallocation dialog is shown to the right.

How can I load more points?

What can you do if you have preallocated memory and still cannot load all of your points? Here are a few suggestions:

  1. If running on a 32 bit edition of Windows then upgrade to a 64 bit edition which will allow you to run the x64 edition of PLS-CADD. The x64 edition of PLS-CADD can access an effectively unlimited amount of memory.
  2. If running on Windows XP SP2 then apply this hotfix available from Microsoft. It fixes a bug in XP SP2 that prevents PLS-CADD from making full use of the memory in your system.
  3. Make sure that you do not have any attachments consuming memory when you try to load XYZ points. In Drafting/Attachments/Attachment Manager hide all of your raster images and detach any DXF files. Then save your project, exit PLS-CADD, restart it and reopen the project.
  4. Make sure that you have filtered data and not the raw LiDAR data directly from the flight. Filtering LiDAR data down to the set of points that are meaningful for your design may allow you to avoid the entire problem of too many points. Note that not every LiDAR vendor provides a filtered data set.

Just because you can load points doesn't necessarily mean you should. Each XYZ point occupies memory that could otherwise be used for PFL points, raster and vector attachments, etc. Further, many operations in PLS-CADD take a little more time with each additional point you load. So, you want to have enough points to build an accurate profile and detect all possible clearance violations, but no more than that.

Further Reading

© 2008 Power Line Systems, Inc. All Rights Reserved.