/// <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; }
/// <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 }