Esempio n. 1
0
        private void wektoryDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            var senderGrid = (DataGridView)sender;

            if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
                e.RowIndex >= 0)
            {
                var    indez   = e.RowIndex;
                string sciezka = wektoryDataGridView.Rows[indez].Cells["sciezka"].Value.ToString();


                var rtBotworz = new FormOtworzRTB();
                rtBotworz.Show();
                rtBotworz.MdiParent          = this.MdiParent;
                rtBotworz.Text               = "Podgląd";
                rtBotworz.richTextBox1.Lines = CzytajPlikTekst(sciezka);
            }
        }
Esempio n. 2
0
File: Main.cs Progetto: PBuzz/Inz2
 private void otwórzToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         var nazwaPliku = openFileDialog1.FileName;
         var rtBotworz  = new FormOtworzRTB();
         rtBotworz.Show();
         rtBotworz.MdiParent          = this;
         rtBotworz.richTextBox1.Lines = CzytajPlikTekst(nazwaPliku);
         var odczyt = new Odczyt();
         this.tachimetrTableAdapter.Fill(this.database1DataSet.Tachimetr);
         int id;
         if (tachimetrBindingSource.Count > 0)
         {
             id = database1DataSet.Tachimetr.Max(wartosc => wartosc.Id);
         }
         else
         {
             id = 0;
         }
         odczyt.Odczytdobazy(nazwaPliku, id);
         tachimetrToolStripMenuItem_Click(sender, e);
     }
 }
Esempio n. 3
0
        void odczyt()
        {
            this.tachimetrTableAdapter.Fill(this.database1DataSet.Tachimetr);
            this.transformacjaTableAdapter.Fill(this.database1DataSet.Transformacja);
            var rtBotworz = new FormOtworzRTB();

            rtBotworz.MdiParent = this.MdiParent;
            rtBotworz.Show();
            var    oblazymut            = new Wspprzyb();
            double azymut               = 0;
            double odczyt_nawiazania    = 0;
            bool   nawiazanie           = false;
            string stanowsikopoprzednie = "";
            bool   czyjuz               = false;
            bool   braknawiazania       = true;
            var    obliczenia           = new Transformacja();
            var    b = Properties.Settings.Default.elipsoida_b;
            var    a = Properties.Settings.Default.elipsoida_a;
            var    f = Properties.Settings.Default.elipsoida_f;
            var    modultransformacji = new Transformacja();
            int    licznik            = 0;

            toolStripProgressBar1.Maximum = database1DataSet.Tachimetr.Rows.Count;
            while (czyjuz != true)
            {
                toolStripProgressBar1.Value = 0;
                czyjuz = true;
                foreach (DataRow row in database1DataSet.Tachimetr.Rows)
                {
                    var stanowisko = row.ItemArray[1].ToString();
                    if (stanowisko != stanowsikopoprzednie)
                    {
                        nawiazanie = false;
                    }
                    var    cel = row.ItemArray[2].ToString();
                    string wynikc, wyniks;
                    bool   celistnieje =
                        database1DataSet.Transformacja.Any(punkt => punkt.Nazwa.Equals(cel));
                    if (celistnieje)
                    {
                        wynikc = "Znany ";
                    }
                    else
                    {
                        wynikc = "Nieznany";
                        czyjuz = false;
                    }
                    bool stanowiskoistnieje =
                        database1DataSet.Transformacja.Any(
                            punkt => punkt.Nazwa.Equals(stanowisko));
                    if (stanowiskoistnieje)
                    {
                        wyniks = "Znany ";
                    }
                    else
                    {
                        wyniks = "Nieznany";
                        czyjuz = false;
                    }
                    string dowyswietlenia = string.Format("stanowisko: {0}  {3}  cel: {1} {2}\n", stanowisko, cel,
                                                          wynikc, wyniks);

                    if (celistnieje && stanowiskoistnieje)
                    {
                        bool    stanowisko3 = database1DataSet.Transformacja.Any(punkt => punkt.Nazwa.Equals(stanowisko));
                        DataRow celRow      =
                            database1DataSet.Transformacja.Where(rowcel => rowcel.Nazwa.Equals(cel)).FirstOrDefault();
                        DataRow stRow =
                            database1DataSet.Transformacja.AsEnumerable()
                            .Where(rowst => rowst.Nazwa == stanowisko)
                            .FirstOrDefault();
                        //tu coś zmienic
                        double sB = Convert.ToDouble(stRow["B"]);
                        double sL = Convert.ToDouble(stRow["L"]);
                        double cB = Convert.ToDouble(celRow["B"]);
                        double cL = Convert.ToDouble(celRow["L"]);
                        obliczenia.Vincenty(sB, sL, cB, cL, a, b, f, out azymut);
                        dowyswietlenia    = dowyswietlenia + "azymut: " + azymut + "\n";
                        nawiazanie        = true;
                        odczyt_nawiazania = Convert.ToDouble(row.ItemArray[3]);
                        braknawiazania    = false;
                    }
                    if (celistnieje == false && stanowiskoistnieje && nawiazanie)
                    {
                        DataRow stRow =
                            database1DataSet.Transformacja.AsEnumerable()
                            .Where(rowst => rowst.Nazwa == stanowisko)
                            .FirstOrDefault();
                        double sx   = Convert.ToDouble(stRow["X"]);
                        double sy   = Convert.ToDouble(stRow["Y"]);
                        double sz   = Convert.ToDouble(stRow["Z"]);
                        var    odl  = Convert.ToDouble(row[5]);
                        var    hi   = Convert.ToDouble(row[6]);
                        var    hc   = Convert.ToDouble(row[7]);
                        var    alfa = Convert.ToDouble(row[3]);
                        var    beta = Convert.ToDouble(row[4]);

                        var przyrosty = oblazymut.Oblbiegunowe(0, 0, 0, odl, alfa, 0, 0
                                                               , beta, hi, hc);
                        var eta = (double)stRow["eta"];
                        var ksi = (double)stRow["ksi"];

                        /*var temp=ksi;
                         * ksi = eta;
                         * eta = temp;*/
                        var ksirad = ksi * Math.PI / (180 * 60 * 60);
                        var etarad = eta * Math.PI / (180 * 60 * 60);



                        double          B    = Convert.ToDouble(stRow["B"]);
                        double          L    = Convert.ToDouble(stRow["L"]);
                        var             Brad = B * Math.PI / 180;
                        var             Lrad = L * Math.PI / 180;
                        Matrix <double> xyz  = DenseMatrix.OfArray(new double[, ] {
                            { przyrosty.X },
                            { przyrosty.Y },
                            { przyrosty.H }
                        });
                        dowyswietlenia += " Odnaleziono punkt " + cel + "\n";
                        var sigma = azymut - odczyt_nawiazania;
                        sigma = sigma * Math.PI / 200;
                        var sigma2 = sigma;
                        //sigma = 0;



                        Matrix <double> R3 = DenseMatrix.OfArray(new double[, ] {
                            { Math.Cos(sigma), Math.Sin(sigma), 0 },
                            { -Math.Sin(sigma), Math.Cos(sigma), 0 },
                            { 0, 0, 1 }
                        });

                        Matrix <double> R2 = DenseMatrix.OfArray(new double[, ] {
                            { 1, -etarad * Math.Tan(Brad), -ksirad },
                            { etarad *Math.Tan(Brad), 1, -etarad },
                            { ksirad, etarad, 1 }
                        });

                        Matrix <double> R13 = DenseMatrix.OfArray(new double[, ]
                        {
                            { -Math.Sin(Brad) * Math.Cos(Lrad), -Math.Sin(Brad) * Math.Sin(Lrad), Math.Cos(Brad) },
                            { -Math.Sin(Lrad), Math.Cos(Lrad), 0 },
                            { Math.Cos(Brad) * Math.Cos(Lrad), Math.Cos(Brad) * Math.Sin(Lrad), Math.Sin(Brad) }
                        });

                        var wynik = R13.Transpose() * R2.Transpose() * R3.Transpose() * xyz;
                        //       wektory2TableAdapter.Insert(stanowisko, cel, wynik[0, 0], wynik[1, 0], wynik[2, 0], "Klasyczne-wsp.przyb.", przyrosty.X, przyrosty.Y, przyrosty.H);

                        var    X = wynik[0, 0] + sx;
                        var    Y = wynik[1, 0] + sy;
                        var    Z = wynik[2, 0] + sz;
                        double fi, lambda, h, xGk, yGk, ksi2, eta2;
                        modultransformacji.Hirvonen(X, Y, Z, a, b, out fi, out lambda, out h);
                        modultransformacji.GaussKruger1(fi, lambda, lambda, out xGk, out yGk);
                        modultransformacji.odczytBL(fi, lambda, out ksi2, out eta2);
                        transformacjaTableAdapter.Insert(cel, X, Y, Z, fi, lambda, h, xGk, yGk, ksi2, eta2, przyrosty.X, przyrosty.Y,
                                                         przyrosty.H);
                    }
                    stanowsikopoprzednie = stanowisko;
                    toolStripProgressBar1.Increment(1);
                    rtBotworz.richTextBox1.AppendText(dowyswietlenia);
                }
                if (braknawiazania)
                {
                    rtBotworz.richTextBox1.AppendText("Brak nawiązania!!");
                    break;
                }
                this.transformacjaTableAdapter.Fill(this.database1DataSet.Transformacja);
                toolStripProgressBar1.Value = 0;
                this.wektory2TableAdapter.Fill(this.database1DataSet.Wektory2);
                oblicz_GK();
            }
        }
Esempio n. 4
0
        void wyrównanie()
        {
            double bkier = Properties.Settings.Default.bladkierunkucc;
            double ro    = 2000000 / Math.PI;
            var    dt    = new DataTable();

            var        dt2 = new DataTable();
            DataColumn newColumnNazwadt2 = new DataColumn("Nazwa", typeof(double));
            DataColumn newColumnXdt2     = new DataColumn("X", typeof(double));
            DataColumn newColumnYdt2     = new DataColumn("Y", typeof(double));
            DataColumn newColumnHdt2     = new DataColumn("H", typeof(double));

            newColumnXdt2.DefaultValue = 0;
            newColumnHdt2.DefaultValue = 0;
            newColumnYdt2.DefaultValue = 0;
            dt2.Columns.Add(newColumnNazwadt2);
            dt2.Columns.Add(newColumnXdt2);
            dt2.Columns.Add(newColumnYdt2);
            dt2.Columns.Add(newColumnHdt2);

            var listapkt   = new List <string>();
            var lList      = new List <double>();
            var pList      = new List <double>();
            var obliczenia = new Wspprzyb();

            foreach (DataRow row in database1DataSet.PunktyNieznane.Rows)
            {
                if (Convert.ToBoolean(row.ItemArray[2]) == true && Convert.ToBoolean(row.ItemArray[3]) == false)
                {//tworzy tabele macierz A, pustą
                    string     nazwa      = row.ItemArray[1].ToString();
                    string     nazwaX     = "__X__" + nazwa;
                    string     nazwaY     = "__Y__" + nazwa;
                    string     nazwaK     = "__K__" + nazwa;
                    DataColumn newColumnX = new DataColumn(nazwaX, typeof(double));
                    DataColumn newColumnY = new DataColumn(nazwaY, typeof(double));
                    DataColumn newColumnK = new DataColumn(nazwaK, typeof(double));
                    newColumnX.DefaultValue = 0;
                    newColumnK.DefaultValue = 0;
                    newColumnY.DefaultValue = 0;
                    dt.Columns.Add(newColumnX);
                    dt.Columns.Add(newColumnY);
                    dt.Columns.Add(newColumnK);
                    listapkt.Add(row["Nazwa"].ToString());
                }
            }
            dataGridView1.DataSource = dt;

            foreach (DataRow rowtachimetr in database1DataSet.Tachimetr.Rows)
            {
                //Wypełnianie macierzy równaniami poprawek
                string  cel         = rowtachimetr.ItemArray[2].ToString();
                string  stanowisko  = rowtachimetr.ItemArray[1].ToString();
                double  dlugosc     = Convert.ToDouble(rowtachimetr.ItemArray[5]);
                DataRow celRow      = database1DataSet.PunktyNieznane.Where(rowcel => rowcel.Nazwa.Equals(cel)).FirstOrDefault();
                DataRow stRow       = database1DataSet.PunktyNieznane.AsEnumerable().Where(rowst => rowst.Nazwa == stanowisko).FirstOrDefault();
                double  sx          = Convert.ToDouble(stRow[4]); //wspolrzedne, s- stanowsiko, c- cel
                double  sy          = Convert.ToDouble(stRow[5]);
                double  cx          = Convert.ToDouble(celRow[4]);
                double  cy          = Convert.ToDouble(celRow[5]);
                double  dx          = cx - sx;                      //przyrosty
                double  dy          = cy - sy;
                double  d           = Math.Sqrt(dx * dx + dy * dy); //długość ze wsp
                double  rownKierStX = -dy / Math.Pow(d, 2);         //równania do macierzy A, St-stanowisko, C-cel,Dl-Długość
                double  rownKierStY = dx / Math.Pow(d, 2);
                double  rownKierCx  = dy / Math.Pow(d, 2);
                double  rownKierCy  = -dx / Math.Pow(d, 2);
                double  rownDlStx   = -dx / d;
                double  rownDlSty   = -dy / d;
                double  rownDlCx    = dx / d;
                double  rownDlCy    = -dy / d;
                double  azymut      = obliczenia.Azymut(sx, sy, cx, cy, 2);


                var  row         = dt.NewRow();
                var  row2        = dt.NewRow();
                bool celistnieje = database1DataSet.PunktyNieznane.Any(punkt => punkt.Nazwa.Equals(cel) && punkt.Staly == false);
                if (celistnieje)
                {
                    row["__X__" + cel]  = rownKierCx * ro;
                    row["__Y__" + cel]  = rownKierCy * ro;
                    row2["__X__" + cel] = rownDlCx;
                    row2["__Y__" + cel] = rownDlCy;
                }

                bool stanowiskoistnieje =
                    database1DataSet.PunktyNieznane.Any(
                        punkt => punkt.Nazwa.Equals(stanowisko) && punkt.Staly == false);
                if (stanowiskoistnieje)
                {
                    row["__X__" + stanowisko]  = rownKierStX * ro;
                    row["__Y__" + stanowisko]  = rownKierStY * ro;
                    row["__K__" + stanowisko]  = -1;
                    row2["__X__" + stanowisko] = rownDlStx;
                    row2["__Y__" + stanowisko] = rownDlSty;
                }
                //if (stanowiskoistnieje || celistnieje)
                // {
                dt.Rows.Add(row);
                dt.Rows.Add(row2);
                //  }
                //lista macierz l
                lList.Add(azymut - Convert.ToDouble(rowtachimetr.ItemArray[3]));
                lList.Add(d - dlugosc);

                //lista macierz p
                pList.Add(1 / Math.Pow(bkier, 2));
                pList.Add(1 / Math.Pow(dlugosc, 2));
            }
            int             liczbakolumn  = dt.Columns.Count;
            int             liczbawierszy = dt.Rows.Count;
            Matrix <double> A             = Matrix <double> .Build.Dense(liczbawierszy, liczbakolumn);

            for (int i = 0; i < liczbawierszy; i++)
            {
                for (int j = 0; j < liczbakolumn; j++)
                {
                    if (dt.Rows[i][j] == DBNull.Value)
                    {
                        A[i, j] = 0;
                    }
                    else
                    {
                        A[i, j] = Convert.ToDouble(dt.Rows[i][j]);
                    }
                }
            }
            Matrix <double> L = Matrix <double> .Build.Dense(lList.Count, 1);

            for (int i = 0; i < lList.Count; i++)
            {
                L[i, 0] = lList[i];
            }
            var parray = pList.ToArray();
            // var P = Matrix<double>.Build;

            Matrix <double> P = new DiagonalMatrix(pList.Count, pList.Count, parray);

            FormOtworzRTB macierza = new FormOtworzRTB();

            macierza.Show();
            macierza.richTextBox1.AppendText(A.ToMatrixString());

            var AT          = A.Transpose();
            var ATP         = AT.Multiply(P);
            var ATPA        = ATP.Multiply(A);
            var ATPAinverse = ATPA.Inverse();
            var ATPL        = ATP.Multiply(L);
            var X           = ATPAinverse.Multiply(ATPL);
            var X2          = A.Solve(L);

            macierza.richTextBox1.AppendText("\r\nA\r\n" + X.ToMatrixString() + "\r\n");
            var xTab = X.ToArray();

            macierza.richTextBox1.AppendText("\r\nX\r\n" + X.ToString() + "\r\n");
            macierza.richTextBox1.AppendText("\r\nX2\r\n" + X2.ToString() + "\r\n");
            var ax  = A.Multiply(X);
            var axl = ax - L;

            macierza.richTextBox1.AppendText("\r\nAx+L\r\n" + axl.ToString() + "\r\n");

            macierza.richTextBox1.AppendText("\r\nP\r\n" + P.ToString() + "\r\n");

            int i2 = 0;

            foreach (DataRow row in database1DataSet.PunktyNieznane.Rows)
            {
                if (Convert.ToBoolean(row.ItemArray[2]) == true && Convert.ToBoolean(row.ItemArray[3]) == false)
                {
                    var nowywiersz = dt2.NewRow();
                    nowywiersz["Nazwa"] = row.ItemArray[1];
                    nowywiersz["X"]     = Convert.ToDouble(row.ItemArray[4]) + pList[i2];
                    i2++;
                    nowywiersz["Y"] = Convert.ToDouble(row.ItemArray[5]) + pList[i2];
                    i2 += 2;
                    nowywiersz["H"] = Convert.ToDouble(row.ItemArray[6]);
                    dt2.Rows.Add(nowywiersz);
                }
            }

            dataGridView2.DataSource = dt2;
            dataGridView2.Columns["Nazwa"].DefaultCellStyle.Format = "#";
        }
Esempio n. 5
0
        void odczyt()
        {
            this.tachimetrTableAdapter1.Fill(this.database1DataSet.Tachimetr);
            this.punktyNieznaneTableAdapter.Fill(this.database1DataSet.PunktyNieznane);
            this.wspolrzedneTableAdapter1.Fill(this.database1DataSet.Wspolrzedne);
            var rtBotworz = new FormOtworzRTB();

            rtBotworz.MdiParent = this.MdiParent;
            rtBotworz.Show();
            var    oblazymut            = new Wspprzyb();
            double azymut               = 0;
            double odczyt_nawiazania    = 0;
            bool   nawiazanie           = false;
            string stanowsikopoprzednie = "";
            bool   czyjuz               = false;
            bool   braknawiazania       = true;

            while (czyjuz != true)
            {
                czyjuz = true;
                foreach (DataRow row in database1DataSet.Tachimetr.Rows)
                {
                    var stanowisko = row.ItemArray[1].ToString();
                    if (stanowisko != stanowsikopoprzednie)
                    {
                        nawiazanie = false;
                    }
                    var    cel = row.ItemArray[2].ToString();
                    string wynikc, wyniks;
                    bool   celistnieje =
                        database1DataSet.PunktyNieznane.Any(punkt => punkt.Nazwa.Equals(cel) && punkt.Znany == true);
                    if (celistnieje)
                    {
                        wynikc = "Znany ";
                    }
                    else
                    {
                        wynikc = "Nieznany";
                        czyjuz = false;
                    }
                    bool stanowiskoistnieje =
                        database1DataSet.PunktyNieznane.Any(
                            punkt => punkt.Nazwa.Equals(stanowisko) && punkt.Znany == true);
                    if (stanowiskoistnieje)
                    {
                        wyniks = "Znany ";
                    }
                    else
                    {
                        wyniks = "Nieznany";
                        czyjuz = false;
                    }
                    string dowyswietlenia = string.Format("stanowisko: {0}  {3}  cel: {1} {2}\n", stanowisko, cel,
                                                          wynikc, wyniks);
                    if (celistnieje && stanowiskoistnieje)
                    {
                        bool    stanowisko3 = database1DataSet.PunktyNieznane.Any(punkt => punkt.Nazwa.Equals(stanowisko));
                        DataRow celRow      =
                            database1DataSet.PunktyNieznane.Where(rowcel => rowcel.Nazwa.Equals(cel)).FirstOrDefault();
                        DataRow stRow =
                            database1DataSet.PunktyNieznane.AsEnumerable()
                            .Where(rowst => rowst.Nazwa == stanowisko)
                            .FirstOrDefault();
                        double sx = Convert.ToDouble(stRow[4]);
                        double sy = Convert.ToDouble(stRow[5]);
                        double cx = Convert.ToDouble(celRow[4]);
                        double cy = Convert.ToDouble(celRow[5]);
                        azymut            = oblazymut.Azymut(sx, sy, cx, cy, 2);
                        dowyswietlenia    = dowyswietlenia + "azymut: " + azymut + "\n";
                        nawiazanie        = true;
                        odczyt_nawiazania = Convert.ToDouble(row.ItemArray[3]);
                        braknawiazania    = false;
                    }
                    if (celistnieje == false && stanowiskoistnieje && nawiazanie)
                    {
                        DataRow stRow =
                            database1DataSet.PunktyNieznane.AsEnumerable()
                            .Where(rowst => rowst.Nazwa == stanowisko)
                            .FirstOrDefault();
                        double sx  = Convert.ToDouble(stRow[4]);
                        double sy  = Convert.ToDouble(stRow[5]);
                        double sz  = Convert.ToDouble(stRow[6]);
                        var    odl = Convert.ToDouble(row[5]);
                        var    hi  = Convert.ToDouble(row[6]);
                        var    hc  = Convert.ToDouble(row[7]);
                        //var odl = oblazymut.redukcjaOdleglosci(Convert.ToDouble(row[4]), Convert.ToDouble(row[5]));

                        var wsp = oblazymut.Oblbiegunowe(sx, sy, sz, odl, Convert.ToDouble(row.ItemArray[3]), azymut,
                                                         odczyt_nawiazania, Convert.ToDouble(row[4]), hi, hc);


                        //var wsp2 = oblazymut.Oblbiegunowe()
                        this.punktyNieznaneTableAdapter.Fill(this.database1DataSet.PunktyNieznane);
                        int id = database1DataSet.PunktyNieznane.Max(wartosc => wartosc.Id) + 1;
                        punktyNieznaneTableAdapter.Insert(id, cel, true, false, wsp.X, wsp.Y, wsp.H);
                        int id2 = WspolrzedneBindingSource.Count + 1;
                        // wspolrzedneTableAdapter1.Insert(id, cel, wsp.X, wsp.Y, wsp.H, false);
                        this.punktyNieznaneTableAdapter.Fill(this.database1DataSet.PunktyNieznane);
                        this.wspolrzedneTableAdapter1.Fill(this.database1DataSet.Wspolrzedne);
                    }
                    stanowsikopoprzednie = stanowisko;

                    rtBotworz.richTextBox1.AppendText(dowyswietlenia);
                }
                if (braknawiazania)
                {
                    rtBotworz.richTextBox1.AppendText("Brak nawiązania!!");
                    break;
                }
            }
        }