private void ConvertGeometry(GeometryType geometry) { if (geometry is PointType) { this.FeatureCollection.Add(KmlFeatureStreamSource.ConvertPoint(geometry as PointType)); } else if (geometry is LineStringType) { this.FeatureCollection.Add(KmlFeatureStreamSource.ConvertLineString(geometry as LineStringType)); } else if (geometry is LinearRingType) { this.FeatureCollection.Add(KmlFeatureStreamSource.ConvertLinearRing(geometry as LinearRingType)); } else if (geometry is PolygonType) { this.FeatureCollection.Add(KmlFeatureStreamSource.ConvertPolygon(geometry as PolygonType)); } else { if (!(geometry is MultiGeometryType)) { return; } this.ConvertMultiGeometry(geometry as MultiGeometryType); } }
private static Feature ConvertMultiLineString(OsmSharp.IO.Xml.Kml.v2_0_response.MultiLineString multiLineString) { return(new Feature((Geometry) new OsmSharp.Geo.Geometries.MultiLineString(new OsmSharp.Geo.Geometries.LineString[1] { KmlFeatureStreamSource.ConvertLineString(multiLineString.LineString).Geometry as OsmSharp.Geo.Geometries.LineString }))); }
/// <summary> /// Converts a geometry to a list of osm objects. /// </summary> /// <param name="geometry"></param> /// <returns></returns> private void ConvertGeometry(OsmSharp.IO.Xml.Kml.v2_1.GeometryType geometry) { if (geometry is OsmSharp.IO.Xml.Kml.v2_1.PointType) { this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertPoint(geometry as OsmSharp.IO.Xml.Kml.v2_1.PointType)); } else if (geometry is OsmSharp.IO.Xml.Kml.v2_1.LineStringType) { this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertLineString(geometry as OsmSharp.IO.Xml.Kml.v2_1.LineStringType)); } else if (geometry is OsmSharp.IO.Xml.Kml.v2_1.LinearRingType) { this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertLinearRing(geometry as OsmSharp.IO.Xml.Kml.v2_1.LinearRingType)); } else if (geometry is OsmSharp.IO.Xml.Kml.v2_1.PolygonType) { this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertPolygon(geometry as OsmSharp.IO.Xml.Kml.v2_1.PolygonType)); } else if (geometry is OsmSharp.IO.Xml.Kml.v2_1.MultiGeometryType) { this.ConvertMultiGeometry(geometry as OsmSharp.IO.Xml.Kml.v2_1.MultiGeometryType); } }
/// <summary> /// Converts a multigeometry to osm objects. /// </summary> /// <param name="multiGeometry"></param> /// <returns></returns> private void ConvertMultiGeometry(OsmSharp.IO.Xml.Kml.v2_0_response.MultiGeometry multiGeometry) { for (int idx = 0; idx < multiGeometry.Items.Length; idx++) { switch (multiGeometry.ItemsElementName[idx]) { case OsmSharp.IO.Xml.Kml.v2_0_response.ItemsChoiceType.LineString: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertLineString(multiGeometry.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0_response.LineString)); break; case OsmSharp.IO.Xml.Kml.v2_0_response.ItemsChoiceType.MultiGeometry: this.ConvertMultiGeometry(multiGeometry.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0_response.MultiGeometry); break; case OsmSharp.IO.Xml.Kml.v2_0_response.ItemsChoiceType.MultiLineString: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertMultiLineString(multiGeometry.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0_response.MultiLineString)); break; case OsmSharp.IO.Xml.Kml.v2_0_response.ItemsChoiceType.MultiPoint: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertMultiPoint(multiGeometry.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0_response.MultiPoint)); break; case OsmSharp.IO.Xml.Kml.v2_0_response.ItemsChoiceType.MultiPolygon: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertMultiPolygon(multiGeometry.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0_response.MultiPolygon)); break; case OsmSharp.IO.Xml.Kml.v2_0_response.ItemsChoiceType.Point: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertPoint(multiGeometry.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0_response.Point)); break; case OsmSharp.IO.Xml.Kml.v2_0_response.ItemsChoiceType.Polygon: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertPolygon(multiGeometry.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0_response.Polygon)); break; } } }
/// <summary> /// Converts a placemark into an osm object. /// </summary> /// <param name="placemark"></param> /// <returns></returns> private void ConvertPlacemark(OsmSharp.IO.Xml.Kml.v2_0.Placemark placemark) { for (int idx = 0; idx < placemark.Items.Length; idx++) { switch (placemark.ItemsElementName[idx]) { case OsmSharp.IO.Xml.Kml.v2_0.ItemsChoiceType1.LineString: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertLineString(placemark.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0.LineString)); break; case OsmSharp.IO.Xml.Kml.v2_0.ItemsChoiceType1.MultiGeometry: this.ConvertMultiGeometry(placemark.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0.MultiGeometry); break; case OsmSharp.IO.Xml.Kml.v2_0.ItemsChoiceType1.MultiLineString: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertMultiLineString(placemark.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0.MultiLineString)); break; case OsmSharp.IO.Xml.Kml.v2_0.ItemsChoiceType1.MultiPoint: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertMultiPoint(placemark.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0.MultiPoint)); break; case OsmSharp.IO.Xml.Kml.v2_0.ItemsChoiceType1.MultiPolygon: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertMultiPolygon(placemark.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0.MultiPolygon)); break; case OsmSharp.IO.Xml.Kml.v2_0.ItemsChoiceType1.Point: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertPoint(placemark.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0.Point)); break; case OsmSharp.IO.Xml.Kml.v2_0.ItemsChoiceType1.Polygon: this.FeatureCollection.Add( KmlFeatureStreamSource.ConvertPolygon(placemark.Items[idx] as OsmSharp.IO.Xml.Kml.v2_0.Polygon)); break; } } }
/// <summary> /// Converts a multilinestring to osm objects. /// </summary> /// <param name="multiLineString"></param> /// <returns></returns> private static Feature ConvertMultiLineString(OsmSharp.IO.Xml.Kml.v2_0.MultiLineString multiLineString) { return(new Feature(new MultiLineString(new LineString[] { KmlFeatureStreamSource.ConvertLineString(multiLineString.LineString).Geometry as LineString }))); }