示例#1
0
        private double DistanceInBaseUnits(string distance, out bool error)
        {
            error = false;
            if ((distance == null) || (distance == ""))
            {
                return(0);
            }

            string distanceUnitless = distance;

            esriCadastralDistanceUnits du = GeometryUtil.GetUnit(ref distanceUnitless, out error);
            double metersFactor           = 1.0;

            if (_xmlConfig != null)
            {
                metersFactor = _xmlConfig.EntryUnitsPerMeter; // Entry units factor to meters?
            }
            if (du != esriCadastralDistanceUnits.eUnknown)
            {
                metersFactor = GeometryUtil.UnitFactor(du); // Did the user override the entry
            }
            // units with there own factor?
            double dblValue;

            double.TryParse(distanceUnitless, out dblValue);
            return(dblValue * (metersFactor / _xmlConfig.SpatialReferenceUnitsPerMeter)); // Distance in SR
        }
示例#2
0
        public static double UnitFactor(esriCadastralDistanceUnits du)
        {
            switch (du)
              {
            case esriCadastralDistanceUnits.eMeters:
              return 1.0;
            case esriCadastralDistanceUnits.eMillimeters:
              return 0.001;
            case esriCadastralDistanceUnits.eCentimeters:
              return 0.01;
            case esriCadastralDistanceUnits.eKilometers:
              return 1000.0;
            case esriCadastralDistanceUnits.eFeet:
              return 0.3048;
            case esriCadastralDistanceUnits.eYards:
              return 0.9144;
            case esriCadastralDistanceUnits.eInches:
              return 0.0254;
            case esriCadastralDistanceUnits.eMiles:
              return 1609.344;
            case esriCadastralDistanceUnits.eChains:
              return 20.1168;
            case esriCadastralDistanceUnits.eLinks:
              return 0.201168;
            case esriCadastralDistanceUnits.eRods:
              return 5.0292;
            case esriCadastralDistanceUnits.eSurveyFeet:
              return (1200.0 / 3937.0);
            case esriCadastralDistanceUnits.eSurveyYards:
              return (1200.0 / 3937.0) * 3.0;
            case esriCadastralDistanceUnits.eSurveyMiles:
              return (1200.0 / 3937.0 * 5280.0);
            case esriCadastralDistanceUnits.eSurveyChains:
              return (1200.0 / 3937.0 * 66.0);
            case esriCadastralDistanceUnits.eSurveyLinks:
              return (1200.0 / 3937.0 * 0.66);
            case esriCadastralDistanceUnits.eSurveyRods:
              return (1200.0 / 3937.0 * 16.5);
            case esriCadastralDistanceUnits.eRomanMiles:
              return 2375.0 / 1.5;
            case esriCadastralDistanceUnits.eNauticalMiles:
              return 1852.0;
              }

              return 1.0;
        }
示例#3
0
        static public esriCadastralDistanceUnits GetUnit(ref string distance, out bool error)
        {
            string[] units = { "m",  "mm",   "cm",   "km",   "ft",   "'",   "yd",   "in",  "\"", "mi", "ch", "k",
                               "rd", "ftus", "ydus", "mius", "chus", "kus", "rdus", "rmi", "nm" };

            error = false;
            string unitPart   = "";
            string numberPart = "";
            bool   started    = false;

            foreach (char ch in distance)
            {
                if (!started)
                {
                    started = char.IsLetter(ch);
                }
                if (started)
                {
                    unitPart += char.ToLower(ch);
                }
                else
                {
                    numberPart += ch;
                }
            }
            distance = numberPart;

            if (unitPart == "")
            {
                return(esriCadastralDistanceUnits.eUnknown);
            }

            // Compare strings
            Int32 index = 0;

            foreach (string unit in units)
            {
                if (unitPart == unit)
                {
                    break;
                }
                index++;
            }

            esriCadastralDistanceUnits du = esriCadastralDistanceUnits.eUnknown;

            switch (index)
            {
            case 0: du = esriCadastralDistanceUnits.eMeters;
                break;

            case 1: du = esriCadastralDistanceUnits.eMillimeters;
                break;

            case 2: du = esriCadastralDistanceUnits.eCentimeters;
                break;

            case 3: du = esriCadastralDistanceUnits.eKilometers;
                break;

            case 4:
            case 5: du = esriCadastralDistanceUnits.eFeet;
                break;

            case 6: du = esriCadastralDistanceUnits.eYards;
                break;

            case 7:
            case 8: du = esriCadastralDistanceUnits.eInches;
                break;

            case 9: du = esriCadastralDistanceUnits.eMiles;
                break;

            case 10: du = esriCadastralDistanceUnits.eChains;
                break;

            case 11: du = esriCadastralDistanceUnits.eLinks;
                break;

            case 12: du = esriCadastralDistanceUnits.eRods;
                break;

            case 13: du = esriCadastralDistanceUnits.eSurveyFeet;
                break;

            case 14: du = esriCadastralDistanceUnits.eSurveyYards;
                break;

            case 15: du = esriCadastralDistanceUnits.eSurveyMiles;
                break;

            case 16: du = esriCadastralDistanceUnits.eSurveyChains;
                break;

            case 17: du = esriCadastralDistanceUnits.eSurveyLinks;
                break;

            case 18: du = esriCadastralDistanceUnits.eSurveyRods;
                break;

            case 19: du = esriCadastralDistanceUnits.eRomanMiles;
                break;

            case 20: du = esriCadastralDistanceUnits.eNauticalMiles;
                break;

            default:
                error = true;
                break;
            }

            return(du);
        }
示例#4
0
        static public double UnitFactor(esriCadastralDistanceUnits du)
        {
            switch (du)
            {
            case esriCadastralDistanceUnits.eMeters:
                return(1.0);

            case esriCadastralDistanceUnits.eMillimeters:
                return(0.001);

            case esriCadastralDistanceUnits.eCentimeters:
                return(0.01);

            case esriCadastralDistanceUnits.eKilometers:
                return(1000.0);

            case esriCadastralDistanceUnits.eFeet:
                return(0.3048);

            case esriCadastralDistanceUnits.eYards:
                return(0.9144);

            case esriCadastralDistanceUnits.eInches:
                return(0.0254);

            case esriCadastralDistanceUnits.eMiles:
                return(1609.344);

            case esriCadastralDistanceUnits.eChains:
                return(20.1168);

            case esriCadastralDistanceUnits.eLinks:
                return(0.201168);

            case esriCadastralDistanceUnits.eRods:
                return(5.0292);

            case esriCadastralDistanceUnits.eSurveyFeet:
                return(1200.0 / 3937.0);

            case esriCadastralDistanceUnits.eSurveyYards:
                return((1200.0 / 3937.0) * 3.0);

            case esriCadastralDistanceUnits.eSurveyMiles:
                return(1200.0 / 3937.0 * 5280.0);

            case esriCadastralDistanceUnits.eSurveyChains:
                return(1200.0 / 3937.0 * 66.0);

            case esriCadastralDistanceUnits.eSurveyLinks:
                return(1200.0 / 3937.0 * 0.66);

            case esriCadastralDistanceUnits.eSurveyRods:
                return(1200.0 / 3937.0 * 16.5);

            case esriCadastralDistanceUnits.eRomanMiles:
                return(2375.0 / 1.5);

            case esriCadastralDistanceUnits.eNauticalMiles:
                return(1852.0);
            }

            return(1.0);
        }
        private bool RunAdjustment(ICadastralPacketManager pCadastralPacketManager,
                                   ICadastralAdjustment pCadAdj, ICadastralAdjustment3 pCadAdjEx, int Iteration, out double MaxShift, out string Summary)
        {
            esriCadastralDistanceUnits eDistUnits  = esriCadastralDistanceUnits.esriCDUUSSurveyFoot;
            esriDirectionType          eDirectType = esriDirectionType.esriDTNorthAzimuth;
            esriCadastralAreaUnits     eAreaUnits  = esriCadastralAreaUnits.esriCAUAcre;

            ICadastralPlan pCadPlan = (ICadastralPlan)pCadAdj;
            IEnumGSPlans   pGSPlans = pCadPlan.GetPlans(enumGSPlansType.enumGSPlansWithParcels);

            pGSPlans.Reset();
            IGSPlan pGSPlan = pGSPlans.Next();

            while (pGSPlan != null)
            {
                eDistUnits  = pGSPlan.DistanceUnits;
                eDirectType = pGSPlan.DirectionFormat;
                eAreaUnits  = esriCadastralAreaUnits.esriCAUAcre;
                break; //just use the first one
            }

            double dMaxShift = -999;
            string sSummary  = "";

            MaxShift = dMaxShift;
            try
            {
                //get the units from the map plan

                sSummary =
                    pCadAdj.PerformAdjustment(false, m_sBrowseFilePath, null, eDistUnits, eDirectType, eAreaUnits);

                double dMaxEast  = -999;
                double dMaxNorth = -999;
                int    iPt       = -999;
                pCadAdjEx.GetMaxShiftData(ref iPt, ref dMaxEast, ref dMaxNorth);

                double dDistEast  = -999;
                double dDistNorth = -999;

                IMetricUnitConverter pUnitConversion = (IMetricUnitConverter)pCadastralPacketManager;
                pUnitConversion.ConvertDistance(esriCadastralUnitConversionType.esriCUCFromMetric,
                                                dMaxEast, ref dDistEast);
                pUnitConversion.ConvertDistance(esriCadastralUnitConversionType.esriCUCFromMetric,
                                                dMaxNorth, ref dDistNorth);

                dMaxShift = Math.Sqrt((dDistEast * dDistEast) + (dDistNorth * dDistNorth));

                return(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(false);
            }

            finally
            {
                MaxShift = dMaxShift;
                Summary  = sSummary;
            }
        }