/// <summary> /// /// </summary> /// <param name="reader"></param> /// <returns></returns> private MultiPoint ReadMultiPoint(XmlReader reader) { string strSRID = null; string strGID = null; int nSRID = -1; if (reader.Name == GeometryGml2.GmlMultiPoint && reader.HasAttributes) { ReadGeometryAttributes(reader, ref strSRID, ref strGID); if (strSRID != null && strSRID.Length > 0) { nSRID = Convert.ToInt32(strSRID); } } GeometryList points = null; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == GeometryGml2.GmlMultiPoint) { if (reader.HasAttributes) { ReadGeometryAttributes(reader, ref strSRID, ref strGID); if (strSRID != null && strSRID.Length > 0) { nSRID = Convert.ToInt32(strSRID); } } } else if (reader.Name == GeometryGml2.GmlPointMember) { if (points == null) { points = new GeometryList(); } Point point = ReadPoint(reader); if (point != null) { points.Add(point); } } } else if (reader.NodeType == XmlNodeType.EndElement) { if (reader.Name == GeometryGml2.GmlMultiPoint) { break; } } } if (points != null && points.Count > 0) { MultiPoint geometry = m_objFactory.CreateMultiPoint( points.ToPointArray()); if (nSRID > 0 || (strGID != null && strGID.Length > 0)) { geometry.CreateProperties(); if (nSRID > 0) { geometry.Properties.Add("SRID", nSRID); } if (strGID != null && strGID.Length > 0) { geometry.Properties.Add("GID", strGID); } } return(geometry); } return(null); }