Пример #1
0
        private void ImportFiles(FileInfo f)
        {
            IndexList = new List<int>();
            GPXList = new List<GPXDatenSpeicher>();

            XmlTextReader xr = new XmlTextReader(f.FullName);
            #region Reader
            while (xr.Read())
            {
                if (Zustand == GPX_Zustände.START)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx")
                    {
                        Zustand = GPX_Zustände.GPX;
                    }// ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx")
                }//ende if (Zustand == GPX_Zustände.START)
                else if (Zustand == GPX_Zustände.GPX)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "trk")
                    {
                        Zustand = GPX_Zustände.GPX_TRK;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt")
                    {
                        if (xr.HasAttributes)
                        {
                            while (xr.MoveToNextAttribute())
                            {
                                if (xr.Name == "lat") akt_lat = xr.ReadContentAsDouble();
                                if (xr.Name == "lon") akt_lon = xr.ReadContentAsDouble();
                            }
                        }
                        Zustand = GPX_Zustände.GPX_WPT;
                    }// ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt")

                } // ende else if (Zustand == GPX_Zustände.GPX)
                else if (Zustand == GPX_Zustände.GPX_TRK)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_NAME;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkseg")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG;
                    }
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trk")
                    {
                        Zustand = GPX_Zustände.GPX;
                    }
                }// ende else if (Zustand == GPX_Zustände.GPX_TRK)
                else if (Zustand == GPX_Zustände.GPX_WPT)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_ELE;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_NAME;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "cmt")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_CMT;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "desc")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_DESC;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "sym")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_SYM;
                    }
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "wpt")
                    {

                        SQL = "SELECT count(*) FROM tbl_Wegpunkt WHERE Längengrad like '" + akt_lon + "' AND Breitengrad like '" + akt_lat + "' AND Ele like '" + akt_ele + "' AND Name like '" + name + "' AND CMT like '" + cmt + "' AND DESC_Feld like '" + desc + "' AND sym like '" + sym + "'";
                        m.cmd = new OleDbCommand(SQL, m.con);
                        m.dr = m.cmd.ExecuteReader();
                        m.dr.Read();
                        if ((int)m.dr[0] == 0)
                        {
                            SQL = "INSERT INTO tbl_Wegpunkt (Längengrad,Breitengrad,Ele,Name,CMT,DESC_Feld,sym) VALUES ('" + akt_lon + "','" + akt_lat + "','" + akt_ele + "','" + name + "','" + cmt + "','" + desc + "','" + sym + "')";
                        }
                        m.cmd = new OleDbCommand(SQL, m.con);
                        m.cmd.ExecuteNonQuery();

                        Zustand = GPX_Zustände.GPX;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_ELE)
                {
                    strBuf = xr.ReadContentAsString().Replace('.', ',');
                    akt_ele = double.Parse(strBuf);
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_NAME)
                {
                    name = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_CMT)
                {
                    cmt = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "cmt")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_DESC)
                {
                    desc = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "desc")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_SYM)
                {
                    sym = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "sym")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_NAME)
                {
                    Track_Name = xr.ReadContentAsString();

                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_TRK;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkpt")
                    {
                        if (xr.HasAttributes)
                        {
                            // Erst mal ALLE Attribute lesen!!
                            while (xr.MoveToNextAttribute())
                            {
                                if (xr.Name == "lat") akt_lat = xr.ReadContentAsDouble();
                                if (xr.Name == "lon") akt_lon = xr.ReadContentAsDouble();
                            }
                        }
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT;
                    }

                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkseg")
                    {
                        Zustand = GPX_Zustände.GPX_TRK;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "time")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE;
                    }
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkpt")
                    {
                        GPXList.Add(new GPXDatenSpeicher(akt_lat, akt_lon, akt_Zeit, akt_ele, Track_Name));
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME)
                {
                    akt_Zeit = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "time")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE)
                {
                    strBuf = xr.ReadContentAsString().Replace('.', ',');
                    akt_ele = double.Parse(strBuf);

                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT;
                    }
                }

            }//ende while (xr.Read())
            #endregion

            strBuf = null;
            //Noch wegpunkt einlesen einbauen... (keine lust)

            for (int i = 0; i < GPXList.Count; i++)
            {
                if (strBuf != GPXList[i].Name)
                {
                    IndexList.Add(i);
                }
                strBuf = GPXList[i].Name;
            }

            for (int iLoop = 0; iLoop < IndexList.Count; iLoop++)
            {
                EintragGefunden = false;
                if (!EintragGefunden)
                {
                    Min_Index = IndexList[iLoop];
                    EintragGefunden = CheckDataBase(GPXList[IndexList[iLoop]].Name, Min_Index);
                    if (iLoop == (IndexList.Count - 1))
                    {
                        Max_Index = GPXList.Count;
                    }
                    else
                    {
                        Max_Index = IndexList[iLoop + 1];
                    }
                }
                else
                {
                    //MessageBox.Show("Gibbet schon");
                }

                if (!EintragGefunden)
                {

                    SQL = "Insert Into tbl_track (Track_Name, Track_Name_Import) Values ('" + GPXList[IndexList[iLoop]].Name + "','" + GPXList[IndexList[iLoop]].Name + "')";
                    m.cmd = new OleDbCommand(SQL, m.con);
                    m.cmd.ExecuteNonQuery();

                    System.Threading.Thread.Sleep(100);
                    SQL = "Select ID_Track From tbl_track Where Track_Name_Import = '" + GPXList[IndexList[iLoop]].Name + "'";
                    m.cmd = new OleDbCommand(SQL, m.con);
                    m.dr = m.cmd.ExecuteReader();
                    m.dr.Read();
                    ID_Track_var = (int)m.dr[0];
                    //MessageBox.Show(m.dr[0].ToString());

                    for (int i = Min_Index; i < Max_Index; i++)
                    {

                        SQL = "Insert Into tbl_Trackpoint (Längengrad,Breitengrad,Zeit,Ele,FS_ID_Track) Values ('" + GPXList[i].Longitude + "','" + GPXList[i].Latitude + "','" + GPXList[i].Zeit + "','" + GPXList[i].Ele + "','" + ID_Track_var + "')";
                        m.cmd = new OleDbCommand(SQL, m.con);
                        m.cmd.ExecuteNonQuery();

                    }

                    //MessageBox.Show("is drin" + debug.ToString());
                }
                else
                {
                    //MessageBox.Show("is schon drin" + debug.ToString());
                }

            }
        }
Пример #2
0
        private void ImportFiles(FileInfo f)
        {
            IndexList = new List <int>();
            GPXList   = new List <GPXDatenSpeicher>();


            XmlTextReader xr = new XmlTextReader(f.FullName);

            #region Reader
            while (xr.Read())
            {
                if (Zustand == GPX_Zustände.START)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx")
                    {
                        Zustand = GPX_Zustände.GPX;
                    } // ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "gpx")
                }     //ende if (Zustand == GPX_Zustände.START)
                else if (Zustand == GPX_Zustände.GPX)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "trk")
                    {
                        Zustand = GPX_Zustände.GPX_TRK;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt")
                    {
                        if (xr.HasAttributes)
                        {
                            while (xr.MoveToNextAttribute())
                            {
                                if (xr.Name == "lat")
                                {
                                    akt_lat = xr.ReadContentAsDouble();
                                }
                                if (xr.Name == "lon")
                                {
                                    akt_lon = xr.ReadContentAsDouble();
                                }
                            }
                        }
                        Zustand = GPX_Zustände.GPX_WPT;
                    } // ende if (xr.NodeType == XmlNodeType.Element && xr.Name == "wpt")
                }     // ende else if (Zustand == GPX_Zustände.GPX)
                else if (Zustand == GPX_Zustände.GPX_TRK)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_NAME;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkseg")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG;
                    }
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trk")
                    {
                        Zustand = GPX_Zustände.GPX;
                    }
                }// ende else if (Zustand == GPX_Zustände.GPX_TRK)
                else if (Zustand == GPX_Zustände.GPX_WPT)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_ELE;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_NAME;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "cmt")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_CMT;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "desc")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_DESC;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "sym")
                    {
                        Zustand = GPX_Zustände.GPX_WPT_SYM;
                    }
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "wpt")
                    {
                        SQL   = "SELECT count(*) FROM tbl_Wegpunkt WHERE Längengrad like '" + akt_lon + "' AND Breitengrad like '" + akt_lat + "' AND Ele like '" + akt_ele + "' AND Name like '" + name + "' AND CMT like '" + cmt + "' AND DESC_Feld like '" + desc + "' AND sym like '" + sym + "'";
                        m.cmd = new OleDbCommand(SQL, m.con);
                        m.dr  = m.cmd.ExecuteReader();
                        m.dr.Read();
                        if ((int)m.dr[0] == 0)
                        {
                            SQL = "INSERT INTO tbl_Wegpunkt (Längengrad,Breitengrad,Ele,Name,CMT,DESC_Feld,sym) VALUES ('" + akt_lon + "','" + akt_lat + "','" + akt_ele + "','" + name + "','" + cmt + "','" + desc + "','" + sym + "')";
                        }
                        m.cmd = new OleDbCommand(SQL, m.con);
                        m.cmd.ExecuteNonQuery();

                        Zustand = GPX_Zustände.GPX;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_ELE)
                {
                    strBuf  = xr.ReadContentAsString().Replace('.', ',');
                    akt_ele = double.Parse(strBuf);
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_NAME)
                {
                    name = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_CMT)
                {
                    cmt = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "cmt")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_DESC)
                {
                    desc = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "desc")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_WPT_SYM)
                {
                    sym = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "sym")
                    {
                        Zustand = GPX_Zustände.GPX_WPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_NAME)
                {
                    Track_Name = xr.ReadContentAsString();

                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "name")
                    {
                        Zustand = GPX_Zustände.GPX_TRK;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "trkpt")
                    {
                        if (xr.HasAttributes)
                        {
                            // Erst mal ALLE Attribute lesen!!
                            while (xr.MoveToNextAttribute())
                            {
                                if (xr.Name == "lat")
                                {
                                    akt_lat = xr.ReadContentAsDouble();
                                }
                                if (xr.Name == "lon")
                                {
                                    akt_lon = xr.ReadContentAsDouble();
                                }
                            }
                        }
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT;
                    }

                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkseg")
                    {
                        Zustand = GPX_Zustände.GPX_TRK;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT)
                {
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "time")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME;
                    }
                    if (xr.NodeType == XmlNodeType.Element && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE;
                    }
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "trkpt")
                    {
                        GPXList.Add(new GPXDatenSpeicher(akt_lat, akt_lon, akt_Zeit, akt_ele, Track_Name));
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_TIME)
                {
                    akt_Zeit = xr.ReadContentAsString();
                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "time")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT;
                    }
                }
                else if (Zustand == GPX_Zustände.GPX_TRK_TRKSEG_TRKPT_ELE)
                {
                    strBuf  = xr.ReadContentAsString().Replace('.', ',');
                    akt_ele = double.Parse(strBuf);

                    if (xr.NodeType == XmlNodeType.EndElement && xr.Name == "ele")
                    {
                        Zustand = GPX_Zustände.GPX_TRK_TRKSEG_TRKPT;
                    }
                }
            }//ende while (xr.Read())
            #endregion

            strBuf = null;
            //Noch wegpunkt einlesen einbauen... (keine lust)

            for (int i = 0; i < GPXList.Count; i++)
            {
                if (strBuf != GPXList[i].Name)
                {
                    IndexList.Add(i);
                }
                strBuf = GPXList[i].Name;
            }

            for (int iLoop = 0; iLoop < IndexList.Count; iLoop++)
            {
                EintragGefunden = false;
                if (!EintragGefunden)
                {
                    Min_Index       = IndexList[iLoop];
                    EintragGefunden = CheckDataBase(GPXList[IndexList[iLoop]].Name, Min_Index);
                    if (iLoop == (IndexList.Count - 1))
                    {
                        Max_Index = GPXList.Count;
                    }
                    else
                    {
                        Max_Index = IndexList[iLoop + 1];
                    }
                }
                else
                {
                    //MessageBox.Show("Gibbet schon");
                }

                if (!EintragGefunden)
                {
                    SQL   = "Insert Into tbl_track (Track_Name, Track_Name_Import) Values ('" + GPXList[IndexList[iLoop]].Name + "','" + GPXList[IndexList[iLoop]].Name + "')";
                    m.cmd = new OleDbCommand(SQL, m.con);
                    m.cmd.ExecuteNonQuery();



                    System.Threading.Thread.Sleep(100);
                    SQL   = "Select ID_Track From tbl_track Where Track_Name_Import = '" + GPXList[IndexList[iLoop]].Name + "'";
                    m.cmd = new OleDbCommand(SQL, m.con);
                    m.dr  = m.cmd.ExecuteReader();
                    m.dr.Read();
                    ID_Track_var = (int)m.dr[0];
                    //MessageBox.Show(m.dr[0].ToString());



                    for (int i = Min_Index; i < Max_Index; i++)
                    {
                        SQL   = "Insert Into tbl_Trackpoint (Längengrad,Breitengrad,Zeit,Ele,FS_ID_Track) Values ('" + GPXList[i].Longitude + "','" + GPXList[i].Latitude + "','" + GPXList[i].Zeit + "','" + GPXList[i].Ele + "','" + ID_Track_var + "')";
                        m.cmd = new OleDbCommand(SQL, m.con);
                        m.cmd.ExecuteNonQuery();
                    }

                    //MessageBox.Show("is drin" + debug.ToString());
                }
                else
                {
                    //MessageBox.Show("is schon drin" + debug.ToString());
                }
            }
        }