private void indexItemControl_OnAdd()
        {
            var form = new ValueForm();

            var value = new Value();

            //--- Need to determine if it is a collection/indexed array/Datum
            DatumType datum = Datum.GetDatumFromType(cmbIndexType);

            datum.standardUnit        = standardUnitControl.StandardUnit;
            datum.nonStandardUnit     = edtNonStandardUnit.Text;
            datum.Confidence          = edtConfidence.GetValue <double>();
            datum.ConfidenceSpecified = chkConfidence.Checked;
            datum.Resolution          = edtResolution.GetValue <double>();
            datum.ResolutionSpecified = chkResolution.Checked;
            value.Item           = datum;
            form.LockTypes       = true;
            form.Value           = value;
            form.DefaultDataType = cmbIndexType.SelectedIndex;
            if (DialogResult.OK == form.ShowDialog())
            {
                value = form.Value;
                if (value != null)
                {
                    var lvi = new ListViewItem(value.ToString());
                    lvi.Tag = value;
                    indexItemControl.Items.Add(lvi);
                }
            }
        }
        private XElement GetStateXElement()
        {
            XElement stateX = new XElement("state");

            stateX.SetAttributeValue("key", Proj4ProjectionParameters);
            if (viewModel.SelectedViewModel is CommonProjectionViewModel)
            {
                CommonProjectionViewModel commonProjectionViewModel = (CommonProjectionViewModel)viewModel.SelectedViewModel;
                DatumType      datumType      = commonProjectionViewModel.SelectedDatumType;
                string         selectedZone   = commonProjectionViewModel.SelectedZone;
                UnitType       unitType       = commonProjectionViewModel.SelectedUnitType;
                ProjectionType projectionType = commonProjectionViewModel.SelectedProjectionType;
                //int index1 = commonProjectionViewModel.SupportedDatumTypes.IndexOf(datumType);
                //int index2 = commonProjectionViewModel.SupportedUnits.IndexOf(commonProjectionViewModel.SelectedUnitType);
                //int index3 = (int)commonProjectionViewModel.SelectedProjectionType;
                commonProjectionViewModel.SelectedDatumType = datumType;
                int      index4 = commonProjectionViewModel.SupportedZones.IndexOf(selectedZone);
                string   value  = string.Format(CultureInfo.InvariantCulture, "{0},{1},{2},{3}", projectionType, datumType, index4, unitType);
                XElement commonProjectionsStateX = new XElement("common", value);
                stateX.Add(commonProjectionsStateX);
            }
            else if (viewModel.SelectedViewModel is OtherProjectionViewModel)
            {
                OtherProjectionViewModel otherProjectionViewModel = (OtherProjectionViewModel)viewModel.SelectedViewModel;
                int      index1 = (int)otherProjectionViewModel.SelectedProjectionType;
                int      index2 = otherProjectionViewModel.SearchedResult.IndexOf(otherProjectionViewModel.SelectedProj4Model);
                string   value  = string.Format(CultureInfo.InvariantCulture, "{0},{1}", index1, index2);
                XElement customProjectionsStateX = new XElement("custom", value);
                stateX.Add(customProjectionsStateX);
            }

            return(stateX);
        }
        private static IHorizontalDatum ReadHorizontalDatum(WktStreamTokenizer tokenizer)
        {
            //DATUM["OSGB 1936",SPHEROID["Airy 1830",6377563.396,299.3249646,AUTHORITY["EPSG","7001"]]TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6277"]]

            tokenizer.ReadToken("[");
            string name = tokenizer.ReadDoubleQuotedWord();

            tokenizer.ReadToken(",");
            tokenizer.ReadToken("SPHEROID");
            IEllipsoid ellipsoid = ReadEllipsoid(tokenizer);

            tokenizer.ReadToken("TOWGS84");
            WGS84ConversionInfo wgsInfo = ReadWGS84ConversionInfo(tokenizer);

            tokenizer.ReadToken(",");
            string authority     = "";
            string authorityCode = "";

            tokenizer.ReadAuthority(ref authority, ref authorityCode);
            // make an assumption about the datum type.
            DatumType        datumType       = DatumType.IHD_Geocentric;
            IHorizontalDatum horizontalDatum = new HorizontalDatum(name, datumType, ellipsoid, wgsInfo, "", authority, authorityCode, "", "");

            tokenizer.ReadToken("]");
            return(horizontalDatum);
        }
 protected void CheckUserHasPermissionToListDatum(DatumType dt, ProtoCmsRuntimeContext rctx)
 {
     if (!rctx.UserHasPermission(dt.ListPermissionBase.Id))
     {
         throw new HttpException(403, $"ProtoCMS: user is forbidden to list datum type '{dt.Id}'.");
     }
 }
Example #5
0
        private static IHorizontalDatum ReadHorizontalDatum(XmlTextReader reader)
        {
            if (!(reader.NodeType == XmlNodeType.Element && reader.Name == "CS_HorizontalDatum"))
            {
                throw new ParseException(String.Format("Expected a IHorizontalDatum but got a {0} at line {1} col {2}", reader.Name, reader.LineNumber, reader.LinePosition));
            }

            /* <IHorizontalDatum DatumType="1001">
             *      <IInfo AuthorityCode="6277" Authority="EPSG" Name="OSGB_1936"/>
             *      <IEllipsoid SemiMajorAxis="6377563.396" SemiMinorAxis="6356256.90923729" InverseFlattening="299.3249646" IvfDefinitive="1">
             *              <IInfo AuthorityCode="7001" Authority="EPSG" Name="Airy 1830"/>
             *              <ILinearUnit MetersPerUnit="1">
             *                      <IInfo AuthorityCode="9001" Abbreviation="m" Authority="EPSG" Name="metre"/>
             *              </ILinearUnit>
             *      </IEllipsoid>
             *      <IWGS84ConversionInfo Dx="375" Dy="-111" Dz="431" Ex="0" Ey="0" Ez="0" Ppm="0"/>
             * </IHorizontalDatum>
             */
            string    datumTypeString = reader.GetAttribute("DatumType");
            DatumType datumType = (DatumType)Enum.Parse(typeof(DatumType), datumTypeString, true);
            string    authority = "", authorityCode = "", abbreviation = "", name = "";

            reader.Read();
            ReadInfo(reader, ref authority, ref authorityCode, ref abbreviation, ref name);
            IEllipsoid          ellipsoid = ReadEllipsoid(reader);
            WGS84ConversionInfo wgs84info = ReadWGS84ConversionInfo(reader);

            reader.Read();
            HorizontalDatum horizontalDatum = new HorizontalDatum(name, datumType, ellipsoid, wgs84info, "", authority, authorityCode, "", abbreviation);

            return(horizontalDatum);
        }
 /// <summary>
 /// Initializes a new instance of a Datum object
 /// </summary>
 /// <param name="type">Datum type</param>
 /// <param name="name">Name</param>
 /// <param name="authority">Authority name</param>
 /// <param name="code">Authority-specific identification code.</param>
 /// <param name="alias">Alias</param>
 /// <param name="abbreviation">Abbreviation</param>
 /// <param name="remarks">Provider-supplied remarks</param>
 internal Datum(DatumType type,
                string name, string authority, long code, string alias,
                string remarks, string abbreviation)
     : base(name, authority, code, alias, abbreviation, remarks)
 {
     _DatumType = type;
 }
Example #7
0
		/// <summary>
		/// Initializes a new instance of a Datum object
		/// </summary>
		/// <param name="type">Datum type</param>
		/// <param name="name">Name</param>
		/// <param name="authority">Authority name</param>
		/// <param name="code">Authority-specific identification code.</param>
		/// <param name="alias">Alias</param>
		/// <param name="abbreviation">Abbreviation</param>
		/// <param name="remarks">Provider-supplied remarks</param>
		internal Datum(DatumType type,
			string name, string authority, long code, string alias,
			string remarks, string abbreviation)
			: base(name, authority, code, alias, abbreviation, remarks)
		{
			_DatumType = type;
		}
        public void ProcessSignal(SignalRequirementsSignalRequirement signalRequirement)
        {
            InstrumentDAO dao = new InstrumentDAO();
            List <Tuple <string, object, string> > attributes = new List <Tuple <string, object, string> >();

            foreach (SignalRequirementsSignalRequirementTsfClassAttribute attribute in signalRequirement.TsfClassAttribute)
            {
                TsfClassAttributeName name = attribute.Name;
                if (attribute.Value != null)
                {
                    if (attribute.Value.Item is DatumType)
                    {
                        DatumType datum = attribute.Value.Item as DatumType;
                        Object    value = Datum.GetNominalDatumValue(datum);
                        if (value != null)
                        {
                            attributes.Add(new Tuple <string, object, string>(name.Value, value, datum.unitQualifier));
                        }
                    }
                }
            }

            lvInstruments.BeginUpdate();
            try
            {
                foreach (ListViewItem lvi in lvInstruments.Items)
                {
                    lvi.BackColor = Color.White;
                }

                ICollection <object> ids = dao.FindCapableEquipment(attributes);
                foreach (ListViewItem lvi in lvInstruments.Items)
                {
                    var testStationInstrumentData = lvi.Tag as TestStationInstrumentData;
                    if (testStationInstrumentData != null)
                    {
                        var instrument = testStationInstrumentData.InstrumentDescription;
                        if (instrument != null)
                        {
                            foreach (var id in ids)
                            {
                                if (id.Equals(instrument.uuid))
                                {
                                    lvi.BackColor = Color.PaleGreen;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e2)
            {
                LogManager.Debug("Error In TSF Class: {0}", signalRequirement.TsfClass.tsfClassName);
                foreach (Tuple <string, object, string> tuple in attributes)
                {
                    LogManager.Debug("     {0} = {1} {2}", tuple.Item1, tuple.Item2, tuple.Item3);
                }
            }
            lvInstruments.EndUpdate();
        }
Example #9
0
 protected void CheckModifyOperationAllowed(string operationName, DatumType ct)
 {
     if (!ct.IsModifyOperationAllowed(operationName))
     {
         throw new HttpException(400, $"ProtoCMS: datum type '{ct.Id}' doesn't allow modify operation " +
                                 $"'{operationName}'.");
     }
 }
Example #10
0
 /// <summary>
 /// Initializes a new instance of a horizontal datum
 /// </summary>
 /// <param name="ellipsoid">Ellipsoid</param>
 /// <param name="toWgs84">Parameters for a Bursa Wolf transformation into WGS84</param>
 /// <param name="type">Datum type</param>
 /// <param name="name">Name</param>
 /// <param name="authority">Authority name</param>
 /// <param name="code">Authority-specific identification code.</param>
 /// <param name="alias">Alias</param>
 /// <param name="abbreviation">Abbreviation</param>
 /// <param name="remarks">Provider-supplied remarks</param>
 internal HorizontalDatum(
     IEllipsoid ellipsoid, Wgs84ConversionInfo toWgs84, DatumType type,
     string name, string authority, long code, string alias, string remarks, string abbreviation)
     : base(type, name, authority, code, alias, remarks, abbreviation)
 {
     _Ellipsoid           = ellipsoid;
     _Wgs84ConversionInfo = toWgs84;
 }
 /// <summary>
 /// Initializes a new instance of a horizontal datum
 /// </summary>
 /// <param name="ellipsoid">Ellipsoid</param>
 /// <param name="toWgs84">Parameters for a Bursa Wolf transformation into WGS84</param>
 /// <param name="type">Datum type</param>
 /// <param name="name">Name</param>
 /// <param name="authority">Authority name</param>
 /// <param name="code">Authority-specific identification code.</param>
 /// <param name="alias">Alias</param>
 /// <param name="abbreviation">Abbreviation</param>
 /// <param name="remarks">Provider-supplied remarks</param>
 internal HorizontalDatum(
     IEllipsoid ellipsoid, Wgs84ConversionInfo toWgs84, DatumType type,
     string name, string authority, long code, string alias, string remarks, string abbreviation)
     : base(type, name, authority, code, alias, remarks, abbreviation)
 {
     _Ellipsoid = ellipsoid;
     _Wgs84ConversionInfo = toWgs84;
 }
Example #12
0
 /// <summary>
 /// Creates a local datum.
 /// </summary>
 /// <param name="name">The name of the datum.</param>
 /// <param name="localDatumType">The type of datum.</param>
 /// <returns>An object that implements the ILocalDatum interface.</returns>
 public ILocalDatum CreateLocalDatum(string name, DatumType localDatumType)
 {
     if (name == null)
     {
         throw new ArgumentNullException("name");
     }
     return(new LocalDatum(name, localDatumType));
 }
Example #13
0
 public static void WriteJson(this DatumType value, JsonWriter writer, JsonSerializer serializer)
 {
     switch (value)
     {
     case DatumType.Match:
         serializer.Serialize(writer, "match");
         break;
     }
 }
 private static DatumType ConvertBack(string datumTypeName)
 {
     DatumType result = DatumType.None;
     if (Enum.TryParse<DatumType>(datumTypeName, out result))
     {
         return result;
     }
     else return result;
 }
Example #15
0
 /// <summary>
 /// Creates a vertical datum from an enumerated type value.
 /// </summary>
 /// <param name="name">The name of the datum to create.</param>
 /// <param name="verticalDatumType">The IDatumType type use when creating the datum.</param>
 /// <returns>An object that implements the IVerticalDatum interface.</returns>
 public IVerticalDatum CreateVerticalDatum(string name, DatumType verticalDatumType)
 {
     if (name == null)
     {
         throw new ArgumentNullException("name");
     }
     // no need to check verticalDatumType because IDatumType is an enum and cannot null.
     return(new VerticalDatum(name, verticalDatumType));
 }
 public override DatumPermissionCustomProps ListPermissionCustomProps(DatumType <ApplicationUser> datumType)
 {
     return(new DatumPermissionCustomProps(
                "List User",
                "Allow listing user data.",
                "Account",
                "User"
                ));
 }
 public override DatumPermissionCustomProps ViewPermissionCustomProps(DatumType <ApplicationUser> datumType)
 {
     return(new DatumPermissionCustomProps(
                "View User",
                "Allow viewing user data.",
                "Account",
                "User"
                ));
 }
Example #18
0
        private int GetEditStates()
        {
            int       idx       = -1;
            DatumType datumType = DatumType;

            if (datumType is binary)
            {
                idx = (int)Datum.DatumTypes.BINARY;
            }
            else if (datumType is boolean)
            {
                idx = (int)Datum.DatumTypes.BOOL;
            }
            else if (datumType is complex)
            {
                idx = (int)Datum.DatumTypes.COMPLEX;
            }
            else if (datumType is dateTime)
            {
                idx = (int)Datum.DatumTypes.DATETIME;
            }
            else if (datumType is @double)
            {
                idx = (int)Datum.DatumTypes.DOUBLE;
            }
            else if (datumType is hexadecimal)
            {
                idx = (int)Datum.DatumTypes.HEX;
            }
            else if (datumType is integer)
            {
                idx = (int)Datum.DatumTypes.INT;
            }
            else if (datumType is @long)
            {
                idx = (int)Datum.DatumTypes.LONG;
            }
            else if (datumType is octal)
            {
                idx = (int)Datum.DatumTypes.OCT;
            }
            else if (datumType is @string)
            {
                idx = (int)Datum.DatumTypes.STRING;
            }
            else if (datumType is unsignedInteger)
            {
                idx = (int)Datum.DatumTypes.UINT;
            }
            else if (datumType is unsignedLong)
            {
                idx = (int)Datum.DatumTypes.ULONG;
            }

            return(idx);
        }
Example #19
0
 public VerticalDatum(DatumType datumType,
                      string remarks,
                      string authorityCode,
                      string authority,
                      string name,
                      string alias,
                      string abbreviation)
     : base(datumType, remarks, authority, authorityCode, name, alias, abbreviation)
 {
 }
Example #20
0
        /// <summary>
        /// Initializes a new instance of the VerticalDatum class with the specified properties.
        /// </summary>
        /// <param name="datumType">The datum type.</param>
        /// <param name="remarks">The provider-supplied remarks.</param>
        /// <param name="authority">The authority-specific identification code.</param>
        /// <param name="authorityCode">The authority-specific identification code.</param>
        /// <param name="name">The name.</param>
        /// <param name="alias">The alias.</param>
        /// <param name="abbreviation">The abbreviation.</param>
        public VerticalDatum(	DatumType datumType,
			string remarks,
			string authorityCode,
			string authority, 
			string name,
			string alias,
			string abbreviation )
            : base(datumType, remarks,authority,authorityCode, name, alias, abbreviation)
        {
        }
Example #21
0
 /// <summary>
 /// Initializes a new instance of the EventLog class with the specified properties.
 /// </summary>
 /// <param name="datumType"></param>
 /// <param name="remarks">The provider-supplied remarks.</param>
 /// <param name="authority">The authority-specific identification code.</param>
 /// <param name="authorityCode">The authority-specific identification code.</param>
 /// <param name="name">The name.</param>
 /// <param name="alias">The alias.</param>
 /// <param name="abbreviation">The abbreviation.</param>
 public Datum(DatumType datumType,
              string remarks,
              string authorityCode,
              string authority,
              string name,
              string alias,
              string abbreviation) : base(remarks, authorityCode, authority, name, alias, abbreviation)
 {
     _datumType = datumType;
 }
        public static void WriteJson(this DatumType value, JsonWriter writer, JsonSerializer serializer)
        {
            switch (value)
            {
            case DatumType.Asset: serializer.Serialize(writer, "asset"); break;

            case DatumType.Participant: serializer.Serialize(writer, "participant"); break;

            case DatumType.Roster: serializer.Serialize(writer, "roster"); break;
            }
        }
Example #23
0
        /// <summary>
        ///  Initializes a new instance of the HorizontalDatum class with the specififed properties.
        /// </summary>
        /// <param name="name">The name of the datum.</param>
        /// <param name="horizontalDatumType">The datum type.</param>
        /// <param name="ellipsoid">The ellipsoid.</param>
        /// <param name="toWGS84">The WGS conversion parameters.</param>
        /// <param name="remarks">Remarks about this object.</param>
        /// <param name="authority">The name of the authority.</param>
        /// <param name="authorityCode">The code the authority uses to identidy this object.</param>
        /// <param name="alias">The alias of the object.</param>
        /// <param name="abbreviation">The abbreviated name of this object.</param>
        public HorizontalDatum(string name, DatumType horizontalDatumType, IEllipsoid ellipsoid, WGS84ConversionInfo toWGS84,
			string remarks, string authority, string authorityCode, string alias, string abbreviation)
            : base(horizontalDatumType, remarks, authority, authorityCode, name, alias, abbreviation)
        {
            if (ellipsoid==null)
            {
                throw new ArgumentNullException("ellipsoid");
            }
            _ellipsoid = ellipsoid;
            _wgs84ConversionInfo = toWGS84;
        }
Example #24
0
 /// <summary>
 /// Initializes a new instance of a horizontal datum
 /// </summary>
 /// <param name="ellipsoid">Ellipsoid</param>
 /// <param name="toWgs84">Parameters for a Bursa Wolf transformation into WGS84</param>
 /// <param name="type">Datum type</param>
 /// <param name="name">Name</param>
 /// <param name="id">Authority-specific identification code.</param>
 public HorizontalDatum(
     Ellipsoid ellipsoid,
     BursaTransParams toWgs84,
     DatumType type,
     string name = null,
     string id   = null)
     : base(type, name, id)
 {
     Ellipsoid       = ellipsoid;
     Wgs84Parameters = toWgs84;
 }
Example #25
0
        /// <summary>
        /// Initializes a new instance of the EventLog class with the specified properties.
        /// </summary>
        /// <param name="datumType"></param>
        /// <param name="remarks">The provider-supplied remarks.</param>
        /// <param name="authority">The authority-specific identification code.</param>
        /// <param name="authorityCode">The authority-specific identification code.</param>
        /// <param name="name">The name.</param>
        /// <param name="alias">The alias.</param>
        /// <param name="abbreviation">The abbreviation.</param>
        public Datum(	DatumType datumType,
				string remarks,
				string authorityCode,
				string authority, 
				string name,
				string alias,
				string abbreviation )
            : base(remarks,authorityCode, authority, name, alias, abbreviation)
        {
            _datumType = datumType;
        }
 private static string Convert(DatumType datumType)
 {
     if (datumType != DatumType.None)
     {
         return datumType.ToString();
     }
     else
     {
         return noSelect;
     }
 }
Example #27
0
 public HorizontalDatum(string name, DatumType horizontalDatumType, Ellipsoid ellipsoid, WGS84ConversionInfo toWGS84,
                        string remarks, string authority, string authorityCode, string alias, string abbreviation)
     : base(horizontalDatumType, remarks, authority, authorityCode, name, alias, abbreviation)
 {
     if (ellipsoid == null)
     {
         throw new ArgumentNullException("ellipsoid");
     }
     _ellipsoid           = ellipsoid;
     _wgs84ConversionInfo = toWGS84;
 }
Example #28
0
        public Dictionary <SignalRequirementsSignalRequirement, ICollection <object> > Build(TestDescription testDescription)
        {
            var requiredSignals = new Dictionary <SignalRequirementsSignalRequirement, ICollection <object> >();

            foreach (SignalRequirementsSignalRequirement signalRequirement in testDescription.SignalRequirements)
            {
                var      attributes = new List <Tuple <string, object, string> >();
                var      dao        = new InstrumentDAO();
                TsfClass tsfClass   = signalRequirement.TsfClass;
                if (tsfClass.tsfClassName.Equals("SHORT"))
                {
                    continue;
                }
                if (string.IsNullOrWhiteSpace(tsfClass.tsfClassName))
                {
                    continue;
                }
                foreach (SignalRequirementsSignalRequirementTsfClassAttribute attribute in
                         signalRequirement.TsfClassAttribute)
                {
                    TsfClassAttributeName name = attribute.Name;
                    if (attribute.Value != null)
                    {
                        if (attribute.Value.Item is DatumType)
                        {
                            DatumType datum = attribute.Value.Item as DatumType;
                            Object    value = Datum.GetNominalDatumValue(datum);
                            if (value != null)
                            {
                                attributes.Add(new Tuple <string, object, string>(name.Value, value, datum.unitQualifier));
                            }
                        }
                    }
                }

                try
                {
                    ICollection <object> capableEquipment = dao.FindCapableEquipment(attributes);
                    requiredSignals.Add(signalRequirement, capableEquipment);
                }
                catch (Exception e2)
                {
                    LogManager.SourceError(ATMLAllocator.SOURCE, "Error In TSF Class: {0} - ERROR: {1}", tsfClass.tsfClassName, e2.Message);
                    LogManager.Debug(e2);
                    foreach (var tuple in attributes)
                    {
                        LogManager.SourceError(ATMLAllocator.SOURCE, "     {0} = {1}", tuple.Item1, tuple.Item2);
                    }
                }
            }

            return(requiredSignals);
        }
 /// <summary>
 /// Creates <see cref="T:Topology.CoordinateSystems.HorizontalDatum" /> from ellipsoid and Bursa-World parameters.
 /// </summary>
 /// <remarks>
 /// Since this method contains a set of Bursa-Wolf parameters, the created
 /// datum will always have a relationship to WGS84. If you wish to create a
 /// horizontal datum that has no relationship with WGS84, then you can
 /// either specify a <see cref="T:Topology.CoordinateSystems.DatumType">horizontalDatumType</see> of <see cref="F:Topology.CoordinateSystems.DatumType.HD_Other" />, or create it via WKT.
 /// </remarks>
 /// <param name="name">Name of ellipsoid</param>
 /// <param name="datumType">Type of datum</param>
 /// <param name="ellipsoid">Ellipsoid</param>
 /// <param name="toWgs84">Wgs84 conversion parameters</param>
 /// <returns>Horizontal datum</returns>
 public IHorizontalDatum CreateHorizontalDatum(string name, DatumType datumType, IEllipsoid ellipsoid, Wgs84ConversionInfo toWgs84)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentException("Invalid name");
     }
     if (ellipsoid == null)
     {
         throw new ArgumentException("Ellipsoid was null");
     }
     return(new HorizontalDatum(ellipsoid, toWgs84, datumType, name, string.Empty, -1L, string.Empty, string.Empty, string.Empty));
 }
Example #30
0
 private void cmbLimit1Type_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (!Initializing)
     {
         datum = Datum.GetDatumFromType(cmbLimitType);
         edtDatumType.DatumType = datum;
         ControlsToData();
         if (LimitChanged != null)
         {
             LimitChanged(_singleLimit);
         }
     }
 }
Example #31
0
        /// <summary>
        /// Creates <see cref="HorizontalDatum"/> from ellipsoid and Bursa-World parameters.
        /// </summary>
        /// <remarks>
        /// Since this method contains a set of Bursa-Wolf parameters, the created
        /// datum will always have a relationship to WGS84. If you wish to create a
        /// horizontal datum that has no relationship with WGS84, then you can
        /// either specify a <see cref="DatumType">horizontalDatumType</see> of <see cref="DatumType.HD_Other"/>, or create it via WKT.
        /// </remarks>
        /// <param name="name">Name of ellipsoid</param>
        /// <param name="datumType">Type of datum</param>
        /// <param name="ellipsoid">Ellipsoid</param>
        /// <param name="toWgs84">Wgs84 conversion parameters</param>
        /// <returns>Horizontal datum</returns>
        public HorizontalDatum CreateHorizontalDatum(string name, DatumType datumType, Ellipsoid ellipsoid, BursaTransParams toWgs84)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException("Invalid name");
            }
            if (ellipsoid == null)
            {
                throw new ArgumentException("Ellipsoid was null");
            }

            return(new HorizontalDatum(ellipsoid, toWgs84, datumType, name));
        }
Example #32
0
        /// <summary>
        /// Creates horizontal datum from ellipsoid and Bursa-World parameters. Since this method
        /// contains a set of Bursa-Wolf parameters, the created datum will always have a relationship to
        /// WGS84. If you wish to create a horizontal datum that has no relationship with WGS84, then you
        /// can either specify a horizontalDatumType of IHD_Other, or create it via WKT.
        /// </summary>
        /// <param name="name">The name of the datum to create.</param>
        /// <param name="horizontalDatumType">The IDatumType type use when creating the datum.</param>
        /// <param name="ellipsoid">The ellipsoid to use then creating the datum.</param>
        /// <param name="toWGS84">WKGS conversion parameters.</param>
        /// <returns>An object that implements the IHorizontalDatum interface.</returns>
        public IHorizontalDatum CreateHorizontalDatum(string name, DatumType horizontalDatumType, IEllipsoid ellipsoid, WGS84ConversionInfo toWGS84)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (ellipsoid == null)
            {
                throw new ArgumentNullException("ellipsoid");
            }
            // no need to check horizontalDatumType and toWGS84 because they are value types.

            return(new HorizontalDatum(name, horizontalDatumType, ellipsoid, toWGS84));
        }
Example #33
0
        public override void FromWgs84(Models.LatLng wgs84Position)
        {
            var latitude  = wgs84Position.Latitude * Math.PI / 180.0;
            var longitude = wgs84Position.Longitude * Math.PI / 180.0;

            double a = 6377563.396, b = 6356256.910; // Airy 1830 major & minor semi-axes
            double F0 = 0.9996012717;                // NatGrid scale factor on central meridian
            double lat0 = 49.0 * Math.PI / 180.0;
            double lon0 = -2.0 * Math.PI / 180.0;    // NatGrid true origin
            double N0 = -100000.0, E0 = 400000.0;    // northing & easting of true origin, metres
            double e2 = 1 - (b * b) / (a * a);       // eccentricity squared
            double n = (a - b) / (a + b), n2 = n * n, n3 = n * n * n;

            double cosLat = Math.Cos(latitude), sinLat = Math.Sin(latitude);
            double nu  = a * F0 / Math.Sqrt(1.0 - e2 * sinLat * sinLat);                  // transverse radius of curvature
            double rho = a * F0 * (1.0 - e2) / Math.Pow(1.0 - e2 * sinLat * sinLat, 1.5); // meridional radius of curvature

            double eta2 = nu / rho - 1.0;

            double Ma = (1.0 + n + (5.0 / 4.0) * n2 + (5.0 / 4.0) * n3) * (latitude - lat0);
            double Mb = (3.0 * n + 3.0 * n * n + (21.0 / 8.0) * n3) * Math.Sin(latitude - lat0) * Math.Cos(latitude + lat0);
            double Mc = ((15.0 / 8.0) * n2 + (15.0 / 8.0) * n3) * Math.Sin(2.0 * (latitude - lat0)) * Math.Cos(2.0 * (latitude + lat0));
            double Md = (35.0 / 24.0) * n3 * Math.Sin(3.0 * (latitude - lat0)) * Math.Cos(3.0 * (latitude + lat0));
            double M  = b * F0 * (Ma - Mb + Mc - Md); // meridional arc

            double cos3lat = cosLat * cosLat * cosLat;
            double cos5lat = cos3lat * cosLat * cosLat;
            double tan2lat = Math.Tan(latitude) * Math.Tan(latitude);
            double tan4lat = tan2lat * tan2lat;

            double I    = M + N0;
            double II   = (nu / 2.0) * sinLat * cosLat;
            double III  = (nu / 24.0) * sinLat * cos3lat * (5.0 - tan2lat + 9.0 * eta2);
            double IIIA = (nu / 720.0) * sinLat * cos5lat * (61.0 - 58.0 * tan2lat + tan4lat);
            double IV   = nu * cosLat;
            double V    = (nu / 6.0) * cos3lat * (nu / rho - tan2lat);
            double VI   = (nu / 120.0) * cos5lat * (5.0 - 18.0 * tan2lat + tan4lat + 14.0 * eta2 - 58.0 * tan2lat * eta2);

            double dLon = longitude - lon0;
            double dLon2 = dLon * dLon, dLon3 = dLon2 * dLon, dLon4 = dLon3 * dLon, dLon5 = dLon4 * dLon, dLon6 = dLon5 * dLon;

            double N = Math.Round(I + II * dLon2 + III * dLon4 + IIIA * dLon6, 0);
            double E = Math.Round(E0 + IV * dLon + V * dLon3 + VI * dLon5, 0);

            Datum = new DatumType
            {
                Northing = (int)N,
                Easting  = (int)E
            };
        }
Example #34
0
        private void otherAttributes_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            var senderGrid = (DataGridView)sender;

            if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
                e.RowIndex >= 0)
            {
                var form = new DatumForm();
                if (DialogResult.OK == form.ShowDialog())
                {
                    DatumType value = form.Datum;
                    senderGrid.Rows[e.RowIndex].Cells[1].Value = value.ToString();
                }
            }
        }
Example #35
0
        public override Models.LatLng ToWgs84()
        {
            DatumType datum = Datum;
            var       initDelta = 0.01;
            var       threshold = 0.000000001;
            var       dLat = initDelta;
            var       dLon = initDelta;
            var       mLat = datum.Latitude - dLat;
            var       mLon = datum.Longitude - dLon;
            var       pLat = datum.Latitude + dLat;
            var       pLon = datum.Longitude + dLon;
            double    wgsLat = 0.0, wgsLon = 0.0;

            for (var i = 0; i != 10000; i++)
            {
                wgsLat = (mLat + pLat) / 2.0;
                wgsLon = (mLon + pLon) / 2.0;
                var tmp = gcj_encrypt(wgsLat, wgsLon);
                dLat = tmp.Latitude - datum.Latitude;
                dLon = tmp.Longitude - datum.Longitude;
                if ((Math.Abs(dLat) < threshold) && (Math.Abs(dLon) < threshold))
                {
                    break;
                }

                if (dLat > 0.0)
                {
                    pLat = wgsLat;
                }
                else
                {
                    mLat = wgsLat;
                }
                if (dLon > 0.0)
                {
                    pLon = wgsLon;
                }
                else
                {
                    mLon = wgsLon;
                }
            }
            return(new Models.LatLng()
            {
                Latitude = wgsLat,
                Longitude = wgsLon
            });
        }
Example #36
0
 /// <summary>
 /// Creates a <see cref="IVerticalDatum"/> from an enumerated type value.
 /// </summary>
 /// <param name="name">Name of datum</param>
 /// <param name="datumType">Type of datum</param>
 /// <returns>Vertical datum</returns>	
 public IVerticalDatum CreateVerticalDatum(string name, DatumType datumType)
 {
     throw new NotImplementedException();
 }
Example #37
0
        /// <summary>
        /// Creates <see cref="HorizontalDatum"/> from ellipsoid and Bursa-World parameters.
        /// </summary>
        /// <remarks>
        /// Since this method contains a set of Bursa-Wolf parameters, the created 
        /// datum will always have a relationship to WGS84. If you wish to create a
        /// horizontal datum that has no relationship with WGS84, then you can 
        /// either specify a <see cref="DatumType">horizontalDatumType</see> of <see cref="DatumType.HD_Other"/>, or create it via WKT.
        /// </remarks>
        /// <param name="name">Name of ellipsoid</param>
        /// <param name="datumType">Type of datum</param>
        /// <param name="ellipsoid">Ellipsoid</param>
        /// <param name="toWgs84">Wgs84 conversion parameters</param>
        /// <returns>Horizontal datum</returns>
        public IHorizontalDatum CreateHorizontalDatum(string name, DatumType datumType, IEllipsoid ellipsoid, Wgs84ConversionInfo toWgs84)
        {
            if (string.IsNullOrEmpty(name))
                throw new ArgumentException("Invalid name");
            if (ellipsoid == null)
                throw new ArgumentException("Ellipsoid was null");

            return new HorizontalDatum(ellipsoid, toWgs84, datumType, name, String.Empty, -1, String.Empty, String.Empty, String.Empty);
        }
		/// <summary>
		/// Creates a local datum.
		/// </summary>
		/// <param name="name">The name of the datum.</param>
		/// <param name="localDatumType">The type of datum.</param>
		/// <returns>An object that implements the ILocalDatum interface.</returns>
		public ILocalDatum CreateLocalDatum(string name, DatumType localDatumType)
		{
			if (name==null)
			{
				throw new ArgumentNullException("name");
			}
			return new LocalDatum(name, localDatumType);
		}
Example #39
0
        /// <summary>
        /// Initializes to WGS84.
        /// </summary>
        /// <param name="values">The values.</param>
        public void InitializeToWgs84(string[] values)
        {
            _toWgs84 = new double[values.Length];
            for (int i = 0; i < values.Length; i++)
            {
                _toWgs84[i] = double.Parse(values[i], CultureInfo.InvariantCulture);
            }

            if (_toWgs84.Length != 3 && _toWgs84.Length != 7)
                throw new ArgumentOutOfRangeException("Unrecognized ToWgs84 array length. The number of elements in the array should be 3 or 7");

            if (_toWgs84.Length == 3)
            {
                _datumtype = DatumType.Param3;
            }
            else
            {
                // checking to see if several blank values were included.
                if (_toWgs84[3] == 0.0 && _toWgs84[4] == 0.0 && _toWgs84[5] == 0.0 && _toWgs84[6] == 0.0)
                {
                    _datumtype = DatumType.Param3;
                }
                else
                {
                    _datumtype = DatumType.Param7;
                    // Transform from arc seconds to radians
                    _toWgs84[3] *= SEC_TO_RAD;
                    _toWgs84[4] *= SEC_TO_RAD;
                    _toWgs84[5] *= SEC_TO_RAD;
                    // transform from parts per millon to scaling factor
                    _toWgs84[6] = (_toWgs84[6] / 1000000.0) + 1;
                }
            }
        }
Example #40
0
 /// <summary>
 ///  Initializes a new instance of the HorizontalDatum class with the specififed properties.
 /// </summary>
 /// <param name="name">The name of the datum.</param>
 /// <param name="horizontalDatumType">The datum type.</param>
 /// <param name="ellipsoid">The ellipsoid.</param>
 /// <param name="toWGS84">The WGS conversion parameters.</param>
 internal HorizontalDatum(string name, DatumType horizontalDatumType, IEllipsoid ellipsoid, WGS84ConversionInfo toWGS84)
     : this(name, horizontalDatumType, ellipsoid, toWGS84,"", "", "", "", "")
 {
 }
Example #41
0
 private Datum(SerializationInfo info, StreamingContext context)
 {
     this.Name = info.GetString("Name");
     this.Spheroid = (Spheroid)info.GetValue("Spheroid", typeof(Spheroid));
     this.Type = (DatumType)info.GetValue("Type", typeof(DatumType));
 }
Example #42
0
 /// <summary>
 /// Initializes a new instane of Datun.
 /// </summary>
 /// <param name="name">The name of the datum.</param>
 /// <param name="datumType">The type of the datum.</param>
 internal Datum(string name, DatumType datumType)
     : this(datumType, "", "", "", name, "","")
 {
 }
Example #43
0
 /// <summary>
 /// Initializes a new instance of the LocalDatum class with the specified propeties.
 /// </summary>
 /// <param name="name">The name of the datum.</param>
 /// <param name="datumType">The Datum type.</param>
 internal LocalDatum(string name, DatumType datumType)
     : base(name, datumType)
 {
 }
Example #44
0
 /// <summary>
 /// Initializes a new instance of the VerticalDatum class with the specified properties.
 /// </summary>
 /// <param name="name">The name of the vertical datum.</param>
 /// <param name="verticalDatumType">The datum type.</param>
 internal VerticalDatum(string name, DatumType verticalDatumType)
     : this(verticalDatumType,"","","",name,"","")
 {
 }
 public static string DatumTypeAsCode(DatumType datumtype)
 {
     string datumCode = Enum.Format(typeof(DatumType),datumtype, "d");
     return datumCode;
 }
Example #46
0
 /// <summary>
 /// Initializes a new instance of the Datum class with the specified properties.
 /// </summary>
 /// <param name="datumType">The datum type.</param>
 internal Datum(DatumType datumType)
     : this(datumType, "", "", "", "", "","")
 {
 }
 public IHorizontalDatum CreateHorizontalDatum(string name, DatumType datumType, IEllipsoid ellipsoid,
     Wgs84ConversionInfo toWgs84)
 {
     throw new NotImplementedException();
 }
		/// <summary>
		/// Creates horizontal datum from ellipsoid and Bursa-World parameters. Since this method
		/// contains a set of Bursa-Wolf parameters, the created datum will always have a relationship to
		/// WGS84. If you wish to create a horizontal datum that has no relationship with WGS84, then you
		/// can either specify a horizontalDatumType of IHD_Other, or create it via WKT.
		/// </summary>
		/// <param name="name">The name of the datum to create.</param>
		/// <param name="horizontalDatumType">The IDatumType type use when creating the datum.</param>
		/// <param name="ellipsoid">The ellipsoid to use then creating the datum.</param>
		/// <param name="toWGS84">WKGS conversion parameters.</param>
		/// <returns>An object that implements the IHorizontalDatum interface.</returns>
		public IHorizontalDatum CreateHorizontalDatum(string name, DatumType horizontalDatumType, IEllipsoid ellipsoid,  WGS84ConversionInfo toWGS84)
		{
			if (name==null)
			{
				throw new ArgumentNullException("name");
			}
			if (ellipsoid==null)
			{
				throw new ArgumentNullException("ellipsoid");
			}
			// no need to check horizontalDatumType and toWGS84 because they are value types.

			return new HorizontalDatum(name, horizontalDatumType, ellipsoid, toWGS84);
		}
		/// <summary>
		/// Creates a vertical datum from an enumerated type value.
		/// </summary>
		/// <param name="name">The name of the datum to create.</param>
		/// <param name="verticalDatumType">The IDatumType type use when creating the datum.</param>
		/// <returns>An object that implements the IVerticalDatum interface.</returns>
		public IVerticalDatum CreateVerticalDatum(string name, DatumType verticalDatumType)
		{
			if (name==null)
			{
				throw new ArgumentNullException("name");
			}
			// no need to check verticalDatumType because IDatumType is an enum and cannot null.
			return new VerticalDatum(name, verticalDatumType);
		}