private void InitializeData(Placemark placemark) { foreach (SimpleData sd in placemark.Flatten().OfType <SimpleData>()) { if (sd.Name.ToLower() == "id") { sd.Name = "placemark_sd_id"; } if (sd.Name.ToLower() == "name") { sd.Name = "placemark_sd_name"; } Data.Add(sd.Name.Sanitize(), sd.Text.Sanitize()); } foreach (Data data in placemark.Flatten().OfType <Data>()) { if (data.Name.ToLower() == "id") { data.Name = "placemark_data_id"; } if (data.Name.ToLower() == "name") { data.Name = "placemark_data_name"; } Data.Add(data.Name.Sanitize(), data.Value.Sanitize()); } }
public Route GetRoute(Placemark placemark) { Route r = new Route { Name = placemark.Name, Description = (placemark.Description != null) ? placemark.Description.Text : _documentDescription }; LineString ls = placemark.Flatten().OfType <LineString>().FirstOrDefault(); if (ls != null) { foreach (var coordinate in ls.Coordinates) { BasicGeoposition bg = new BasicGeoposition() { Longitude = coordinate.Longitude, Latitude = coordinate.Latitude, Altitude = coordinate.Altitude ?? 0d }; r.Coordinates.Add(bg); } return(r); } return(null); }
/// <summary> /// Generates a List of arrays of Vectors for each Polygon in the Placemark <see cref="Placemark"/>. /// </summary> /// <param name="placemark">The placemark instance.</param> /// <returns> /// A <c>ListVector[][]</c> containing the coordinates of each <see cref="Polygon"/> of the /// placemark. /// </returns> /// <exception cref="ArgumentNullException">placemark is null.</exception> /// <exception cref="ArgumentException">placemark geometry is not a MultipleGeometry, Polygon or LineString.</exception> private static List <Vector[][]> ConvertToCoordinates(this Placemark placemark) { if (placemark == null) { throw new ArgumentNullException(); } if (!(placemark.Geometry is MultipleGeometry) && !(placemark.Geometry is Polygon) && !(placemark.Geometry is LineString)) { throw new ArgumentException("Expecting MultipleGeometry, Polygon or LineString"); } if (placemark.Geometry is LineString) { return(placemark.Flatten().OfType <CoordinateCollection>().Select(x => x.AsVectorCoordinates()).ToList()); } return(placemark.Flatten().OfType <Polygon>().Select(x => x.AsVectorCoordinates()).ToList()); }
private static Vector[] InitializePolygonCoordinates(Placemark placemark) { List <Vector> coordinates = new List <Vector>(); foreach (var polygon in placemark.Flatten().OfType <Polygon>()) { coordinates.AddRange(polygon.OuterBoundary.LinearRing.Coordinates); } return(coordinates.ToArray()); }
private void InitializeData(Placemark placemark) { foreach (SimpleData sd in placemark.Flatten().OfType <SimpleData>()) { if (sd.Name.ToString().ToLower() == "id") { sd.Name = "sd_id"; } Data.Add(sd.Name, sd.Text); } foreach (Data data in placemark.Flatten().OfType <Data>()) { if (data.Name.ToString().ToLower() == "id") { data.Name = "data_id"; } Data.Add(data.Name, data.Value); } }
private static Vector[] InitializeLineCoordinates(Placemark placemark) { List <Vector> coordinates = new List <Vector>(); foreach (LineString element in placemark.Flatten().OfType <LineString>()) { LineString lineString = element; coordinates.AddRange(lineString.Coordinates); } return(coordinates.ToArray()); }
private static Vector[] InitializePointCoordinates(Placemark placemark) { List <Vector> coordinates = new List <Vector>(); foreach (var point in placemark.Flatten().OfType <Point>()) { Vector myVector = new Vector(); myVector.Latitude = point.Coordinate.Latitude; myVector.Longitude = point.Coordinate.Longitude; coordinates.Add(myVector); } return(coordinates.ToArray()); }
private static Vector[][] InitializePolygonCoordinates(Placemark placemark) { List <List <Vector> > coordinates = new List <List <Vector> >(); coordinates.Add(new List <Vector>()); foreach (var polygon in placemark.Flatten().OfType <Polygon>()) { coordinates[0].AddRange(polygon.OuterBoundary.LinearRing.Coordinates); coordinates.AddRange(polygon.InnerBoundary.Select(inner => inner.LinearRing.Coordinates.ToList())); } return(coordinates.Select(c => c.ToArray()).ToArray()); }
private static Vector[][] InitializeLineCoordinates(Placemark placemark) { List <List <Vector> > coordinates = new List <List <Vector> >(); int lineStringIndex = 0; foreach (LineString lineString in placemark.Flatten().OfType <LineString>()) { coordinates.Add(new List <Vector>()); coordinates[lineStringIndex].AddRange(lineString.Coordinates); lineStringIndex++; } return(coordinates.Select(c => c.ToArray()).ToArray()); }
private Vector[] initializePointCoordinates(Placemark placemark) { List <Vector> coordinates = new List <Vector>(); foreach (var element in placemark.Flatten()) { if (element is Point) { Point myPoint = (Point)element; Vector myVector = new Vector(); myVector.Latitude = myPoint.Coordinate.Latitude; myVector.Longitude = myPoint.Coordinate.Longitude; coordinates.Add(myVector); } } return(coordinates.ToArray()); }
private static Vector[] InitializePolygonCoordinates(Placemark placemark) { List <Vector> coordinates = new List <Vector>(); Polygon myGeometry; foreach (var element in placemark.Flatten()) { if (element is Polygon) { myGeometry = (Polygon)element; foreach (var vector in myGeometry.OuterBoundary.LinearRing.Coordinates) { coordinates.Add(vector); } } } return(coordinates.ToArray()); }
private static Vector[] InitializeLineCoordinates(Placemark placemark) { List <Vector> coordinates = new List <Vector>(); LineString lineString; foreach (var element in placemark.Flatten()) { if (element is LineString) { lineString = (LineString)element; foreach (var vector in lineString.Coordinates) { coordinates.Add(vector); } } } return(coordinates.ToArray()); }
private void SetGeoTypes(Placemark placemark) { foreach (var element in placemark.Flatten()) { if (element is Point) { ShapeType = ShapeType.Point; } else if (element is Polygon) { ShapeType = ShapeType.Polygon; } else if (element is LineString) { ShapeType = ShapeType.LineString; } } }
private OpenGisGeometryType SetGeometryType(Placemark placemark) { foreach (var element in placemark.Flatten()) { if (element is Polygon) { return(OpenGisGeometryType.Polygon); } else if (element is Point) { return(OpenGisGeometryType.Point); } else if (element is LineString) { return(OpenGisGeometryType.LineString); } } throw new Exception("Placemark " + Id.ToString() + "Not a line, point, or polygon"); }
private void SetGeoTypes(Placemark placemark) { foreach (var element in placemark.Flatten()) { if (element is Point) { GeographyType = OpenGisGeographyType.Point; GeometryType = OpenGisGeometryType.Point; } else if (element is Polygon) { GeographyType = OpenGisGeographyType.Polygon; GeometryType = OpenGisGeometryType.Polygon; } else if (element is LineString) { GeographyType = OpenGisGeographyType.LineString; GeometryType = OpenGisGeometryType.LineString; } } }
/// <summary> /// Generates a List of arrays of Vectors for each Polygon in the Placemark <see cref="Placemark"/>. /// </summary> /// <param name="placemark">The placemark instance.</param> /// <returns> /// A <c>ListVector[][]</c> containing the coordinates of each <see cref="Polygon"/> of the /// placemark. /// </returns> /// <exception cref="ArgumentNullException">placemark is null.</exception> /// <exception cref="ArgumentException">placemark geometry is not a MultipleGeometry or Polygon.</exception> private static List <Vector[][]> ConvertToCoordinates(this Placemark placemark) { if (placemark == null) { throw new ArgumentNullException(); } if (!(placemark.Geometry is MultipleGeometry) && !(placemark.Geometry is Polygon)) { throw new ArgumentException("Expecting MultipleGeometry or Polygon"); } List <Vector[][]> Polygons = new List <Vector[][]>(); foreach (Polygon polygon in placemark.Flatten().OfType <Polygon>()) { Polygons.Add(polygon.AsVectorCoordinates()); } return(Polygons); }
public Point GetPoint(Placemark placemark) { Point p = new Point { Title = placemark.Name, Description = (placemark.Description != null) ? placemark.Description.Text : _documentDescription }; KmlPoint point = placemark.Flatten().OfType <KmlPoint>().FirstOrDefault(); if (point != null) { p.Position = new BasicGeoposition() { Longitude = point.Coordinate.Longitude, Latitude = point.Coordinate.Latitude, Altitude = point.Coordinate.Altitude ?? 0d }; return(p); } return(null); }
public static bool IsRoutePlacemark(Placemark placemark) { return(placemark.Flatten().OfType <LineString>().Any()); }
private static bool HasValidElement(Placemark placemark) { return(placemark.Flatten().Any(e => e is Point || e is LineString || e is Polygon)); }