private EsriPolygon ReadPolygon(Dimension dimension)
        {
            EsriPolygon polygon = new EsriPolygon();

            uint ringCount = wkbReader.ReadUInt32();

            if (ringCount > 0)
            {
                uint exteriorRingCount  = wkbReader.ReadUInt32();
                EsriPointCollection pts = new EsriPointCollection();
                for (int i = 0; i < exteriorRingCount; i++)
                {
                    pts.Add(ReadPoint(dimension));
                }
                polygon.Rings.Add(pts);

                for (int i = 1; i < ringCount; i++)
                {
                    pts = new EsriPointCollection();

                    uint interiorRingCount = wkbReader.ReadUInt32();
                    for (int j = 0; j < interiorRingCount; j++)
                    {
                        pts.Add(ReadPoint(dimension));
                    }
                    polygon.Rings.Add(pts);
                }
            }

            return(polygon);
        }
 public void Concat(EsriPointCollection pc)
 {
     if (pc != null)
     {
         int num = pc.Count;
         for (int i = 0; i < num; i++)
         {
             this.Add(pc[i]);
         }
     }
 }
        private EsriPolyline ReadLineString(Dimension dimension)
        {
            EsriPolyline lineString = new EsriPolyline();

            uint pointCount = wkbReader.ReadUInt32();

            EsriPointCollection pts = new EsriPointCollection();

            for (int i = 0; i < pointCount; i++)
            {
                pts.Add(ReadPoint(dimension));
            }

            lineString.Paths.Add(pts);

            return(lineString);
        }