Пример #1
0
 private void WriteProjection(ICoordinateOperationMethodInfo method)
 {
     Contract.Requires(method != null);
     Write(WktKeyword.Projection);
     WriteOpenParenthesis();
     WriteQuoted(FixName(method.Name));
     if (!Options.SuppressProjectionAuthority && null != method.Authority)
     {
         WriteComma();
         Write(method.Authority);
     }
     WriteCloseParenthesis();
 }
Пример #2
0
 public CoordinateOperationInfo(
     string name,
     IEnumerable<INamedParameter> parameters = null,
     ICoordinateOperationMethodInfo method = null,
     IAuthorityTag authority = null,
     bool hasInverse = true
 )
 {
     Name = name ?? String.Empty;
     Parameters = null == parameters
         ? EmptyParameterList
         : Array.AsReadOnly(parameters.ToArray());
     HasInverse = hasInverse;
     Method = method;
     Authority = authority;
 }
Пример #3
0
 public CoordinateOperationInfo(
     string name,
     IEnumerable <INamedParameter> parameters = null,
     ICoordinateOperationMethodInfo method    = null,
     IAuthorityTag authority = null,
     bool hasInverse         = true
     )
 {
     Name       = name ?? String.Empty;
     Parameters = null == parameters
         ? EmptyParameterList
         : Array.AsReadOnly(parameters.ToArray());
     HasInverse = hasInverse;
     Method     = method;
     Authority  = authority;
 }
Пример #4
0
        public ICrsProjected ReadProjectedCsFromParams()
        {
            IAuthorityTag authority = null;
            string        name      = null;
            ICrsGeodetic  baseCrs   = null;
            ICoordinateOperationMethodInfo operationMethodInfo = null;
            var   operationParameters = new List <INamedParameter>();
            IUnit linearUnit          = null;
            var   axes = new List <IAxis>();

            foreach (var parameter in ReadParams())
            {
                if (parameter is string)
                {
                    name = (string)parameter;
                }
                else if (parameter is ICrsGeodetic)
                {
                    baseCrs = (ICrsGeodetic)parameter;
                }
                else if (parameter is ICoordinateOperationMethodInfo)
                {
                    operationMethodInfo = (ICoordinateOperationMethodInfo)parameter;
                }
                else if (parameter is INamedParameter)
                {
                    operationParameters.Add((INamedParameter)parameter);
                }
                else if (parameter is IUnit)
                {
                    linearUnit = (IUnit)parameter;
                }
                else if (parameter is IAxis)
                {
                    axes.Add((IAxis)parameter);
                }
                else if (parameter is IAuthorityTag)
                {
                    authority = (IAuthorityTag)parameter;
                }
            }

            if (null != authority)
            {
                var crs = Options.GetCrs(authority) as ICrsProjected;
                if (null != crs)
                {
                    return(crs);
                }
            }

            if (null == baseCrs)
            {
                if (Options.ThrowOnError)
                {
                    throw new WktParseExceptioncs("Project CRS", "No base CRS.");
                }
                return(null);
            }

            return(new OgcCrsProjected(
                       name ?? String.Empty,
                       baseCrs,
                       new CoordinateOperationInfo(
                           null == operationMethodInfo ? String.Empty : FixName(operationMethodInfo.Name),
                           operationParameters,
                           operationMethodInfo
                           ),
                       linearUnit ?? OgcLinearUnit.DefaultMeter,
                       axes,
                       authority
                       ));
        }