/// <summary> /// A MultiPoint is simple if it has no repeated points. /// </summary> public virtual bool IsSimple(MultiPoint mp) { if (mp.IsEmpty) return true; ISet points = new ListSet(); for (int i = 0; i < mp.NumGeometries; i++) { Point pt = (Point)mp.GetGeometryN(i); Coordinate p = pt.Coordinate; if (points.Contains(p)) return false; points.Add(p); } return true; }
/// <summary> /// /// </summary> /// <param name="multiPoint"></param> /// <returns></returns> protected virtual int SetByteStreamLength(MultiPoint multiPoint) { int count = InitValue; foreach (Point p in multiPoint.Geometries) count += SetByteStreamLength(p); return count; }
/// <summary> /// /// </summary> /// <param name="multiPoint"></param> /// <param name="writer"></param> protected virtual void Write(MultiPoint multiPoint, XmlTextWriter writer) { writer.WriteStartElement("MultiPoint"); for (int i = 0; i < multiPoint.NumGeometries; i++) { writer.WriteStartElement("pointMember"); Write(multiPoint.Geometries[i] as Point, writer); writer.WriteEndElement(); } writer.WriteEndElement(); }
protected IFeature GetMultiPoint(int index) { ShapeRange shape = ShapeIndices[index]; List<Coordinate> coords = new List<Coordinate>(); foreach (PartRange part in shape.Parts) { int i = part.StartIndex; foreach (Vertex vertex in part) { Coordinate c = new Coordinate(vertex); coords.Add(c); if (M != null && M.Length != 0) c.M = M[i]; if (Z != null && Z.Length != 0) c.Z = Z[i]; i++; } } MultiPoint mp = new MultiPoint(coords); return new Feature(mp); }