A library for efficient storing great amount (>10 million) of 2D polygons in RAM and quick operations on them. The product is especially optimized for operations on large polygon sets. C++, STL, COM, ATL, MFC
A framework for developing custom GIS components (extensions) that can be used in both desktop and Web applications. .NET Framework 2.0/3.5/4.0, COM, C#, HTML, Java Script, ArcGIS 9.x/10
Migration of GeoFES to the Web while retaining the existing GUI and the ability to run on the desktop (ArcMap). .NET Framework 3.5/4.0, C#, COM, ArcGIS 9.x/10 (ArcObjects, ArcGIS Server, ArcGIS API for WPF, ArcGIS Desktop)
Migration of WISYS explorers to the Web while retaining the existing GUI and the ability to run on the desktop (ArcMap). .NET Framework 2.0, C#, COM, HTML, Java Script, ArcGIS 9.x (ArcObjects, ArcGIS Server Web ADF for .NET)
"We cooperate with your company since 1998.
During this time we were able to convince us of the high quality of your software products,
which is above all due to the good expertise of your employees.
PolygonLib is a software library for quick clipping operations on 2D polygons and polygon sets. It has been especially optimized for efficient storing great amount (> 10 million) of polygons in RAM and operations on large polygon sets.
The product consists of:
A portable C++ library with much optimized performance and memory utilization.
A COM library that provides COM wrappers for objects of the C++ library. The wrappers are obtained from pools and only for objects referenced by the client, thus minimizing the COM overhead.
The library can be used in various kinds of applications (CAD, GIS, modeling systems, graphics editors, etc.) written in C++, C#, Pascal, VB and other languages allowing use of COM.
It is already used in the FEFLOW modeling system and the FDAT project.
The product is most suitable for use in GIS software, as it uses spatial indices and has been optimized for polygons with common boundaries (see the performance test results below).
A polygon can have several disjoint areas and holes.
Automatic splitting of self-intersecting boundaries.
The node based model of polygons (no duplicated vertices) is maintained automatically thus reducing the size of the used memory.
Spatial queries (for polygons, edges and nodes) that are optimized per built-in spatial indices (B-tree for nodes and R-tree for polygons) that are maintained automatically.
Clipping operations on polygons:
Boolean operations (intersection, union, subtraction) on polygons and polygon sets.
Join of two polygon sets: union, whose result is represented by maximal count of not overlapping polygons (the overlaps and the results of their subtraction from other polygons).
Union of a polygon set (see the second screenshot).
Split of a polygon with a polyline.
Buffering (inflating/deflating) of a polygon by a distance.
The numerical robustness (avoiding extraneous vertices) of the operations is achieved without inserting intersection points into original polygons.
Main Competitive Advantages
Much optimized memory utilization (see the test results below)
Built-in spatial indices
Much optimized performance of Boolean operations on polygons with large number of vertices (see the test results below)
Very optimized Boolean operations on polygon sets (see the test results below)
Performance Comparison with 2 well known Polygon Clipping Libraries
We have compared the performance and memory utilization of the COM version of PolygonLib with those of 2 well known polygon clipping libraries.
The testing was performed on a PC with Intel Core 2 (2 GHz) CPU and 2 GB of RAM under Windows XP.
The results are listed in the following table (the best results are marked bold in the table).
Memory use, MB
Duration of operations on polygons depending on total number of vertices, ms
1 A mesh of 42000 triangles and a set of 2100 geographical areas. 2 A mesh of 199000 triangles and a set of 15000 geographical areas. * A polygon set can be defined in GPC only as a polygon with many boundaries.
The polygons used in the testing are contained in the archive of the evaluation version of the product (see below).
You can download the evaluation version of PolygonLib here:
A Windows application for testing main possibilities of the C++ library. It allows loading polygons and polygon sets from .shp files, their visualization and operations on them (see the screenshots above).
Test polygon data as .shp files.
API of the both libraries and short descriptions with class diagrams and code samples.
You can download also a .NET library for accessing shapefiles and quick geometric operations on them: