Exemplo n.º 1
0
 public MBR(MBR miMBR)
 {
     _minimumX = miMBR.MinimumX;
     _minimumY = miMBR.MinimumY;
     _maximumX = miMBR.MaximumX;
     _maximumY = miMBR.MaximumY;
 }
Exemplo n.º 2
0
 public MBR(MBR miMBR)
 {
     _minimumX = miMBR.MinimumX;
     _minimumY = miMBR.MinimumY;
     _maximumX = miMBR.MaximumX;
     _maximumY = miMBR.MaximumY;
 }
        /// <summary>
        /// Reading a MBR from the object for the current record in a table
        /// </summary>
        /// <param name="tableName">identification name of table</param>
        /// <returns>returns MBR read from current record in table as MapInfoMBR</returns>
        public static MBR ReadMBRFromMITableCurrentRecord(string tableName)
        {
            string expr, evalResult;
            MBR miMBR = new MBR(-10.0, -10.0, -10.0, -10.0);

            //System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
            //_usNumberFormat = cultureInfo.NumberFormat;

            // Make note of the current MapBasic Coordinate System, equivalent
            // to calling:  SessionInfo(SESSION_INFO_COORDSYS_CLAUSE)
            string oldCoordSys = GetSessionCoordSys();
            //double coord;

            expr = string.Format("Set CoordSys Table {0}", tableName);
            InteropServices.MapInfoApplication.Do(expr);

            expr = string.Format("ObjectGeography({0}.OBJ, 1)", tableName);
            evalResult = InteropServices.MapInfoApplication.Eval(expr);
            //MessageBox.Show(String.Format("{0} => {1}", string.Format("ObjectGeography({0}.OBJ, 1)", tableName), evalResult));

            //if (double.TryParse(evalResult, System.Globalization.NumberStyles.Number, _usNumberFormat, out coord))
            //    miMBR.MinimumX = coord;
            //else
            //    miMBR.MinimumX = 0;
            miMBR.MinimumX = Double.Parse(evalResult, System.Globalization.CultureInfo.InvariantCulture);

            expr = string.Format("ObjectGeography({0}.OBJ, 2)", tableName);
            evalResult = InteropServices.MapInfoApplication.Eval(expr);
            //if (double.TryParse(evalResult, System.Globalization.NumberStyles.Number, _usNumberFormat, out coord))
            //    miMBR.MinimumY = coord;
            //else
            //    miMBR.MinimumY = 0;
            miMBR.MinimumY = Double.Parse(evalResult, System.Globalization.CultureInfo.InvariantCulture);

            expr = string.Format("ObjectGeography({0}.OBJ, 3)", tableName);
            evalResult = InteropServices.MapInfoApplication.Eval(expr);
            //if (double.TryParse(evalResult, System.Globalization.NumberStyles.Number, _usNumberFormat, out coord))
            //    miMBR.MaximumX = coord;
            //else
            //    miMBR.MaximumX = 0;
            miMBR.MaximumX = Double.Parse(evalResult, System.Globalization.CultureInfo.InvariantCulture);

            expr = string.Format("ObjectGeography({0}.OBJ, 4)", tableName);
            evalResult = InteropServices.MapInfoApplication.Eval(expr);
            //if (double.TryParse(evalResult, System.Globalization.NumberStyles.Number, _usNumberFormat, out coord))
            //    miMBR.MaximumY = coord;
            //else
            //    miMBR.MaximumY = 0;
            miMBR.MaximumY = Double.Parse(evalResult, System.Globalization.CultureInfo.InvariantCulture);

            // Restore the MapBasic Coordinate System to its previous state
            SetSessionCoordSys(oldCoordSys);

            return miMBR;
        }
        /// <summary>
        /// Sets the current view of mapper window represented by windowId using a MapInfo MBR
        /// </summary>
        /// <param name="windowId">Window identification number of mapper window</param>
        /// <param name="mipMBR">MBR to fit Map to</param>
        /// <param name="csys">CoordSys string that specifies the coordinate system used by the mipMBR arguments</param>
        public static void SetViewMBR(int windowId, MBR mipMBR, string unit, string csys)
        {
            double xMin, yMin, xMax, yMax;
            double winHeight, winWidth;
            double mapZoom;

            xMin = mipMBR.MinimumX;
            yMin = mipMBR.MinimumY;
            xMax = mipMBR.MaximumX;
            yMax = mipMBR.MaximumY;

            //MessageBox.Show (String.Format("MBR: {0}", mipMBR.ToString()));
            //MessageBox.Show (String.Format("Center: {0}", mipMBR.GetCenter()));

            winHeight = GetWindowHeight(windowId);
            winWidth = GetWindowWidth(windowId);

            if (((xMax - xMin)/winWidth) > ((yMax-yMin)/winHeight))
                {
                    mapZoom = xMax - xMin;
                }
            else
                {
                    mapZoom = ((winWidth + 10)/winHeight) * (yMax - yMin);
                }

            //MessageBox.Show(String.Format("Zoom: {0} {1}", Convert.ToString(mapZoom), unit));

            SetView(windowId, mipMBR.GetCenterX(), mipMBR.GetCenterY(), mapZoom, unit, csys);
        }