WebService获取Google天气信息

本文介绍了一个使用C#实现的从Google API获取指定经纬度位置天气信息的方法。通过发送HTTP请求并解析返回的XML数据,实现了天气预报的获取与展示。

GetWeather.asmx 代码

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Text;
using System.Configuration;
using System.Net;
using System.IO;
using System.Xml;
namespace TongLu.Weather
{
    /// <summary>
    /// Summary description for GetWeather
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class GetWeather : System.Web.Services.WebService
    {

      
        [WebMethod]
        public string GetWeathers(int lng, int lat) //传入的坐标: 例如: 30670000,104019996
        {
            string BaseURI = http://www.google.com.hk/ig/api?hl=zh-cn
             string weather = ",,," + lng + "," + lat;
            string RequestUrl = BaseURI + "&weather=" + weather;
            string ListXml = SendRequestBackXml(RequestUrl, "");
            string s = WeatherExecue(ListXml);
            return s;
        }
        private string SendRequestBackXml(string Uri, string ContentStr)
        {
            try
            {
                HttpWebRequest MyRequest = (HttpWebRequest)WebRequest.Create(Uri);
                MyRequest.Timeout = 30000;
                MyRequest.KeepAlive = true;
                MyRequest.ContentType = "application/x-www-form-urlencoded";
                MyRequest.Method = WebRequestMethods.Http.Post;
                byte[] RequestBytes = Encoding.ASCII.GetBytes(ContentStr);
                Stream swt = MyRequest.GetRequestStream();
                swt.Write(RequestBytes, 0, RequestBytes.Length);
                swt.Flush();
                swt.Close();
                HttpWebResponse MyResponse = (HttpWebResponse)MyRequest.GetResponse();
                StreamReader srd = new StreamReader(MyResponse.GetResponseStream(), Encoding.GetEncoding("GB2312"));
                string BackContent = srd.ReadToEnd();
                srd.Close();
                MyResponse.Close();
                return BackContent;
            }
            catch (Exception e)
            {
                return string.Empty;
            }
        }
        /// <summary>
        /// 获取天气信息
        /// </summary>
        /// <param name="cities"></param>
        /// <returns></returns>
        private string WeatherExecue(string cities)
        {
            StringBuilder SB = new StringBuilder();
            if (string.IsNullOrEmpty(cities))
            {
                return null;
            }
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(cities);
            XmlNode root = doc.DocumentElement;
            if (root.SelectSingleNode("descendant::weather").FirstChild.Name == "problem_cause")
            {
                return null;
            }
            XmlNodeList NodeList = root.SelectNodes("weather/forecast_conditions");
            string day = NodeList.Item(0).SelectSingleNode("day_of_week").Attributes["data"].InnerText;
            string low = NodeList.Item(0).SelectSingleNode("low").Attributes["data"].InnerText;
            string high = NodeList.Item(0).SelectSingleNode("high").Attributes["data"].InnerText;
            string picPath = "http://www.google.com" + NodeList.Item(0).SelectSingleNode("icon").Attributes["data"].InnerText;//获取远程图片地址
            string condition= NodeList.Item(0).SelectSingleNode("condition").Attributes["data"].InnerText;
            SB.Append("<img width='30'heigh='20' ");
            SB.Append("src='");
            SB.Append(picPath);
            SB.Append("'/>");
            SB.Append(low);
            SB.Append("℃");
            SB.Append("/");
            SB.Append(high);
            SB.Append("℃");
            SB.Append("<br/>");
            SB.Append(day);
            SB.Append(" 天气:");
            SB.Append(condition);
            return SB.ToString();
        }
    }
}


再别的页面实例化对象后,调用即可。

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值