Exemple #1
0
        /// <summary>
        /// returns a list of nearby points
        /// </summary>
        /// <param name="longitude"></param>
        /// <param name="latitude"></param>
        /// <param name="radius_mm"></param>
        /// <returns></returns>
        public ArrayList isNear(float longitude, float latitude, float radius_mm)
        {
            ArrayList result = new ArrayList();

            for (int i = 0; i < Points.Count; i++)
            {
                kmlPlacemarkPoint pt = (kmlPlacemarkPoint)Points[i];
                if (pt.DistanceTo(longitude, latitude) < radius_mm)
                {
                    result.Add(pt.Name);
                }
            }
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// returns the point with the given location name
        /// </summary>
        /// <param name="location_name"></param>
        /// <returns></returns>
        public kmlPlacemarkPoint GetPoint(String location_name)
        {
            kmlPlacemarkPoint pt = null;
            int i = 0;

            while ((i < Points.Count) && (pt == null))
            {
                kmlPlacemarkPoint p = (kmlPlacemarkPoint)Points[i];
                if (p.Name == location_name)
                {
                    pt = p;
                }
                i++;
            }
            return(pt);
        }
Exemple #3
0
        /// <summary>
        /// return an xml element
        /// </summary>
        /// <param name="doc">xml document to add the data to</param>
        /// <returns>an xml element</returns>
        public XmlElement getXml(XmlDocument doc)
        {
            XmlElement elem = doc.CreateElement("Document");

            doc.DocumentElement.AppendChild(elem);
            xml.AddTextElement(doc, elem, "name", Name);
            xml.AddTextElement(doc, elem, "description", Description);

            if (Polygons.Count > 0)
            {
                XmlElement elemPoly = doc.CreateElement("Polygons");
                elem.AppendChild(elemPoly);
                for (int i = 0; i < Polygons.Count; i++)
                {
                    kmlPlacemarkPolygon poly = (kmlPlacemarkPolygon)Polygons[i];
                    elemPoly.AppendChild(poly.getXml(doc));
                }
            }

            if (Points.Count > 0)
            {
                XmlElement elemPoints = doc.CreateElement("Points");
                elem.AppendChild(elemPoints);
                for (int i = 0; i < Points.Count; i++)
                {
                    kmlPlacemarkPoint pt = (kmlPlacemarkPoint)Points[i];
                    elemPoints.AppendChild(pt.getXml(doc));
                }
            }

            if (Paths.Count > 0)
            {
                XmlElement elemPaths = doc.CreateElement("Paths");
                elem.AppendChild(elemPaths);
                for (int i = 0; i < Paths.Count; i++)
                {
                    kmlPlacemarkPath path = (kmlPlacemarkPath)Paths[i];
                    elemPaths.AppendChild(path.getXml(doc));
                }
            }

            return(elem);
        }
Exemple #4
0
        /// <summary>
        /// parse an xml node to extract data
        /// </summary>
        /// <param name="xnod"></param>
        /// <param name="level"></param>
        public void LoadFromXml(XmlNode xnod, int level, String ObjectType)
        {
            XmlNode xnodWorking;

            if (xnod.Name == "name")
                Name = xnod.InnerText;

            if (xnod.Name == "description")
                Description = xnod.InnerText;

            if (xnod.Name == "Polygons")
            {
                ObjectType = xnod.Name;
                Polygons.Clear();
            }

            if (xnod.Name == "Points")
            {
                ObjectType = xnod.Name;
                Points.Clear();
            }

            if (xnod.Name == "Paths")
            {
                ObjectType = xnod.Name;
                Paths.Clear();
            }

            if (xnod.Name == "Placemark")
            {
                if (ObjectType == "Polygons")
                {
                    kmlPlacemarkPolygon poly = new kmlPlacemarkPolygon();
                    poly.LoadFromXml(xnod, level);
                    Polygons.Add(poly);
                }
                if (ObjectType == "Points")
                {
                    kmlPlacemarkPoint pt = new kmlPlacemarkPoint();
                    pt.LoadFromXml(xnod, level);
                    Points.Add(pt);
                }
                if (xnod.Name == "Paths")
                {
                    kmlPlacemarkPath path = new kmlPlacemarkPath();
                    path.LoadFromXml(xnod, level);
                    Paths.Add(path);
                }
            }

            // call recursively on all children of the current node
            if (xnod.HasChildNodes)
            {
                xnodWorking = xnod.FirstChild;
                while (xnodWorking != null)
                {
                    LoadFromXml(xnodWorking, level + 1, ObjectType);
                    xnodWorking = xnodWorking.NextSibling;
                }
            }
        }
Exemple #5
0
 public void Add(kmlPlacemarkPoint pt)
 {
     Points.Add(pt);
 }
Exemple #6
0
 /// <summary>
 /// add a waypoint at the specified position
 /// </summary>
 /// <param name="name"></param>
 /// <param name="position_x_mm"></param>
 /// <param name="position_y_mm"></param>
 public void AddWaypoint(String name, float position_x_mm, float position_y_mm)
 {
     kmlPlacemarkPoint waypoint = new kmlPlacemarkPoint();
     waypoint.SetPositionMillimetres(position_x_mm, position_y_mm);
     worksites.Add(waypoint);
     SaveWorkSite("worksites.kml");
 }
Exemple #7
0
 /// <summary>
 /// adds a waypoint for the current robot position to the set of work sites
 /// </summary>
 /// <param name="name"></param>
 public void AddWaypoint(String name)
 {
     kmlPlacemarkPoint waypoint = new kmlPlacemarkPoint();
     waypoint.SetPositionMillimetres(x, y);
     worksites.Add(waypoint);
     SaveWorkSite("worksites.kml");
 }
Exemple #8
0
        /// <summary>
        /// parse an xml node to extract data
        /// </summary>
        /// <param name="xnod"></param>
        /// <param name="level"></param>
        public void LoadFromXml(XmlNode xnod, int level, String ObjectType)
        {
            XmlNode xnodWorking;

            if (xnod.Name == "name")
            {
                Name = xnod.InnerText;
            }

            if (xnod.Name == "description")
            {
                Description = xnod.InnerText;
            }

            if (xnod.Name == "Polygons")
            {
                ObjectType = xnod.Name;
                Polygons.Clear();
            }

            if (xnod.Name == "Points")
            {
                ObjectType = xnod.Name;
                Points.Clear();
            }

            if (xnod.Name == "Paths")
            {
                ObjectType = xnod.Name;
                Paths.Clear();
            }

            if (xnod.Name == "Placemark")
            {
                if (ObjectType == "Polygons")
                {
                    kmlPlacemarkPolygon poly = new kmlPlacemarkPolygon();
                    poly.LoadFromXml(xnod, level);
                    Polygons.Add(poly);
                }
                if (ObjectType == "Points")
                {
                    kmlPlacemarkPoint pt = new kmlPlacemarkPoint();
                    pt.LoadFromXml(xnod, level);
                    Points.Add(pt);
                }
                if (xnod.Name == "Paths")
                {
                    kmlPlacemarkPath path = new kmlPlacemarkPath();
                    path.LoadFromXml(xnod, level);
                    Paths.Add(path);
                }
            }

            // call recursively on all children of the current node
            if (xnod.HasChildNodes)
            {
                xnodWorking = xnod.FirstChild;
                while (xnodWorking != null)
                {
                    LoadFromXml(xnodWorking, level + 1, ObjectType);
                    xnodWorking = xnodWorking.NextSibling;
                }
            }
        }
Exemple #9
0
 public void Add(kmlPlacemarkPoint pt)
 {
     Points.Add(pt);
 }