示例#1
0
        public override Geometry Clone()
        {
            GLinearRing ring = new GLinearRing();

            foreach (GPoint p in _vertexs)
            {
                ring.AddPoint(p.Clone() as GPoint);
            }
            return(ring);
        }
示例#2
0
        public void LoadFromWKT(string ppszDstText, string format)
        {
            //string s = (string)ppszDstText.Clone();
            //s = s.Remove(0, 1);
            //s = s.Remove(s.Length - 2, 2);
            //string[] pts = s.Split(new char[] { ';' });
            //for (int i = 0; i < pts.Length; i++)
            //{
            //    GLinearRing gp = new GLinearRing();
            //    if (pts[i] != "")
            //    {
            //        gp.LoadFromWKT(pts[i]);
            //        AddLineRing(gp);
            //    }
            //}
            _rings.Clear();
            if (string.IsNullOrEmpty(ppszDstText))
            {
                return;
            }
            int    start = ppszDstText.IndexOf('(') + 1;
            int    end   = ppszDstText.LastIndexOf(')');
            string subs  = ppszDstText.Substring(start, end - start);
            int    left  = 1;

            while (left != 0)
            {
                start = subs.IndexOf('(');
                end   = subs.IndexOf(')');
                left  = subs.Length - end - 1;
                GLinearRing gr = new GLinearRing();
                gr.LoadFromWKT(subs.Substring(start, end - start + 1));
                AddLineRing(gr);
                if (left > 0)
                {
                    subs = subs.Substring(end + 1, subs.Length - 1);
                }
            }
        }
示例#3
0
 public void AddLineRing(GLinearRing r)
 {
     _rings.Add(r);
 }