public IEnumerable<JObject> ReadElementElement(IAixmConverter converter, JObject currentObject, XElement element) { var elementElement = element.Elements().ToArray(); if(elementElement.Length != 1) { throw new NotSupportedException("ReadElementElement do not support more than one nested element"); } var id = currentObject["properties"]["id"]; currentObject.SetGeometry(new JObject()); var obj = new JObject(new JProperty("properties",new JObject( new JProperty("elementSource",elementElement[0].Name.LocalName), new JProperty("parent", id is JObject ? id["#text"].ToString() : id.ToString()) ))); //Need to yield the current feature when going to sub types. //When no sub features are returned the current feature is automaticly returned for all other cases. yield return currentObject; foreach (var feature in converter.ReadElement(obj, elementElement[0].Elements()).ToList()) { yield return feature; } }
public IEnumerable<JObject> ReadSurfaceElement(IAixmConverter converter, JObject currentObject, XElement element) { //Convert ElevatedSurface to a GML Surface and convert to geojson. var geometry = GeometryFactory.GmlToGeometry(DownCastToSurfaceElement(element)); //Set the geometry currentObject.SetGeometry(geometry); //Set the projection on the feature obj. currentObject.SetSrs(element); return Enumerable.Empty<JObject>(); }
public IEnumerable<JObject> ReadElement(IAixmConverter converter, JObject currentObject, XElement element) { XNamespace aximNs = "http://www.aixm.aero/schema/5.1"; //Convert ElevatedPoint to a GML Surface and convert to geojson. var geometry = GeometryFactory.GmlToGeometry(DownCastToPointElement(element)); //Set the geometry currentObject.SetGeometry(geometry); //Set the projection on the feature obj. currentObject.SetSrs(element); //Read elevation property and return return converter.ReadElement(currentObject, element.Elements(aximNs + "elevation")); }