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); }