private IFeature ExtractGeographicData(XmlNode c) { string geoData = string.Empty; Geometry geo = null; if (_typeGeometry == FeatureType.Point) { foreach (XmlNode e in c) { if (e.LocalName == Geometry) { geoData = e.InnerText; } } string point = Convert.ToString(geoData); var pointValue = point.Split(' '); geo = new Point( Convert.ToDouble(pointValue[0], CultureInfo.InvariantCulture), Convert.ToDouble(pointValue[1], CultureInfo.InvariantCulture)); } if (_typeGeometry == FeatureType.Polygon) { foreach (XmlNode e in c) { if (e.LocalName == Geometry) { var t = e.FirstChild.OuterXml; var s = new XmlSerializer(typeof(MultiSurfaceType)); MultiSurfaceType multi = s.Deserialize(new StringReader(t)) as MultiSurfaceType; geo = GetPolygon(multi); // geoData = e.InnerText; } } } if (_typeGeometry == FeatureType.Line) { foreach (XmlNode e in c) { if (e.LocalName == Geometry) { var t = e.FirstChild.OuterXml; var s = new XmlSerializer(typeof(MultiLineStringType)); MultiLineStringType multi = s.Deserialize(new StringReader(t)) as MultiLineStringType; geo = GetPolyline(multi); // geoData = e.InnerText; } } } IFeature feat = Fea.AddFeature(geo); return(feat); }
private Geometry GetPolyline(MultiLineStringType multi) { var lines = new LineString[multi.LineStringMembers.Count]; int nLin = 0; foreach (LineStringPropertyType member in multi.LineStringMembers) { lines[nLin] = ExtractLineString(member); nLin++; } return(new MultiLineString(lines)); }
public static MultiLineString ToGeometry(this MultiLineStringType gmlLineString) { List <LineString> linestrings = new List <LineString>(); if (gmlLineString.lineStringMember != null) { foreach (var member in gmlLineString.lineStringMember) { linestrings.Add(member.LineString.ToGeometry()); } } return(new MultiLineString(linestrings)); }
public static MultiLineStringType ToGmlMultiLineString(this MultiLineString multiLineString) { MultiLineStringType gmlMultiLineString = new MultiLineStringType(); List <LineStringPropertyType> gmlLineStrings = new List <LineStringPropertyType>(); foreach (var lineString in multiLineString.LineStrings) { LineStringPropertyType lspt = new LineStringPropertyType(); lspt.LineString = ToGmlLineString(lineString); gmlLineStrings.Add(lspt); } gmlMultiLineString.lineStringMember = gmlLineStrings.ToArray(); return(gmlMultiLineString); }
private IBasicGeometry GetPolyline(MultiLineStringType multi) { ILinearRing[] lines = new LinearRing[multi.LineStringMembers.Count]; int nLin = 0; foreach (LineStringPropertyType member in multi.LineStringMembers) { lines[nLin]= ExtractLineString(member); nLin++; } return new MultiLineString(lines); }
public static MultiLineStringType ToGmlMultiLineString(this MultiLineString multiLineString) { MultiLineStringType gmlMultiLineString = new MultiLineStringType(); List<LineStringPropertyType> gmlLineStrings = new List<LineStringPropertyType>(); foreach (var lineString in multiLineString.LineStrings) { LineStringPropertyType lspt = new LineStringPropertyType(); lspt.LineString = ToGmlLineString(lineString); gmlLineStrings.Add(lspt); } gmlMultiLineString.lineStringMember = gmlLineStrings.ToArray(); return gmlMultiLineString; }