public override Geometry Clone() { GLinearRing ring = new GLinearRing(); foreach (GPoint p in _vertexs) { ring.AddPoint(p.Clone() as GPoint); } return(ring); }
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); } } }
public void AddLineRing(GLinearRing r) { _rings.Add(r); }