コード例 #1
0
 public void SetParameters(GridDataSetting aGDP)
 {
     TB_MinX.Text = aGDP.DataExtent.minX.ToString();
     TB_MaxX.Text = aGDP.DataExtent.maxX.ToString();
     TB_MinY.Text = aGDP.DataExtent.minY.ToString();
     TB_MaxY.Text = aGDP.DataExtent.maxY.ToString();
     TB_XNum.Text = aGDP.XNum.ToString();
     TB_YNum.Text = aGDP.YNum.ToString();
     SetXYSize();
 }
コード例 #2
0
        /// <summary>
        /// Create grid X/y coordinate from discrete data
        /// </summary>
        /// <param name="aGDP"></param>
        /// <param name="X"></param>
        /// <param name="Y"></param>
        public static void CreateGridXY(GridDataSetting aGDP, ref double[] X, ref double[] Y)
        {
            double XDelt, YDelt;

            X     = new double[aGDP.XNum];
            Y     = new double[aGDP.YNum];
            XDelt = (aGDP.DataExtent.maxX - aGDP.DataExtent.minX) / Convert.ToDouble(aGDP.XNum - 1);
            YDelt = (aGDP.DataExtent.maxY - aGDP.DataExtent.minY) / Convert.ToDouble(aGDP.YNum - 1);

            //m_Contour.CreateGridXY_Num(Xlb, Ylb, Xrt, Yrt, cols - 1, rows - 1, ref m_X, ref m_Y);
            wContour.Interpolate.CreateGridXY_Delt(aGDP.DataExtent.minX, aGDP.DataExtent.minY,
                                                   aGDP.DataExtent.maxX, aGDP.DataExtent.maxY, XDelt, YDelt, ref X, ref Y);
        }
コード例 #3
0
        public void GetParameters(ref GridDataSetting aGDP)
        {
            Single minX, maxX, minY, maxY;

            minX = Convert.ToSingle(TB_MinX.Text);
            maxX = Convert.ToSingle(TB_MaxX.Text);
            minY = Convert.ToSingle(TB_MinY.Text);
            maxY = Convert.ToSingle(TB_MaxY.Text);

            aGDP.DataExtent.minX = minX;
            aGDP.DataExtent.maxX = maxX;
            aGDP.DataExtent.minY = minY;
            aGDP.DataExtent.maxY = maxY;
            aGDP.XNum            = Convert.ToInt32(TB_XNum.Text);
            aGDP.YNum            = Convert.ToInt32(TB_YNum.Text);
        }
コード例 #4
0
        public void GetParameters(ref InterpolationSetting GI)
        {
            Single minX, maxX, minY, maxY;

            minX = Convert.ToSingle(TB_MinX.Text);
            maxX = Convert.ToSingle(TB_MaxX.Text);
            minY = Convert.ToSingle(TB_MinY.Text);
            maxY = Convert.ToSingle(TB_MaxY.Text);
            GridDataSetting aGDP = new GridDataSetting();

            aGDP.DataExtent.minX = minX;
            aGDP.DataExtent.maxX = maxX;
            aGDP.DataExtent.minY = minY;
            aGDP.DataExtent.maxY = maxY;
            aGDP.XNum            = Convert.ToInt32(TB_XNum.Text);
            aGDP.YNum            = Convert.ToInt32(TB_YNum.Text);
            GI.GridDataSet       = aGDP;

            GI.InterpolationMethod = (InterpolationMethods)Enum.Parse(typeof(InterpolationMethods),
                                                                      CB_Method.Text, true);
            switch (GI.InterpolationMethod)
            {
            case InterpolationMethods.Cressman:
                if (TB_Radius.Text.Trim() != string.Empty)
                {
                    string[] radStrs = TB_Radius.Text.Split(';');
                    GI.RadList = new List <double>();
                    for (int i = 0; i < radStrs.Length; i++)
                    {
                        GI.RadList.Add(double.Parse(radStrs[i]));
                    }
                }
                else
                {
                    GI.RadList = new List <double>();
                }

                GI.MinPointNum = Convert.ToInt32(TB_MinNum.Text);
                break;

            case InterpolationMethods.IDW_Neighbors:
            case InterpolationMethods.IDW_Radius:
                GI.Radius      = double.Parse(TB_Radius.Text);
                GI.MinPointNum = Convert.ToInt32(TB_MinNum.Text);
                break;
            }
        }
コード例 #5
0
        private void SavGrADSMaskoutFile()
        {
            SaveFileDialog SFDlg = new SaveFileDialog();

            SFDlg.Filter = "GrADS File (*.ctl)|*.ctl";
            if (SFDlg.ShowDialog() == DialogResult.OK)
            {
                string aFile = SFDlg.FileName;
                int    i;
                bool   hasSelShape = _currentLayer.HasSelectedShapes();

                //Get grid set
                PolygonShape aPGS    = new PolygonShape();
                Extent       aExtent = new Extent();
                int          n       = 0;
                for (i = 0; i < _currentLayer.ShapeNum; i++)
                {
                    aPGS = (PolygonShape)_currentLayer.ShapeList[i];
                    if (hasSelShape)
                    {
                        if (!aPGS.Selected)
                        {
                            continue;
                        }
                    }
                    if (n == 0)
                    {
                        aExtent = aPGS.Extent;
                    }
                    else
                    {
                        aExtent = MIMath.GetLagerExtent(aExtent, aPGS.Extent);
                    }
                    n += 1;
                }

                GridDataSetting aGDP = new GridDataSetting();
                aGDP.DataExtent.minX = Math.Floor(aExtent.minX);
                aGDP.DataExtent.maxX = Math.Ceiling(aExtent.maxX);
                aGDP.DataExtent.minY = Math.Floor(aExtent.minY);
                aGDP.DataExtent.maxY = Math.Ceiling(aExtent.maxY);
                aGDP.XNum            = 20;
                aGDP.YNum            = 20;

                frmGridSet aFrmGS = new frmGridSet();
                aFrmGS.SetParameters(aGDP);
                if (aFrmGS.ShowDialog() == DialogResult.OK)
                {
                    aFrmGS.GetParameters(ref aGDP);

                    //Show progressbar
                    this.toolStripProgressBar1.Visible = true;
                    this.toolStripProgressBar1.Value   = 0;
                    this.Cursor = Cursors.WaitCursor;
                    Application.DoEvents();

                    //Get grid data
                    double[,] gridData = new double[aGDP.YNum, aGDP.XNum];
                    int j, p;
                    MeteoInfoC.PointD aPoint = new MeteoInfoC.PointD();
                    double            xSize, ySize;
                    xSize = (aGDP.DataExtent.maxX - aGDP.DataExtent.minX) / (aGDP.XNum - 1);
                    ySize = (aGDP.DataExtent.maxY - aGDP.DataExtent.minY) / (aGDP.YNum - 1);
                    bool isIn = false;
                    for (i = 0; i < aGDP.YNum; i++)
                    {
                        aPoint.Y = aGDP.DataExtent.minY + i * ySize;
                        for (j = 0; j < aGDP.XNum; j++)
                        {
                            aPoint.X = aGDP.DataExtent.minX + j * xSize;
                            isIn     = false;
                            for (p = 0; p < _currentLayer.ShapeNum; p++)
                            {
                                aPGS = (PolygonShape)_currentLayer.ShapeList[p];
                                if (hasSelShape)
                                {
                                    if (!aPGS.Selected)
                                    {
                                        continue;
                                    }
                                }
                                if (MIMath.PointInPolygon(aPGS, aPoint))
                                {
                                    isIn = true;
                                    break;
                                }
                            }
                            if (isIn)
                            {
                                gridData[i, j] = 1;
                            }
                            else
                            {
                                gridData[i, j] = -1;
                            }
                        }
                        this.toolStripProgressBar1.Value = (i + 1) * 100 / aGDP.YNum;
                        Application.DoEvents();
                    }

                    //Get GrADS data info
                    string        dFile     = Path.ChangeExtension(aFile, ".dat");
                    GrADSDataInfo aDataInfo = new GrADSDataInfo();
                    aDataInfo.TITLE       = "Mask data";
                    aDataInfo.DSET        = dFile;
                    aDataInfo.DTYPE       = "GRIDDED";
                    aDataInfo.XDEF.Type   = "LINEAR";
                    aDataInfo.XDEF.XNum   = aGDP.XNum;
                    aDataInfo.XDEF.XMin   = (Single)aGDP.DataExtent.minX;
                    aDataInfo.XDEF.XDelt  = (Single)(xSize);
                    aDataInfo.YDEF.Type   = "LINEAR";
                    aDataInfo.YDEF.YNum   = aGDP.YNum;
                    aDataInfo.YDEF.YMin   = (Single)aGDP.DataExtent.minY;
                    aDataInfo.YDEF.YDelt  = (Single)(ySize);
                    aDataInfo.ZDEF.Type   = "LINEAR";
                    aDataInfo.ZDEF.ZNum   = 1;
                    aDataInfo.ZDEF.SLevel = 1;
                    aDataInfo.ZDEF.ZDelt  = 1;
                    aDataInfo.TDEF.Type   = "LINEAR";
                    aDataInfo.TDEF.TNum   = 1;
                    aDataInfo.TDEF.STime  = DateTime.Now;
                    aDataInfo.TDEF.TDelt  = "1mo";
                    Variable aVar = new Variable();
                    aVar.Name = "mask";
                    //aVar.LevelNum = 0;
                    aVar.Units       = "99";
                    aVar.Description = "background mask data";
                    aDataInfo.VARDEF.AddVar(aVar);

                    //Save files
                    aDataInfo.WriteGrADSCTLFile();
                    aDataInfo.WriteGrADSData_Grid(dFile, gridData);

                    //Hide progressbar
                    this.toolStripProgressBar1.Visible = false;
                    this.Cursor = Cursors.Default;
                }
            }
        }