Пример #1
0
        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
            );
        }