/// <summary> /// Returns a formatted description for given airspace /// </summary> /// <param name="airspace">airspace to use</param> /// <returns>description text</returns> private static string DescriptionFromAirspace(Airspace.Airspace airspace) { var sb = new StringBuilder(); sb.Append("Name: " + airspace.Name + "\n"); sb.Append("Class: " + airspace.Class.ToString()); if (!string.IsNullOrEmpty(airspace.AirspaceType)) { sb.Append($" ({airspace.AirspaceType})"); } sb.Append("\n"); sb.Append($"{airspace.Floor} -> {airspace.Ceiling}\n"); if (!string.IsNullOrEmpty(airspace.Description)) { sb.Append($"Description: {airspace.Description}\n"); } if (!string.IsNullOrEmpty(airspace.Frequency)) { sb.Append($"Frequency: {airspace.Frequency}"); } if (!string.IsNullOrEmpty(airspace.CallSign)) { sb.Append($"Call sign: {airspace.CallSign}"); } sb.Replace("\n\n", "\n"); sb.Replace("\n", "<br/>"); return(sb.ToString()); }
/// <summary> /// Creates a Czml.Object from given airspace /// </summary> /// <param name="airspace">airspace to use</param> /// <returns>created CZML object</returns> private static Czml.Object CzmlObjectFromAirspace(Airspace.Airspace airspace) { double height = HeightFromAltitude(airspace.Ceiling) - HeightFromAltitude(airspace.Floor); if (airspace.Geometry is Circle circle) { return(new Czml.Object { Name = airspace.Name, Description = DescriptionFromAirspace(airspace), Position = PositionFromCoord(circle.Center, airspace.Floor), Cylinder = new Czml.Cylinder { BottomRadius = circle.Radius, TopRadius = circle.Radius, Length = height, HeightReference = HeightReferenceFromAltitude(airspace.Floor), Material = MaterialFromAirspace(airspace), Outline = true, OutlineColor = ColorFromAirspace(airspace, outlineColor: true), }, }); } if (airspace.Geometry is Airspace.Polygon polygon) { Czml.PositionList positions = GetPolygonPointsFromAirspacePolygon(polygon, airspace.Floor); if (!positions.CartographicDegrees.Any()) { return(null); } return(new Czml.Object { Name = airspace.Name, Description = DescriptionFromAirspace(airspace), Polygon = new Czml.Polygon { Positions = positions, Height = HeightFromAltitude(airspace.Floor), ExtrudedHeight = HeightFromAltitude(airspace.Ceiling), HeightReference = HeightReferenceFromAltitude(airspace.Floor), Material = MaterialFromAirspace(airspace), Outline = true, OutlineColor = ColorFromAirspace(airspace, outlineColor: true), }, }); } throw new FormatException("invalid airspace geometry"); }