Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
 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;
 }