예제 #1
0
        /// <summary>
        /// gets realtime data from public transport in city vilnius of lithuania
        /// </summary>
        /// <param name="type">type of transport</param>
        /// <param name="line">linenum or null to get all</param>
        /// <param name="ret"></param>
        public static void GetVilniusTransportData(TransportType type, string line, List <VehicleData> ret)
        {
            ret.Clear();

            //http://stops.lt/vilnius/gps.txt?1318577178193
            //http://www.troleibusai.lt/eismas/get_gps.php?rand=0.9004805039690602
            //http://www.marsrutai.lt/vilnius/Vehicle_Map.aspx?trackID=34006&t=1318577231295

            // http://www.troleibusai.lt/eismas/get_gps.php?rand=0.5180845031057402
            string url = string.Format(CultureInfo.InvariantCulture, "http://www.troleibusai.lt/eismas/get_gps.php?rand={0}&more=1", r.NextDouble());

            switch (type)
            {
            case TransportType.Bus:
            {
                url += "&bus=1";
            }
            break;

                //case TransportType.TrolleyBus:
                //{
                //   url += "trolley";
                //}
                //break;
            }

            //         if(!string.IsNullOrEmpty(line))
            //         {
            //            url += "&line=" + line;
            //         }

#if !PocketPC
            url += "&app=GMap.NET.Desktop";
#else
            url += "&app=GMap.NET.WindowsMobile";
#endif

            var xml = EmptyProvider.Instance.GetContentUsingHttp(url);

            // 54.690688; 25.2116; 1263522; 1; 48.152; 2011-10-14 14:41:29

            var items = xml.Split('&');

            foreach (var it in items)
            {
                var sit = it.Split(';');
                if (sit.Length == 6)
                {
                    VehicleData d = new VehicleData();
                    {
                        d.Id   = int.Parse(sit[2]);
                        d.Lat  = double.Parse(sit[0], CultureInfo.InvariantCulture);
                        d.Lng  = double.Parse(sit[1], CultureInfo.InvariantCulture);
                        d.Line = sit[3];
                        if (!string.IsNullOrEmpty(sit[4]))
                        {
                            d.Bearing = double.Parse(sit[4], CultureInfo.InvariantCulture);
                        }

                        if (!string.IsNullOrEmpty(sit[5]))
                        {
                            d.Time = sit[5];

                            var t = DateTime.Parse(d.Time);
                            if (DateTime.Now - t > TimeSpan.FromMinutes(5))
                            {
                                continue;
                            }

                            d.Time = t.ToLongTimeString();
                        }
                    }

                    //if(d.Id == 1262760)
                    //if(d.Line == "13")
                    {
                        ret.Add(d);
                    }
                }
            }

            #region -- old --
            //XmlDocument doc = new XmlDocument();
            //{
            //   doc.LoadXml(xml);

            //   XmlNodeList devices = doc.GetElementsByTagName("Device");
            //   foreach(XmlNode dev in devices)
            //   {
            //      VehicleData d = new VehicleData();
            //      d.Id = int.Parse(dev.Attributes["ID"].InnerText);

            //      foreach(XmlElement elem in dev.ChildNodes)
            //      {
            //         // Debug.WriteLine(d.Id + "->" + elem.Name + ": " + elem.InnerText);

            //         switch(elem.Name)
            //         {
            //            case "Lat":
            //            {
            //               d.Lat = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
            //            }
            //            break;

            //            case "Lng":
            //            {
            //               d.Lng = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
            //            }
            //            break;

            //            case "Bearing":
            //            {
            //               if(!string.IsNullOrEmpty(elem.InnerText))
            //               {
            //                  d.Bearing = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
            //               }
            //            }
            //            break;

            //            case "LineNum":
            //            {
            //               d.Line = elem.InnerText;
            //            }
            //            break;

            //            case "AreaName":
            //            {
            //               d.AreaName = elem.InnerText;
            //            }
            //            break;

            //            case "StreetName":
            //            {
            //               d.StreetName = elem.InnerText;
            //            }
            //            break;

            //            case "TrackType":
            //            {
            //               d.TrackType = elem.InnerText;
            //            }
            //            break;

            //            case "LastStop":
            //            {
            //               d.LastStop = elem.InnerText;
            //            }
            //            break;

            //            case "Time":
            //            {
            //               d.Time = elem.InnerText;
            //            }
            //            break;
            //         }
            //      }
            //      ret.Add(d);
            //   }
            //}
            #endregion
        }
        /// <summary>
        /// gets realtime data from public transport in city vilnius of lithuania
        /// </summary>
        /// <param name="type">type of transport</param>
        /// <param name="line">linenum or null to get all</param>
        /// <param name="ret"></param>
        public static void GetVilniusTransportData(TransportType type, string line, List <VehicleData> ret)
        {
            ret.Clear();

            string url = "http://www.troleibusai.lt/puslapiai/services/vehiclestate.php?type=";

            switch (type)
            {
            case TransportType.Bus:
            {
                url += "bus";
            }
            break;

            case TransportType.TrolleyBus:
            {
                url += "trolley";
            }
            break;
            }

            if (!string.IsNullOrEmpty(line))
            {
                url += "&line=" + line;
            }

#if !PocketPC
            url += "&app=GMap.NET.Desktop";
#else
            url += "&app=GMap.NET.WindowsMobile";
#endif

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            {
#if !PocketPC
                request.Proxy = WebRequest.DefaultWebProxy;
#else
                request.Proxy = GlobalProxySelection.GetEmptyWebProxy();
#endif
            }

            request.Timeout          = 30 * 1000;
            request.ReadWriteTimeout = request.Timeout;
            request.Accept           = "*/*";
            request.KeepAlive        = false;

            string xml = string.Empty;

            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                using (Stream responseStream = response.GetResponseStream())
                {
                    using (StreamReader read = new StreamReader(responseStream))
                    {
                        xml = read.ReadToEnd();
                    }
                }
            }

            XmlDocument doc = new XmlDocument();
            {
                doc.LoadXml(xml);

                XmlNodeList devices = doc.GetElementsByTagName("Device");
                foreach (XmlNode dev in devices)
                {
                    VehicleData d = new VehicleData();
                    d.Id = int.Parse(dev.Attributes["ID"].InnerText);

                    foreach (XmlElement elem in dev.ChildNodes)
                    {
                        // Debug.WriteLine(d.Id + "->" + elem.Name + ": " + elem.InnerText);

                        switch (elem.Name)
                        {
                        case "Lat":
                        {
                            d.Lat = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
                        }
                        break;

                        case "Lng":
                        {
                            d.Lng = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
                        }
                        break;

                        case "Bearing":
                        {
                            if (!string.IsNullOrEmpty(elem.InnerText))
                            {
                                d.Bearing = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
                            }
                        }
                        break;

                        case "LineNum":
                        {
                            d.Line = elem.InnerText;
                        }
                        break;

                        case "AreaName":
                        {
                            d.AreaName = elem.InnerText;
                        }
                        break;

                        case "StreetName":
                        {
                            d.StreetName = elem.InnerText;
                        }
                        break;

                        case "TrackType":
                        {
                            d.TrackType = elem.InnerText;
                        }
                        break;

                        case "LastStop":
                        {
                            d.LastStop = elem.InnerText;
                        }
                        break;

                        case "Time":
                        {
                            d.Time = elem.InnerText;
                        }
                        break;
                        }
                    }
                    ret.Add(d);
                }
            }
            doc = null;
        }
예제 #3
0
        /// <summary>
        ///     gets realtime data from public transport in city vilnius of lithuania
        /// </summary>
        /// <param name="type">type of transport</param>
        /// <param name="line">linenum or null to get all</param>
        /// <param name="ret"></param>
        public static void GetVilniusTransportData(TransportType type, string line, List <VehicleData> ret)
        {
            ret.Clear();

            //http://stops.lt/vilnius/gps.txt?1318577178193
            //http://www.marsrutai.lt/vilnius/Vehicle_Map.aspx?trackID=34006&t=1318577231295
            // http://www.troleibusai.lt/eismas/get_gps.php?allowed=true&more=1&bus=1&rand=0.5487859781558404

            string url = string.Format(CultureInfo.InvariantCulture,
                                       "http://www.troleibusai.lt/eismas/get_gps.php?allowed=true&more=1&bus={0}&rand={1}",
                                       type == TransportType.Bus ? 2 : 1,
                                       R.NextDouble());

            if (!string.IsNullOrEmpty(line))
            {
                url += "&nr=" + line;
            }

#if !PocketPC
            url += "&app=GMap.NET.Desktop";
#else
            url += "&app=GMap.NET.WindowsMobile";
#endif

            string xml;
            {
                var request = (HttpWebRequest)WebRequest.Create(url);

                request.UserAgent        = GMapProvider.UserAgent;
                request.Timeout          = GMapProvider.TimeoutMs;
                request.ReadWriteTimeout = GMapProvider.TimeoutMs * 6;
                request.Accept           = "*/*";
                request.KeepAlive        = true;

                using (var response = request.GetResponse() as HttpWebResponse)
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        using (var read = new StreamReader(responseStream, Encoding.UTF8))
                        {
                            xml = read.ReadToEnd();
                        }
                    }
#if PocketPC
                    request.Abort();
#endif
                    response.Close();
                }
            }

            // 54.690688; 25.2116; 1263522; 1; 48.152; 2011-10-14 14:41:29

            if (!string.IsNullOrEmpty(xml))
            {
                var items = xml.Split('&');

                foreach (string it in items)
                {
                    var sit = it.Split(';');
                    if (sit.Length == 8)
                    {
                        var d = new VehicleData();
                        {
                            d.Id   = int.Parse(sit[2]);
                            d.Lat  = double.Parse(sit[0], CultureInfo.InvariantCulture);
                            d.Lng  = double.Parse(sit[1], CultureInfo.InvariantCulture);
                            d.Line = sit[3];
                            if (!string.IsNullOrEmpty(sit[4]))
                            {
                                d.Bearing = double.Parse(sit[4], CultureInfo.InvariantCulture);
                            }

                            if (!string.IsNullOrEmpty(sit[5]))
                            {
                                d.Time = sit[5];

                                var t = DateTime.Parse(d.Time);
                                if (DateTime.Now - t > TimeSpan.FromMinutes(5))
                                {
                                    continue;
                                }

                                d.Time = t.ToLongTimeString();
                            }

                            d.TrackType = sit[6];
                        }

                        //if(d.Id == 1262760)
                        //if(d.Line == "13")
                        {
                            ret.Add(d);
                        }
                    }
                }
            }

            #region -- old --

            //XmlDocument doc = new XmlDocument();
            //{
            //   doc.LoadXml(xml);

            //   XmlNodeList devices = doc.GetElementsByTagName("Device");
            //   foreach(XmlNode dev in devices)
            //   {
            //      VehicleData d = new VehicleData();
            //      d.Id = int.Parse(dev.Attributes["ID"].InnerText);

            //      foreach(XmlElement elem in dev.ChildNodes)
            //      {
            //         // Debug.WriteLine(d.Id + "->" + elem.Name + ": " + elem.InnerText);

            //         switch(elem.Name)
            //         {
            //            case "Lat":
            //            {
            //               d.Lat = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
            //            }
            //            break;

            //            case "Lng":
            //            {
            //               d.Lng = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
            //            }
            //            break;

            //            case "Bearing":
            //            {
            //               if(!string.IsNullOrEmpty(elem.InnerText))
            //               {
            //                  d.Bearing = double.Parse(elem.InnerText, CultureInfo.InvariantCulture);
            //               }
            //            }
            //            break;

            //            case "LineNum":
            //            {
            //               d.Line = elem.InnerText;
            //            }
            //            break;

            //            case "AreaName":
            //            {
            //               d.AreaName = elem.InnerText;
            //            }
            //            break;

            //            case "StreetName":
            //            {
            //               d.StreetName = elem.InnerText;
            //            }
            //            break;

            //            case "TrackType":
            //            {
            //               d.TrackType = elem.InnerText;
            //            }
            //            break;

            //            case "LastStop":
            //            {
            //               d.LastStop = elem.InnerText;
            //            }
            //            break;

            //            case "Time":
            //            {
            //               d.Time = elem.InnerText;
            //            }
            //            break;
            //         }
            //      }
            //      ret.Add(d);
            //   }
            //}

            #endregion
        }