Пример #1
0
        private void btn_OK_Click(object sender, EventArgs e)
        {
            if (textBand1.Text == "" || textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" ||
                textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "" || textBox7.Text == "" ||
                textBox8.Text == "" || textBox9.Text == "" || textBox10.Text == "" ||
                txtHeight.Text == "" || txtSaveFile.Text == "")
            {
                MessageBox.Show("请检查输入、输出以及参数设置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                //开始水汽计算程序
                try
                {
                    COM_IDL_connectLib.COM_IDL_connect oCom = new COM_IDL_connectLib.COM_IDL_connect();
                    oCom.CreateObject(0, 0, 0);

                    //oCom.ExecuteString("window,1,title='C#call IDL'");
                    //oCom.ExecuteString("plot,sin(findgen(200)/20)");
                    //oCom.DestroyObject();

                    oCom.SetIDLVariable("imagePath1", textBand1.Text);                                    //热红外劈窗通道图像1
                    oCom.SetIDLVariable("imagePath2", textBox1.Text);                                     //热红外劈窗通道图像2
                    oCom.SetIDLVariable("imagePath3", textBox2.Text);                                     //红外波段图像
                    oCom.SetIDLVariable("imagePath4", textBox3.Text);                                     //近红外通道图像

                    oCom.SetIDLVariable("band1", Convert.ToDouble(txtHeight.Text));                       //劈窗通道波长1
                    oCom.SetIDLVariable("band2", Convert.ToDouble(textBox4.Text));                        //劈窗通道波长2
                    oCom.SetIDLVariable("BareSoilNDVIThresholdValue", Convert.ToDouble(textBox6.Text));   //裸土NDVI阈值
                    oCom.SetIDLVariable("vegetationNDVIThresholdValue", Convert.ToDouble(textBox5.Text)); //植被NDVI阈值
                    oCom.SetIDLVariable("BareSoilEmissivity1", Convert.ToDouble(textBox8.Text));          //裸土发射率1
                    oCom.SetIDLVariable("BareSoilEmissivity2", Convert.ToDouble(textBox7.Text));          //裸土发射率2
                    oCom.SetIDLVariable("vegetationEmissivity1", Convert.ToDouble(textBox10.Text));       //植被发射率1
                    oCom.SetIDLVariable("vegetationEmissivity2", Convert.ToDouble(textBox9.Text));        //植被发射率2
                    oCom.SetIDLVariable("windowSize1", Convert.ToDouble(textBox12.Text));                 //窗口设置1
                    oCom.SetIDLVariable("windowSize2", Convert.ToDouble(textBox13.Text));                 //窗口设置2

                    //oCom.SetIDLVariable("outputdir", txtSaveFile.Text);

                    string tmp = "splitpwv_jicheng,'" + textBand1.Text + "','" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + txtSaveFile.Text.ToString()
                                 + "'," + Convert.ToDouble(txtHeight.Text) + "," + Convert.ToDouble(textBox4.Text) + "," + Convert.ToDouble(textBox12.Text) + "," + Convert.ToDouble(textBox13.Text)
                                 + "," + Convert.ToDouble(textBox6.Text) + "," + Convert.ToDouble(textBox5.Text) + "," + Convert.ToDouble(textBox8.Text) + "," + Convert.ToDouble(textBox7.Text)
                                 + "," + Convert.ToDouble(textBox10.Text) + "," + Convert.ToDouble(textBox9.Text) + "";
                    Console.WriteLine(tmp);
                    string tmp2 = ".compile '" + Application.StartupPath.ToString() + "\\splitpwv_jicheng.pro'";
                    oCom.ExecuteString(tmp2);
                    oCom.ExecuteString(tmp);
                    //oCom.ExecuteString("splitpwv_jicheng,imagePath1,imagePath2,imagePath3,imagePath4,outputdir,band1,band2,windowSize1,windowSize2,BareSoilNDVIThresholdValue,vegetationNDVIThresholdValue,BareSoilEmissivity1,BareSoilEmissivity2,vegetationEmissivity1,vegetationEmissivity2");
                    oCom.DestroyObject();


                    //oCom.ExecuteString("Restore,'splitpww.sav'");//编译程序
                    //oCom.ExecuteString("splitpww");
                    //oCom.ExecuteString(tmp);

                    MessageBox.Show("运行成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    this.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }