根据经纬度获取当地天气情况(阿里云) - 邱乘屹的个人技术博客

全国免费天气预报查询

阿里云全国免费天气预报查询网址:https://market.aliyun.com/products/57126001/cmapi014123.html?spm=5176.11065268.1996646101.searchclickresult.32d61062VCtKFz#sku=yuncode812300000

注意代码29行输入阿里云的appcode,需要购买

代码


# -*- coding: utf-8 -*-
# 导入
import urllib.request, json

"""
type 输入的坐标类型: 1:GPS设备获取的角度坐标; 2:GPS获取的米制坐标、sogou地图所用坐标; 
                    3:google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标 
                    4:3中列表地图坐标对应的米制坐标 5:百度地图采用的经纬度坐标 
                    6:百度地图采用的米制坐标 7:mapbar地图坐标; 8:51地图坐标
1为需要,0为不需要。
need3HourForcast 是否需要当天每3/6小时一次的天气预报列表
needAlarm 是否需要天气预警
needIndex 是否需要返回指数数据,比如穿衣指数、紫外线指数等
needMoreDay 是否需要返回7天数据中的后4天
"""

# 定义函数
def get_weather(
    wd, jd, type=5, need3HourForcast=0, needAlarm=0, needIndex=0, needMoreDay=0
):
	# 测试时发现如果经纬度输入不正确会报错 http error 555
    try:
    	# 请求第三方网址	
        host = "http://saweather.market.alicloudapi.com"
        path = "/gps-to-weather"
        method = "GET"
        # 填入appcode
        appcode = "输入你自己的APPCode"
        querys = "from={}&lat={}&lng={}&need3HourForcast={}&needAlarm={}&needIndex={}&needMoreDay={}".format(
            type, wd, jd, need3HourForcast, needAlarm, needIndex, needMoreDay
        )
        # 拼接url
        url = host + path + "?" + querys
        # 请求内容
        request = urllib.request.Request(url)
        request.add_header("Authorization", "APPCODE " + appcode)
        response = urllib.request.urlopen(request)
        content = response.read()
		
		# 如果有内容则获取
        if content:
            text = content.decode(encoding="utf-8", errors="strict")
            my_data = json.loads(text)
            # 添加状态码code,并返回结果
            if my_data["showapi_res_code"] == 0:
                my_data["showapi_res_body"]["code"] = 200
                return ("查询成功", my_data["showapi_res_body"])
            else:
                my_data["code"] = 404
                return ("返回状态码异常", my_data)
    except Exception as e:
        res = {}
        res["code"] = 555
        res["error"] = "经纬度不正确"
        res["info"] = "HTTP Error 555: Unknown"
        return res


print(get_weather(40.242266, 116.2278))

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要根据经纬度获取天气,可以使用第三方天气 API。以下是一种使用 OpenWeatherMap API 获取天气数据的示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import org.json.JSONObject; public class Weather { public static void main(String[] args) { try { // 经纬度信息 double lat = 40.7128; double lon = -74.0060; // 调用 OpenWeatherMap API String apiKey = "your_api_key"; String url = "https://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&appid=" + apiKey; URLConnection conn = new URL(url).openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } reader.close(); // 解析 JSON 数据 JSONObject json = new JSONObject(sb.toString()); JSONObject main = json.getJSONObject("main"); double temp = main.getDouble("temp"); double feelsLike = main.getDouble("feels_like"); double humidity = main.getDouble("humidity"); String description = json.getJSONArray("weather").getJSONObject(0).getString("description"); // 打印天气信息 System.out.println("Temperature: " + temp + " K"); System.out.println("Feels like: " + feelsLike + " K"); System.out.println("Humidity: " + humidity + " %"); System.out.println("Description: " + description); } catch (Exception e) { e.printStackTrace(); } } } ``` 需要替换代码中的 `your_api_key` 为你自己的 OpenWeatherMap API Key。此示例仅提供了温度、体感温度、湿度和天气描述等基本信息,你可以根据需要选择解析更多的 JSON 数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值