private static StaticCoordinateOperationCompiler.StepCompilationResult CreateVerticalPerspective(TransformationCompilationParams opData) { Contract.Requires(opData != null); var outputUnit = opData.StepParams.RelatedOutputCrsUnit; if (null == outputUnit) { return(null); } var latParam = new KeywordNamedParameterSelector("LAT"); var lonParam = new KeywordNamedParameterSelector("LON"); var hOriginParam = new KeywordNamedParameterSelector("H", "HEIGHT", "ORIGIN"); var hViewParam = new KeywordNamedParameterSelector("H", "HEIGHT", "VIEW"); opData.ParameterLookup.Assign(latParam, lonParam, hOriginParam, hViewParam); GeographicHeightCoordinate origin; if (!TryCreateGeographicHeightCoordinate(latParam.Selection, lonParam.Selection, hOriginParam.Selection, OgcAngularUnit.DefaultRadians, outputUnit, out origin)) { origin = GeographicHeightCoordinate.Zero; } double viewHeight; if (!TryGetDouble(hViewParam.Selection, outputUnit, out viewHeight)) { viewHeight = Double.NaN; } var spheroidIn = opData.StepParams.ConvertRelatedInputSpheroidUnit(outputUnit); if (null == spheroidIn) { return(null); } ITransformation transformation = new VerticalPerspective(origin, viewHeight, spheroidIn); return(new StaticCoordinateOperationCompiler.StepCompilationResult( opData.StepParams, outputUnit, transformation )); }
private static StaticCoordinateOperationCompiler.StepCompilationResult CreateVerticalPerspective(TransformationCompilationParams opData) { Contract.Requires(opData != null); var outputUnit = opData.StepParams.RelatedOutputCrsUnit; if (null == outputUnit) return null; var latParam = new KeywordNamedParameterSelector("LAT"); var lonParam = new KeywordNamedParameterSelector("LON"); var hOriginParam = new KeywordNamedParameterSelector("H", "HEIGHT", "ORIGIN"); var hViewParam = new KeywordNamedParameterSelector("H", "HEIGHT", "VIEW"); opData.ParameterLookup.Assign(latParam, lonParam, hOriginParam, hViewParam); GeographicHeightCoordinate origin; if (!TryCreateGeographicHeightCoordinate(latParam.Selection, lonParam.Selection, hOriginParam.Selection, OgcAngularUnit.DefaultRadians, outputUnit, out origin)) origin = GeographicHeightCoordinate.Zero; double viewHeight; if (!TryGetDouble(hViewParam.Selection, outputUnit, out viewHeight)) viewHeight = Double.NaN; var spheroidIn = opData.StepParams.ConvertRelatedInputSpheroidUnit(outputUnit); if (null == spheroidIn) return null; ITransformation transformation = new VerticalPerspective(origin, viewHeight, spheroidIn); return new StaticCoordinateOperationCompiler.StepCompilationResult( opData.StepParams, outputUnit, transformation ); }