Polygonal regions can be represented different ways in GDB, such as a closed polyline, which is a vector with the same last vertex as the first. These are sometimes called simple whole polygons.

To represent polygons with holes (doughnuts) or regions that consist of multiple islands, multiple ring polygons essentially consist of a series of whole polygons, each of which is called a ring.

If one ring is contained in another, it represents an internal boundary. The area that is part of the polygon is the area between the outer and inner ring. If the rings are independent, they represent different islands, all of which are considered the same region. Multi-ring polygons are not polygons in the geometric sense, but they do represent regions, whether continuous (connected) or not.

Multi-ring polygons are represented in GDB as regular shapes, with the vertices of all the rings all aggregated in the vertex list. The boundary between different rings is established by entries in an attribute called RingStart. This is basically a list of vertex numbers, each of which is the first in a new ring. There is no entry for vertex 1, which is implicitly the start of the first ring.


For two islands, (1) and (4), island (1) has two holes (2) and (3), and island (4) has one hole (5).

(1)                     (4)
+-------------+         +------+
| (2)  (3)    |         | (5)  |
| +-+  +----+ |         | +-+  |
| | |  |    | |         | | |  |
| +-+  |    | |         | +-+  |
|      +----+ |         +------+
|             |

The example represents one shape with 25 vertices and a RingList attribute of { 5, 10, 15, 20 }, with the vertex list consisting of the points of rings 1, 2, 3, 4, and 5. There is no expected order of rings; therefore, holes can appear before the outer ring defining an area.


Vertex numbers are considered to start from zero for the purposes of the RingStart variable; therefore, ring (1) consists of vertices 0 - 4, and vertex 5 is the first vertex of ring (2).

When drawn by ring-aware applications, the line segment connecting one ring to the next is not drawn. In the above case, no line would be drawn between vertex 4 and 5.

For shapes with the RingStart attribute, it is not a strict requirement that the rings represent closed polygons. If a ring is not closed, it does not represent a region boundary; however, it is still drawn with the same disconnection logic as a closed ring. The concept of rings can be overloaded to represent a series of spatially disconnected polylines that share a common attribute record. This concept can be used for interrupted streets, for example.

© PCI Geomatics Enterprises, Inc.®, 2024. All rights reserved.