Example #1
0
        /// <summary>
        /// 从比例尺列表中,选择能够展示指定要素范围的最合适比例尺
        /// </summary>
        /// <param name="pageLayout">页面布局</param>
        /// <param name="mapFrame">要设定显示范围及比例尺的地图数据框</param>
        /// <param name="featureEnv">地图要素显示范围</param>
        /// <param name="scaleList">比例尺列表,将从中选取最合适的比例尺</param>
        /// <param name="bufferDistance">要素与图廓的缓冲距离(厘米),即地图实际显示范围是featEnvelope + 2 * bufferDistance</param>
        /// <returns></returns>
        public static double SetMapScale(this IPageLayout pageLayout, IMapFrame mapFrame,
                                         IEnvelope featureEnv, double[] scaleList, double bufferDistance = 2)
        {
            esriUnits pageUnit = pageLayout.Page.Units;
            esriUnits mapUnit  = mapFrame.Map.DistanceUnits;
            esriUnits cmUnit   = esriUnits.esriCentimeters; //厘米

            IEnvelope      mapFrameEnv   = (mapFrame as IElement)?.Geometry.Envelope;
            IUnitConverter unitConverter = new UnitConverterClass();
            double         wScale        = unitConverter.ConvertUnits(featureEnv.Width, mapUnit, cmUnit) / (unitConverter.ConvertUnits(mapFrameEnv.Width, pageUnit, cmUnit) - 2 * bufferDistance);
            double         hScale        = unitConverter.ConvertUnits(featureEnv.Height, mapUnit, cmUnit) / (unitConverter.ConvertUnits(mapFrameEnv.Height, pageUnit, cmUnit) - 2 * bufferDistance);
            double         dScale        = wScale > hScale ? wScale : hScale;

            int maxIndex = 0;

            while (maxIndex < scaleList.Length && dScale > scaleList[maxIndex])
            {
                maxIndex++;//寻找比要素全图廓显示所确定的比例尺小一级的比例尺
            }
            if (maxIndex == scaleList.Length)
            {
                throw new Exception("需要更小的比例尺!");
            }

            return(scaleList[maxIndex]);
        }
Example #2
0
        public double ang = 0;//yjl20110816 add 角度测量的角度

        //构造函数
        public frmMeasureResult(esriUnits in_DisplayUnit, ControlsMapMeasureToolDefClass inTool)
        {
            InitializeComponent();
            m_CurMeasureType           = 0;
            m_bIsFeatureMeasure        = false;
            toolMeasureArea.Checked    = false;
            toolMeasureFeature.Checked = false;
            toolMeasureLine.Checked    = true;

            m_bShowSum                = false;
            m_bSnapToFeature          = false;
            toolShowSum.Checked       = false;
            toolSnapToFeature.Checked = false;
            toolM.Checked             = true;//选中M
            toolKM.Checked            = false;
            // toolM.ReadOnly = true;
            //toolSquareM.ReadOnly = true;
            /////
            this.m_Displayunit = in_DisplayUnit;
            if (in_DisplayUnit == esriUnits.esriUnknownUnits)//地图单位
            {
                m_Displayunit = esriUnits.esriMeters;
            }
            pTool = inTool;
        }
Example #3
0
        private void combox_unit_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (combox_unit.SelectedIndex)
            {
            case 0:
                unit = esriUnits.esriMeters;
                break;

            case 1:
                unit = esriUnits.esriKilometers;
                break;

            case 2:
                unit = esriUnits.esriFeet;
                break;

            case 3:
                unit = esriUnits.esriMiles;
                break;

            default:
                unit = esriUnits.esriMeters;
                break;
            }

            double len = conv.ConvertUnits(pCurve.Length, mapunit, unit);

            trkbar_seg.Maximum = (int)len / 3;
            trkbar_seg.Minimum = (int)len / 300;
            trkbar_seg.Value   = (int)len / 30;
            txtbox_seg.Text    = ((int)len / 30).ToString();
            txtbox_min.Text    = ((int)len / 300).ToString();
            txtbox_max.Text    = ((int)len / 3).ToString();
        }
Example #4
0
        //获得单位
        private string GetUnitsName(esriUnits nUnit)
        {
            switch ((int)nUnit)
            {
            case 1:
                return("英寸");

            case 3:
                return("英尺");

            case 7:
                return("毫米");

            case 8:
                return("厘米");

            case 9:
                return("米");

            case 10:
                return("千米");

            case 12:
                return("分米");

            default:
                return("未知");
            }
        }
        /// <summary>
        /// 将输入的数据单位转化为米
        /// </summary>
        /// <param name="dValue"></param>
        /// <param name="outUnits"></param>
        /// <returns></returns>
        public double UnitsConvertToMeters(double dValue, esriUnits outUnits)
        {
            IUnitConverter unitConverter = new UnitConverterClass();
            double         newValue      = unitConverter.ConvertUnits(dValue, esriUnits.esriMeters, outUnits);

            return(newValue);
        }
Example #6
0
        private double method_9(esriUnits esriUnits_0, double double_0)
        {
            switch (esriUnits_0)
            {
            case esriUnits.esriMillimeters:
                return(double_0 * 0.1);

            case esriUnits.esriCentimeters:
                return(double_0);

            case esriUnits.esriMeters:
                return(double_0 * 100.0);

            case esriUnits.esriKilometers:
                return(double_0 * 100000.0);

            case esriUnits.esriDecimalDegrees:
                return(double_0);

            case esriUnits.esriDecimeters:
                return(double_0 * 10.0);

            case esriUnits.esriInches:
                return(double_0 * 2.54);
            }
            return(double_0);
        }
        protected double UnitFactor(ISpatialReference sr, esriUnits units,
                                    double referenceScale)
        {
            var pc = sr as IProjectedCoordinateSystem;

            if (pc == null)
            {
                return(1);
            }

            if (_unitConverter == null)
            {
                _unitConverter = new UnitConverterClass();
            }

            double f = _unitConverter.ConvertUnits(1, esriUnits.esriMeters, units);

            f = f * pc.CoordinateUnit.MetersPerUnit;
            f = f * referenceScale;

            if (_unitsType == typeof(LengthUnits))
            {
            }
            else if (_unitsType == typeof(AreaUnits))
            {
                f = f * f;
            }
            else
            {
                throw new ArgumentException("Unhandled Unit type " + _unitsType);
            }

            return(f);
        }
Example #8
0
        internal static string GetUnitString(esriUnits lengthUnit)
        {
            switch (lengthUnit)
            {
            case esriUnits.esriKilometers:
                return("km");

            case esriUnits.esriMeters:
                return("m");

            case esriUnits.esriDecimeters:
                return("dm");

            case esriUnits.esriCentimeters:
                return("cm");

            case esriUnits.esriMillimeters:
                return("mm");

            case esriUnits.esriUnknownUnits:
                return(null);

            default:
                return(GetEsriUnitsAsString(lengthUnit));
            }
        }
Example #9
0
        private void method_0()
        {
            if (ScaleTextFormatPropertyPage.m_pScaleText != null)
            {
                this.symbolItem1.Symbol       = ScaleTextFormatPropertyPage.m_pScaleText;
                this.txtMapUnitLabel.Text     = ScaleTextFormatPropertyPage.m_pScaleText.MapUnitLabel;
                this.txtPageUnitLabel.Text    = ScaleTextFormatPropertyPage.m_pScaleText.PageUnitLabel;
                this.cboMapUnit.SelectedIndex = (int)ScaleTextFormatPropertyPage.m_pScaleText.MapUnits;
                this.rdoStyle.SelectedIndex   = (int)ScaleTextFormatPropertyPage.m_pScaleText.Style;
                esriUnits pageUnits = ScaleTextFormatPropertyPage.m_pScaleText.PageUnits;
                switch (pageUnits)
                {
                case esriUnits.esriInches:
                    this.cboPageUnit.SelectedIndex = 1;
                    return;

                case esriUnits.esriPoints:
                    this.cboPageUnit.SelectedIndex = 2;
                    return;
                }
                if (pageUnits == esriUnits.esriCentimeters)
                {
                    this.cboPageUnit.SelectedIndex = 0;
                }
            }
        }
Example #10
0
        //坐标单位转换为中文
        public string GetUnitNameChn(esriUnits vUnit)
        {
            switch (vUnit)
            {
            case esriUnits.esriKilometers:
                return("公里");

            case esriUnits.esriMeters:
                return("米");

            case esriUnits.esriCentimeters:
                return("厘米");

            case esriUnits.esriDecimeters:
                return("分米");

            case esriUnits.esriMillimeters:
                return("毫米");

            case esriUnits.esriDecimalDegrees:
                return("度");

            default:
                return("未知");
            }
        }
Example #11
0
        static public bool UnitFactor(string sourceUnit, out double factor)
        {
            esriUnits esriUnit = UnitEsri(sourceUnit);

            if (esriUnit != esriUnits.esriUnknownUnits)
            {
                return(UnitFactor(esriUnit, out factor));
            }

            switch (sourceUnit.ToLower())
            {
            case "foot":
            case "feet":
                factor = UnitFactor(esriCadastralDistanceUnits.eFeet);
                return(true);

            case "foot_us":
            case "feet_us":
                factor = UnitFactor(esriCadastralDistanceUnits.eSurveyFeet);
                return(true);

            case "meter":
            case "metre":
                factor = UnitFactor(esriCadastralDistanceUnits.eMeters);
                return(true);
            }

            factor = 1.0;
            return(false);
        }
Example #12
0
        static public esriCadastralAreaUnits DefaultAreaUnit(esriUnits eCadastralLayerDistanceUnit)
        {
            switch (eCadastralLayerDistanceUnit)
            {
            case esriUnits.esriMeters:
                return(esriCadastralAreaUnits.esriCAUSquareMeter);

            case esriUnits.esriFeet:
                return(esriCadastralAreaUnits.esriCAUSquareFoot); // esriCAUAcre;

                // TODO...

                //case esriCDUUSSurveyFoot:
                //  return esriCAUAcre;
                //break;

                //// aka, default to meters for:
                //case esriCDUChain:
                //case esriCDULink:
                //case esriCDURod:
                //  return esriCadastralAreaUnits.esriCAUMetric;

                //case esriCDUUSSurveyChain:
                //case esriCDUUSSurveyLink:
                //case esriCDUUSSurveyRod:
                //    return esriCadastralAreaUnits.esriCAUAcre;
            }

            return(esriCadastralAreaUnits.esriCAUSquareMeter); // default will always catch this.
        }
Example #13
0
        static public string GetUnit(esriUnits eDistanceType, bool shortNotation)
        {
            if (!shortNotation)
            {
                switch (eDistanceType)
                {
                case esriUnits.esriMeters:
                    return((string)Application.Current.FindResource("strMeters"));

                case esriUnits.esriFeet:
                    return((string)Application.Current.FindResource("strFeet"));
                }
            }

            else
            {
                switch (eDistanceType)
                {
                case esriUnits.esriMeters:
                    return((string)Application.Current.FindResource("strMetersShort"));

                case esriUnits.esriFeet:
                    return((string)Application.Current.FindResource("strFeetShort"));
                }
            }

            return("");
        }
Example #14
0
        /// <summary>
        /// Handler operation Identify Route
        /// </summary>
        /// <param name="boundVariables">list of variables bound</param>
        /// <param name="operationInput">input of operation</param>
        /// <param name="outputFormat">format of output</param>
        /// <param name="requestProperties">list of request properties</param>
        /// <param name="responseProperties">list of response properties </param>
        /// <returns>response in byte</returns>
        private byte[] IdentifyRouteOperHandler(NameValueCollection boundVariables, JsonObject operationInput, string outputFormat, string requestProperties, out string responseProperties)
        {
            responseProperties = "{\"Content-Type\" : \"application/json\"}";
            string methodName   = MethodBase.GetCurrentMethod().Name;
            int    routeLayerID = Convert.ToInt32(boundVariables["RouteLayersID"], CultureInfo.InvariantCulture);

            esriUnits routeMeasureUnit = DSUtility.GetMeasureUnit(operationInput, MeasureUnit.routeMeasureUnit);

            IFeatureClass  featureClass          = this.GetRouteFeatureClass(routeLayerID);
            string         routeIDFieldNameValue = DSUtility.GetRouteIDFieldName(operationInput, featureClass.OIDFieldName);
            IRouteLocator2 routeLocator          = DSUtility.GetRouteLocator(featureClass, routeIDFieldNameValue, routeMeasureUnit);

            double?tolerance;
            bool   found = operationInput.TryGetAsDouble("tolerance", out tolerance);

            if (!found || !tolerance.HasValue)
            {
                tolerance = 0.0;
            }

            JsonObject jsonLocation;

            if (!operationInput.TryGetJsonObject("location", out jsonLocation))
            {
                throw new ArgumentException("Invalid location", methodName);
            }

            IPoint location = Conversion.ToGeometry(jsonLocation, esriGeometryType.esriGeometryPoint) as IPoint;

            if (location == null)
            {
                throw new ArgumentException("Invalid location", methodName);
            }

            IEnvelope envelope = location.Envelope;

            envelope.Expand(tolerance.Value, tolerance.Value, false);

            IRouteMeasurePointLocation routeMeasurePointLocation = new RouteMeasurePointLocationClass();
            IRouteLocation             routeLocation;
            IFeature   feature;
            JsonObject result = new JsonObject();

            List <JsonObject>        measures   = new List <JsonObject>();
            IEnumRouteIdentifyResult enumResult = routeLocator.Identify(envelope, string.Empty);

            for (int i = 1; i <= enumResult.Count; i++)
            {
                enumResult.Next(out routeLocation, out feature);
                routeMeasurePointLocation = (IRouteMeasurePointLocation)routeLocation;
                JsonObject measure = new JsonObject();
                measure.AddString("routeID", routeLocation.RouteID.ToString());
                measure.AddDouble("measure", routeMeasurePointLocation.Measure);
                measures.Add(measure);
            }

            result.AddArray("location", measures.ToArray());

            return(result.JsonByte());
        }
Example #15
0
 /// <summary>
 /// 设置测量格网的单位和间隔
 /// </summary>
 /// <param name="pMeasuredGrid">测量格网</param>
 /// <param name="units">单位</param>
 /// <param name="xInter">X间隔</param>
 /// <param name="yInter">Y间隔</param>
 public static void SetMeasuredGrid(IMeasuredGrid pMeasuredGrid, esriUnits units, double xInter, double yInter)
 {
     pMeasuredGrid.Units         = units;  //单位
     pMeasuredGrid.FixedOrigin   = false;
     pMeasuredGrid.XIntervalSize = xInter; //间隔
     pMeasuredGrid.YIntervalSize = yInter; //间隔
 }
Example #16
0
        public static double AsMeters(esriUnits sourceUnit, double value)
        {
            double factor = 1.0;
              UnitFactor(sourceUnit, out factor); // will return 1.0 on error.

              return factor * value;
        }
Example #17
0
        private string sMapUnit = "未知单位";//地图单位变量

        private string GetMapUnit(esriUnits esriUnit)
        {
            string MapUnit = "";

            switch (esriUnit)
            {
            case esriUnits.esriCentimeters:
                MapUnit = "厘米";
                break;

            case esriUnits.esriDecimalDegrees:
                MapUnit = "十进制";
                break;

            case esriUnits.esriDecimeters:
                MapUnit = "分米";
                break;

            case esriUnits.esriFeet:
                MapUnit = "尺";
                break;

            case esriUnits.esriInches:
                MapUnit = "英尺";
                break;

            case esriUnits.esriKilometers:
                MapUnit = "千米";
                break;

            case esriUnits.esriMeters:
                MapUnit = "米";
                break;

            case esriUnits.esriMiles:
                MapUnit = "英里";
                break;

            case esriUnits.esriMillimeters:
                MapUnit = "毫米";
                break;

            case esriUnits.esriNauticalMiles:
                MapUnit = "海里";
                break;

            case esriUnits.esriPoints:
                MapUnit = "点";
                break;

            case esriUnits.esriYards:
                MapUnit = "码";
                break;

            case esriUnits.esriUnknownUnits:
                MapUnit = "未知单位";
                break;
            }
            return(MapUnit);
        }
        //单位
        private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
        {
            esriUnits mapUnits = axMapControl1.MapUnits;

            switch (mapUnits)
            {
            case esriUnits.esriCentimeters:
                sMapUnits = "Centimeters";
                break;

            case esriUnits.esriDecimalDegrees:
                sMapUnits = "Decimal Degrees";
                break;

            case esriUnits.esriDecimeters:
                sMapUnits = "Decimeters";
                break;

            case esriUnits.esriFeet:
                sMapUnits = "Feet";
                break;

            case esriUnits.esriInches:
                sMapUnits = "Inches";
                break;

            case esriUnits.esriKilometers:
                sMapUnits = "Kilometers";
                break;

            case esriUnits.esriMeters:
                sMapUnits = "Meters";
                break;

            case esriUnits.esriMiles:
                sMapUnits = "Miles";
                break;

            case esriUnits.esriMillimeters:
                sMapUnits = "Millimeters";
                break;

            case esriUnits.esriNauticalMiles:
                sMapUnits = "NauticalMiles";
                break;

            case esriUnits.esriPoints:
                sMapUnits = "Points";
                break;

            case esriUnits.esriUnknownUnits:
                sMapUnits = "Unknown";
                break;

            case esriUnits.esriYards:
                sMapUnits = "Yards";
                break;
            }
        }
Example #19
0
        static public double AsMeters(esriUnits sourceUnit, double value)
        {
            double factor = 1.0;

            UnitFactor(sourceUnit, out factor); // will return 1.0 on error.

            return(factor * value);
        }
Example #20
0
 private void toolMM_Click(object sender, EventArgs e)
 {
     this.m_Units   = esriUnits.esriMillimeters;
     toolKM.Checked = false;
     toolM.Checked  = false;
     toolCM.Checked = false;
     toolMM.Checked = true;
 }
Example #21
0
        //将厘米转换为其他单位
        private void ConvertUnit(esriUnits units, ref double x, ref double y)
        {
            switch (units)
            {
            case esriUnits.esriDecimeters:
                x /= 10;
                y /= 10;
                break;

            case esriUnits.esriFeet:
                x /= 30.48;
                y /= 30.48;
                break;

            case esriUnits.esriInches:
                x /= 2.54;
                y /= 2.54;
                break;

            case esriUnits.esriKilometers:
                x /= 100000;
                y /= 100000;
                break;

            case esriUnits.esriMeters:
                x /= 100;
                y /= 100;
                break;

            case esriUnits.esriMiles:
                x /= 160934.4;
                y /= 160934.4;
                break;

            case esriUnits.esriMillimeters:
                x *= 10;
                y *= 10;
                break;

            case esriUnits.esriNauticalMiles:
                x /= 185200;
                y /= 185200;
                break;

            case esriUnits.esriPoints:
                x *= 28.346456;
                y *= 28.346456;
                break;

            case esriUnits.esriYards:
                x /= 91.44;
                y /= 91.44;
                break;

            default:
                break;
            }
        }
Example #22
0
        /// <summary>
        /// 转换点坐标,从默认坐标转换当前坐标
        /// </summary>
        /// <param name="vPoint"></param>
        /// <param name="defaultUnit"></param>
        /// <param name="currentUnit"></param>
        /// <returns></returns>
        public static IPoint ConvertPointCoordinate(IPoint vPoint, esriUnits defaultUnit, esriUnits currentUnit)
        {
            IUnitConverter pUnitConverter = new UnitConverter();
            IPoint         pPt            = new PointClass();

            pPt.X = pUnitConverter.ConvertUnits(vPoint.X, defaultUnit, currentUnit);
            pPt.Y = pUnitConverter.ConvertUnits(vPoint.Y, defaultUnit, currentUnit);
            return(pPt);
        }
Example #23
0
        public static String ConvertEsriUnit(esriUnits units)
        {
            String zhUnits = "unknown";

            if (units.ToString().Contains("esri"))
            {
                zhUnits = units.ToString().Substring(4);
            }
            return(zhUnits);
        }
Example #24
0
        private void BufferAnalysisForm_Load(object sender, EventArgs e)
        {
            if (null == _hookHelper || null == _hookHelper.Hook || 0 == _hookHelper.FocusMap.LayerCount)
            {
                return;
            }

            //load all the feature layers in the map to the layers combo
            IEnumLayer layers = GetLayers();

            layers.Reset();
            ILayer layer;

            while ((layer = layers.Next()) != null)
            {
                inputComBox.Items.Add(layer.Name);
            }

            //select the first layer
            if (inputComBox.Items.Count > 0)
            {
                inputComBox.SelectedIndex = 0;
            }

            string tempDir = System.IO.Path.GetTempPath();

            outputPath.Text = System.IO.Path.Combine(tempDir, ((string)inputComBox.SelectedItem + "_buffer.shp"));

            //set the default units of the buffer

            esriUnits mapUnit = _hookHelper.FocusMap.MapUnits;

            switch (mapUnit)
            {
            case esriUnits.esriMeters:
                unitsComBox.SelectedIndex = 0;
                break;

            case esriUnits.esriKilometers:
                unitsComBox.SelectedIndex = 1;
                break;

            case esriUnits.esriMiles:
                unitsComBox.SelectedIndex = 2;
                break;

            default:
                Show(String.Format("未知单位 : {0} ", mapUnit));
                break;
            }
        }
Example #25
0
        public static double UnitSacleToMeter(esriUnits unit)
        {
            switch (unit)
            {
            case esriUnits.esriKilometers:
                return(1000);

            case esriUnits.esriMeters:
                return(1);

            default:
                return(-1);
            }
        }
Example #26
0
        private void UpdatePageSizedisplay()
        {
            double    dPageWidth  = 0.0;
            double    dPageHeight = 0.0;//页面的宽度和高度
            esriUnits unit        = m_pPageLayoutCtl.Page.Units;;
            IPage     page        = m_pPageLayoutCtl.Page;

            if (page.FormID == esriPageFormID.esriPageFormSameAsPrinter)
            {
                if (m_pPageLayoutCtl.Printer == null)
                {
                    page.QuerySize(out dPageWidth, out dPageHeight);
                }
                else
                {
                    ESRI.ArcGIS.Output.IPaper paper = m_pPageLayoutCtl.Printer.Paper;
                    paper.QueryPaperSize(out dPageWidth, out dPageHeight);
                    unit = paper.Units;
                }
            }
            else
            {
                page.QuerySize(out dPageWidth, out dPageHeight);
            }

            if (unit != page.Units)
            {
                IGPLinearUnit gpLinearUnit = new GPLinearUnitClass();
                gpLinearUnit.Units = page.Units;
                gpLinearUnit.Value = dPageWidth;
                dPageWidth         = gpLinearUnit.ConvertValue(page.Units);
                gpLinearUnit.Value = dPageHeight;
                dPageHeight        = gpLinearUnit.ConvertValue(page.Units);
            }
            txtPageWidth.Value  = dPageWidth;
            txtPageHeight.Value = dPageHeight;

            if (m_pPageLayoutCtl.Page.Orientation == 1)
            {
                radioOritationPortrait.Checked = true;
            }
            else
            {
                radioOritationLandscape.Checked = true;
            }

            //设置单位列表
            cmbPageUnit.SelectedIndex = (int)page.Units;
        }
Example #27
0
 public MapInfo(IMap pMap)
 {
     _Map = pMap;
     _Description = pMap.Description;
     _DistanceUnits = pMap.DistanceUnits;
     _Expanded = pMap.Expanded;
     _IsFramed = pMap.IsFramed;
     _LayoutCount = pMap.LayerCount;
     _MapsurroundCount = pMap.MapSurroundCount;
     _MapUnits = pMap.MapUnits;
     _Name = pMap.Name;
     _ReferenceScale = pMap.ReferenceScale;
     _SelectionCount = pMap.SelectionCount;
     _UseSymbolLevels = pMap.UseSymbolLevels;
 }
Example #28
0
 public MapInfo(IMap pMap)
 {
     _Map              = pMap;
     _Description      = pMap.Description;
     _DistanceUnits    = pMap.DistanceUnits;
     _Expanded         = pMap.Expanded;
     _IsFramed         = pMap.IsFramed;
     _LayoutCount      = pMap.LayerCount;
     _MapsurroundCount = pMap.MapSurroundCount;
     _MapUnits         = pMap.MapUnits;
     _Name             = pMap.Name;
     _ReferenceScale   = pMap.ReferenceScale;
     _SelectionCount   = pMap.SelectionCount;
     _UseSymbolLevels  = pMap.UseSymbolLevels;
 }
Example #29
0
        static public bool UnitFactor(esriUnits sourceUnit, out double factor)
        {
            factor = 1.0;

            switch (sourceUnit)
            {
            case esriUnits.esriCentimeters:
                factor = 0.01;
                break;

            case esriUnits.esriFeet:
                factor = 0.3048; // International feet is 0.30480060960121919;
                break;

            case esriUnits.esriInches:
                factor = 0.0254;
                break;

            case esriUnits.esriKilometers:
                factor = 1000.0;
                break;

            case esriUnits.esriMeters:
                factor = 1.0;
                break;

            case esriUnits.esriMiles:
                factor = 1609.344;
                break;

            case esriUnits.esriMillimeters:
                factor = 0.001;
                break;

            case esriUnits.esriNauticalMiles:
                factor = 1852.0;
                break;

            case esriUnits.esriYards:
                factor = 0.9144;
                break;

            default:
                factor = 1.0;
                return(false);
            }
            return(true);
        }
Example #30
0
 public string FormatMapCoordinate(double dMapX, double dMapY, esriUnits eInUnits)
 {
     try
     {
         string str  = null;
         string str2 = null;
         str  = this.FormatMapCoordinate(dMapX, eInUnits);
         str2 = this.FormatMapCoordinate(dMapY, eInUnits);
         return(str + " " + str2);
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.FormatFun", "FormatMapCoordinate", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
         return(null);
     }
 }
Example #31
0
 public double ConvertESRIUnits(double dValue, esriUnits eInUnits, esriUnits eOutUnits)
 {
     try
     {
         if (this.mESRIConvertUnits == null)
         {
             this.mESRIConvertUnits = new UnitConverterClass();
         }
         return(this.mESRIConvertUnits.ConvertUnits(dValue, eInUnits, eOutUnits));
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.UnitFun", "ConvertESRIUnits", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
         return(-1.0);
     }
 }
Example #32
0
 public string FormatMapCoordinate(IPoint pPoint, esriUnits eInUnits)
 {
     try
     {
         if (pPoint == null)
         {
             return("");
         }
         return(this.FormatMapCoordinate(pPoint.X, pPoint.Y, eInUnits));
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.FormatFun", "FormatMapCoordinate", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
         return(null);
     }
 }
Example #33
0
 internal static string Key(esriUnits units)
 {
     switch (units)
     {
         case esriUnits.esriCentimeters:
             return "Centimeters";
         case esriUnits.esriDecimalDegrees:
             throw new InvalidOperationException("DecimalDegrees");
         case esriUnits.esriDecimeters:
             return "Decimeters";
         case esriUnits.esriFeet:
             return "Feet (US Survey)";
         case esriUnits.esriInches:
             return "Inches (US Survey)";
         case esriUnits.esriKilometers:
             return "Kilometers";
         case esriUnits.esriMeters:
             return "Meters";
         case esriUnits.esriMiles:
             return "Miles (US Survey)";
         case esriUnits.esriMillimeters:
             return "Millimeters";
         case esriUnits.esriNauticalMiles:
             return "Nautical Miles (US)";
         case esriUnits.esriPoints:
             throw new InvalidOperationException("Pointss");
         case esriUnits.esriUnitsLast:
             throw new InvalidOperationException("Last Units");
         case esriUnits.esriUnknownUnits:
             return "Meters";
         case esriUnits.esriYards:
             return "Yards (US Survey)";
         default:
             return "Meters";
     }
 }
Example #34
0
        private void cboSize_TextChanged(object sender, System.EventArgs e)
        {
            Debug.WriteLine("size text changed");
            this._BoxSize = double.NaN;
            this._Units = esriUnits.esriUnknownUnits;

            if (this._SizeRE.IsMatch(this.cboSize.Text))
            {
                Match theMatch = this._SizeRE.Match(this.cboSize.Text);
                double theInput = Convert.ToDouble(theMatch.Groups[1].Value);
                string theUnits = theMatch.Groups[2].Value;

                this._BoxSize = theInput;
                switch (theUnits)
                {
                    case "ft":
                        this._Units = esriUnits.esriFeet;
                        break;
                    case "m":
                        this._Units = esriUnits.esriMeters;
                        break;
                    case "yd":
                        this._Units = esriUnits.esriYards;
                        break;
                    case "h":
                        this._BoxSize = theInput * 66;
                        this._Units = esriUnits.esriFeet;
                        break;
                }
            }

            this.OnBoxChange(new EventArgs());
        }
        private long SpatialSelect(string sSedCoreLayer, string sSounderLayer, double dblRange, esriUnits eEsriUnitsContant)
        {
            IMxDocument pmxdoc = ArcMap.Document as IMxDocument;
            IMap pmap = pmxdoc.FocusMap;
            IFeatureSelection pFSel = FindLayer(pmap, sSedCoreLayer) as IFeatureSelection;
            //pFSel.Clear();

            IQueryByLayer pQBLayer = new QueryByLayerClass();
            pQBLayer.ByLayer = FindLayer(pmap, sSounderLayer) as IFeatureLayer;
            pQBLayer.FromLayer = pFSel as IFeatureLayer;
            pQBLayer.BufferDistance = dblRange;
            pQBLayer.BufferUnits = eEsriUnitsContant;
            pQBLayer.ResultType = esriSelectionResultEnum.esriSelectionResultAdd;
            pQBLayer.LayerSelectionMethod = esriLayerSelectionMethod.esriLayerSelectIntersect;
            pQBLayer.UseSelectedFeatures = true;
            pFSel.SelectionSet = pQBLayer.Select();
            return pFSel.SelectionSet.Count;
        }
Example #36
0
 public static double UnitSacleToMeter(esriUnits unit)
 {
     switch (unit)
     {
         case esriUnits.esriKilometers:
             return 1000;
         case esriUnits.esriMeters:
             return 1;
         default:
             return -1;
     }
 }
Example #37
0
        private void selectFeatures()
        {
            IQueryByLayer _qrBl = new QueryByLayerClass();
            int method=cbxMethod.SelectedIndex;
            switch (method)
            {
                case 0:
                    _method = esriLayerSelectionMethod.esriLayerSelectIntersect;
                    break;
                case 1:
                    _method = esriLayerSelectionMethod.esriLayerSelectContainedBy;
                    break;
                case 2:
                    _method = esriLayerSelectionMethod.esriLayerSelectContains;
                    break;
                default:
                    _method = esriLayerSelectionMethod.esriLayerSelectIntersect;
                    break;
            }

            int selectLayer = cbxSelectLayer.SelectedIndex;
            _byLayer = _mapControl.get_Layer(selectLayer);
            int resultType=cbxResultType.SelectedIndex;
            switch (resultType)
            {
                case 0:
                    _resultType = esriSelectionResultEnum.esriSelectionResultNew;
                    break;
                case 1:
                    _resultType = esriSelectionResultEnum.esriSelectionResultAdd;
                    break;
                case 2:
                    _resultType = esriSelectionResultEnum.esriSelectionResultSubtract;
                    break;
                case 3:
                    _resultType = esriSelectionResultEnum.esriSelectionResultAnd;
                    break;
                case 4:
                    _resultType = esriSelectionResultEnum.esriSelectionResultXOR;
                    break;
                default:
                    _resultType = esriSelectionResultEnum.esriSelectionResultNew;
                    break;
            }
            if (chkUseSelected.CheckState == CheckState.Unchecked)
            {
                _useSelected = false;
            }
            else
            {
                _useSelected = true;
            }
            bool re = false;
            try
            {
                re = double.TryParse(txtBuffer.Text, out _buffer);
            }
            catch { }
            if (!re)
            {
                _buffer = 0;
            }
            int unit = cbxUnit.SelectedIndex;
            switch (unit)
            {
                case 0:
                    _bufferUnit = esriUnits.esriCentimeters;
                    break;
                case 1:
                    _bufferUnit = esriUnits.esriDecimeters;
                    break;
                case 2:
                    _bufferUnit = esriUnits.esriMeters;
                    break;
                case 3:
                    _bufferUnit = esriUnits.esriKilometers;
                    break;
                default:
                    _bufferUnit = esriUnits.esriMeters;
                    break;
            }

            _qrBl.ByLayer = (IFeatureLayer)_byLayer;
            _qrBl.LayerSelectionMethod = _method;
            _qrBl.ResultType = _resultType;
            _qrBl.UseSelectedFeatures = _useSelected;
            _qrBl.BufferDistance = _buffer;
            _qrBl.BufferUnits = _bufferUnit;
            foreach (object o in lstInputLayer.SelectedItems)
            {
                int index = lstInputLayer.Items.IndexOf(o);
                _fromLayer = _mapControl.get_Layer(index);

                _qrBl.FromLayer = (IFeatureLayer)_fromLayer;
                ISelectionSet selectionSet;
                IFeatureSelection featureSelection;
                try
                {
                    selectionSet = _qrBl.Select();
                    featureSelection = (IFeatureSelection)_fromLayer;
                    featureSelection.SelectionSet = selectionSet;
                    //MessageBox.Show("line 255 count=" + selectionSet.Count);
                }
                catch(Exception ex)
                { //MessageBox.Show("line 257 SelectByLocation, ex=" + ex);
                    continue; }
            }
            _mapControl.ActiveView.Refresh();
        }
 /// <summary>
 /// 将输入的数据单位转化为米
 /// </summary>
 /// <param name="dValue"></param>
 /// <param name="outUnits"></param>
 /// <returns></returns>
 public double UnitsConvertToMeters(double dValue,esriUnits outUnits)
 {
     IUnitConverter unitConverter = new UnitConverterClass();
     double newValue = unitConverter.ConvertUnits(dValue, esriUnits.esriMeters, outUnits);
     return newValue;
 }
Example #39
0
 public UnitsParameterInfo(string name, string text, esriUnits initValue)
 {
     base._name = name;
     base._text = text;
     this._value = initValue;
 }
Example #40
0
        private void button5_Click(object sender, EventArgs e)
        {
            IPoint pPoint = new PointClass();
            pPoint.X = 40;
            pPoint.Y = -101;

            ISpatialReferenceFactory pSRF = new SpatialReferenceEnvironmentClass();

            pPoint.SpatialReference = pSRF.CreateProjectedCoordinateSystem(4152);

            pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983HARN));

            GeoToGra(pPoint);

            esriUnits eu = new esriUnits();

            axMapControl.MapUnits = esriUnits.esriMeters;
        }
Example #41
0
        private static string XMLDistanceUnits(esriUnits unit)
        {
            // These are all the types. Not all can be mapped to esitUnits.
              //
              // _T("Meter"),_T("Metre"),_T("Foot"),_T("Link"),_T("Foot_US"),
              // _T("Link_US"),_T("Chain"),_T("Chain_US"),_T("Rod"),_T("Rod_US")};

              switch (unit)
              {
            case esriUnits.esriFeet:
              return "Foot_US";
            case esriUnits.esriMeters:
              return "Meter";
            //case esriUnits.esriKilometers:
            //case esriUnits.esriMiles:
            //case esriUnits.esriNauticalMiles:
            //case esriUnits.esriYards:
              }

              return "Meter";
        }
Example #42
0
        private IPolygon CreateBox(IPoint centre, double orientation, double size, esriUnits units)
        {
            // Orientation is in degrees from east, counterclockwise
            // First point in the polygon will be on a face, at the orientation point
            // Four points on the corners will be at sqrt(2) * size,
            // at orientation+45, orientation+135, orientation+225 and orientation+315
            ISDUTExtension theExt = this.Extension;
            IPolygon theBox = new PolygonClass();

            ISpatialReference theWorkingReference = theExt.FocusMap.SpatialReference;
            theBox.SpatialReference = theWorkingReference;
            esriUnits theWorkingUnits = esriUnits.esriMeters;

            UnitConverter theConverter = new UnitConverterClass();
            double theSize = theConverter.ConvertUnits(size, units, theWorkingUnits);
            double theCornerDistance = Math.Sqrt(2) * theSize;

            IPoint theCentroid = this._Wellsite;
            theCentroid.Project(theWorkingReference);
            Debug.WriteLine("Box centroid X: " + theCentroid.X + "  Y: " + theCentroid.Y);

            IPointCollection thePtColl = (IPointCollection)theBox;
            object theMissing = Type.Missing;

            // Place the first point
            IPoint thePoint = new PointClass();
            thePoint.SpatialReference = theWorkingReference;
            double theAngle = orientation * Math.PI / 180;
            ((IConstructPoint2)thePoint).ConstructAngleDistance(theCentroid, theAngle, theSize);
            Debug.WriteLine("    First point X: " + thePoint.X + "  Y: " + thePoint.Y);
            thePtColl.AddPoint(thePoint, ref theMissing, ref theMissing);

            // Place the corners
            for (int i = 1; i <= 4; i++)
            {
                thePoint = new PointClass();
                thePoint.SpatialReference = theWorkingReference;
                theAngle =  (orientation - 45 + (i * 90)) * Math.PI / 180;
                ((IConstructPoint2)thePoint).ConstructAngleDistance(theCentroid, theAngle, theCornerDistance);
                Debug.WriteLine("    Corner " + i + " X: " + thePoint.X + "  Y: " + thePoint.Y);
                thePtColl.AddPoint(thePoint, ref theMissing, ref theMissing);
            }

            theBox.Close();
            return theBox;
        }
Example #43
0
        public static esriCadastralAreaUnits DefaultAreaUnit(esriUnits eCadastralLayerDistanceUnit)
        {
            switch (eCadastralLayerDistanceUnit)
              {
            case esriUnits.esriMeters:
              return esriCadastralAreaUnits.esriCAUSquareMeter;

            case esriUnits.esriFeet:
              return esriCadastralAreaUnits.esriCAUSquareFoot; // esriCAUAcre;

            // TODO...

            //case esriCDUUSSurveyFoot:
            //  return esriCAUAcre;
            //break;

            //// aka, default to meters for:
            //case esriCDUChain:
            //case esriCDULink:
            //case esriCDURod:
            //  return esriCadastralAreaUnits.esriCAUMetric;

            //case esriCDUUSSurveyChain:
            //case esriCDUUSSurveyLink:
            //case esriCDUUSSurveyRod:
            //    return esriCadastralAreaUnits.esriCAUAcre;
              }

              return esriCadastralAreaUnits.esriCAUSquareMeter;  // default will always catch this.
        }
Example #44
0
        public static string GetUnit(esriUnits eDistanceType, bool shortNotation)
        {
            if (!shortNotation)

            switch (eDistanceType)
            {
              case esriUnits.esriMeters:
            return (string)Application.Current.FindResource("strMeters");
              case esriUnits.esriFeet:
            return (string)Application.Current.FindResource("strFeet");
            }

              else

            switch (eDistanceType)
            {
              case esriUnits.esriMeters:
            return (string)Application.Current.FindResource("strMetersShort");
              case esriUnits.esriFeet:
            return (string)Application.Current.FindResource("strFeetShort");
            }

              return "";
        }
Example #45
0
        public static bool UnitFactor(esriUnits sourceUnit, out double factor)
        {
            factor = 1.0;

              switch (sourceUnit)
              {
            case esriUnits.esriCentimeters:
              factor = 0.01;
              break;

            case esriUnits.esriFeet:
              factor = 0.3048;  // International feet is 0.30480060960121919;
              break;

            case esriUnits.esriInches:
              factor = 0.0254;
              break;

            case esriUnits.esriKilometers:
              factor = 1000.0;
              break;

            case esriUnits.esriMeters:
              factor = 1.0;
              break;

            case esriUnits.esriMiles:
              factor = 1609.344;
              break;

            case esriUnits.esriMillimeters:
              factor = 0.001;
              break;

            case esriUnits.esriNauticalMiles:
              factor = 1852.0;
              break;

            case esriUnits.esriYards:
              factor = 0.9144;
              break;

            default:
              factor = 1.0;
              return false;
              }
              return true;
        }
Example #46
0
 /// <summary>
 /// 显示中文地图单位
 /// </summary>
 /// <param name="mapUnit"></param>
 /// <returns></returns>
 private string MapUnitChinese(esriUnits mapUnit)
 {
     string mapUnitChinese = "未知单位";
     switch (mapUnit)
     {
         case esriUnits.esriCentimeters:
             mapUnitChinese = "厘米";
             break;
         case esriUnits.esriDecimalDegrees:
             mapUnitChinese = "分米";
             break;
         case esriUnits.esriDecimeters:
             mapUnitChinese = "";
             break;
         //case esriUnits.esriFeet:
         //    mapUnitChinese = "";
         //    break;
         //case esriUnits.esriInches:
         //    mapUnitChinese = "";
         //    break;
         case esriUnits.esriKilometers:
             mapUnitChinese = "千米";
             break;
         case esriUnits.esriMeters:
             mapUnitChinese = "米";
             break;
         case esriUnits.esriMiles:
             mapUnitChinese = "英里";
             break;
         case esriUnits.esriMillimeters:
             mapUnitChinese = "毫米";
             break;
         //case esriUnits.esriYards:
         //    mapUnitChinese = "";
         //    break;
     }
     return mapUnitChinese;
 }
        public void ProcessFeature(IWorkspaceEdit iwe, IFeatureLayer ifl_active, IRow rw)
        {
            double value = double.NaN;

            if (CoordinateSystem == "")
            {
                CoordinateSystem = ((IFeature)rw).Shape.SpatialReference.Name;
            }

            if (this.LinearUnit == null || this.LinearUnit == "")
            {
                if (fieldTier == 2)
                {
                    LinearUnit = rw.get_Value(GetFieldUnitIndex()).ToString();
                }

                if (this.LinearUnit == null || this.LinearUnit.Trim() == "")
                {
                    LinearUnit = GetSpatialReferenceLinearUnit(((IFeature)rw).Shape.SpatialReference);
                }
            }

            if (LinearUnit.IndexOf("meter", 0, StringComparison.CurrentCultureIgnoreCase) > -1)
            {
                if (useArealUnit)
                {
                    currentAreaUnit = esriAreaUnits.esriSquareMeters;
                    LinearUnit = "Square Meters";
                }
                else
                {
                    currentLinearUnit = esriUnits.esriMeters;
                }
            }
            else if (LinearUnit.IndexOf("foot", 0, StringComparison.CurrentCultureIgnoreCase) > -1)
            {
                if (useArealUnit)
                {
                    currentAreaUnit = esriAreaUnits.esriSquareFeet;
                    LinearUnit = "Square Feet";
                }
                else
                {
                    currentLinearUnit = esriUnits.esriFeet;
                }
            }
            else if (LinearUnit.IndexOf("acre", 0, StringComparison.CurrentCultureIgnoreCase) > -1)
            {
                currentAreaUnit = esriAreaUnits.esriAcres;
                currentLinearUnit = esriUnits.esriUnknownUnits;
                LinearUnit = "Acres";
            }

            if (doReCalcValues || !double.TryParse(rw.get_Value(GetFieldIndex()).ToString(), out value) || value == double.NaN || value == 0.0)
            {
                value = DoMeasure(rw);

                //try writing the (single) measured value to the table
                try
                {
                    IFeature feat = (IFeature)rw;

                    //if we are re-calculating all values, there is no need to start editing on each row
                    if (!doReCalcValues)
                    {
                        if (!iwe.IsBeingEdited())
                            iwe.StartEditing(true);

                        iwe.StartEditOperation();
                    }

                    feat.set_Value(GetFieldIndex(), value);
                    feat.set_Value(GetFieldUnitIndex(), LinearUnit);
                    feat.Store();
                }
                catch (Exception err)
                {
                }
                finally
                {
                    if (!doReCalcValues)
                    {
                        iwe.StopEditOperation();

                        if (iwe.IsBeingEdited())
                            iwe.StopEditing(true);

                        //there may be more than one row that requires editing
                        doReCalcValues = true;
                    }
                }
            }

            values.Add(value);
        }