导入
当前天气数据
学习如何获取特定位置的实时天气数据。
该 API 提供全球任意位置的实时天气数据。这些位置涵盖全球超过 20 万个城市。该 API 从多个数据源收集并处理天气信息,包括本地和全球气象模型、卫星、雷达以及广泛的气象站网络。我们可以通过 JSON、XML 和 HTML 格式获取该 API 的数据。
获取实时天气数据
我们通过向以下 URI 发送 GET 请求,来获取指定位置的实时天气数据:
https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={APP_ID}
请求参数
| 参数 | 类型 | 必需性 | 描述 |
|---|---|---|---|
| APP_ID | 字符串 | 必需 | 我们的唯一 API 密钥。 |
| lat | 小数 | 必需 | 位置的纬度。 |
| lon | 小数 | 必需 | 位置的经度。 |
| mode | 字符串 | 可选 | 指定 API 响应的格式,默认值为 json。其他可选值为 xml 和 html。 |
| units | 字符串 | 可选 | 指定测量单位。默认值为 standard(标准单位)。其他可选值为 metric(摄氏度)和 imperial(华氏度)。 |
| lang | 字符串 | 可选 | 用于指定返回结果的语言。 |
示例代码
第 1–2 行: 我们输入 47.6038321 和 -122.3300624,分别对应美国西雅图的地理坐标(纬度和经度),作为必需参数 lat 和 lon。
第 4–5 行: 您可以将上表中列出的其他可选参数添加到 url 中,以更精确地控制返回结果。
注意: 如需了解如何通过指定地点名称获取其地理坐标(纬度和经度),请参阅本课程中关于地理编码(Geocoding API)的课时。
点击下方小工具中的“运行”按钮,查看输出结果。
1lat = 47.6038321 2lon = -122.3300624 3 4url = 'https://api.openweathermap.org/data/2.5/weather?' \ 5 + 'lat=' + str(lat) + '&lon=' + str(lon) + '&appid={{APP_ID}}' 6 7response = requests.get(url) 8 9printResponse(response)
输出结果
上述代码的输出显示了与指定地理坐标相对应位置的实时天气数据。
接下来我们深入分析 API 返回的响应参数。
响应参数
| 参数 | 类型 | 描述 |
|---|---|---|
| coord.lat | 小数 | 位置的纬度。 |
| coord.lon | 小数 | 位置的经度。 |
| weather.id | 整数 | 天气状况的 ID 编码。 |
| weather.main | 字符串 | 天气参数的分类组。示例值包括 Clear(晴朗)、Rain(降雨)、Snow(降雪)和 Extreme(极端天气)。 |
| weather.description | 字符串 | 天气状况的描述文本。 |
| weather.icon | 字符串 | 天气图标 ID。 |
| base | 字符串 | 内部参数。 |
| main.temp | 小数 | 实际气温。默认单位为开尔文(K),metric 单位为摄氏度(°C),imperial 单位为华氏度(°F)。 |
| main.feels_like | 小数 | 体感温度。默认单位为开尔文(K),metric 单位为摄氏度(°C),imperial 单位为华氏度(°F)。 |
| main.pressure | 整数 | 海平面标准大气压。单位为百帕(hPa)。 |
| main.humidity | 整数 | 湿度百分比。单位为百分比(%)。 |
| main.temp_min | 小数 | 当前计算时刻的最低温度。默认单位为开尔文(K),metric 单位为摄氏度(°C),imperial 单位为华氏度(°F)。该值可能为空(NULL)。 |
| main.temp_max | 小数 | 当前计算时刻的最高温度。默认单位为开尔文(K),metric 单位为摄氏度(°C),imperial 单位为华氏度(°F)。该值可能为空(NULL)。 |
| main.sea_level | 整数 | 海平面处的大气压。单位为百帕(hPa)。 |
| main.grnd_level | 整数 | 地面处的大气压。单位为百帕(hPa)。 |
| visibility | 整数 | 平均能见度。单位为米(m)。 |
| wind.speed | 小数 | 风速。默认和 metric 单位为米/秒(m/s),imperial 单位为英里/小时(mph)。 |
| wind.deg | 整数 | 风向。单位为度(°)。 |
| wind.gust | 小数 | 风阵风速度。默认和 metric 单位为米/秒(m/s),imperial 单位为英里/小时(mph)。 |
| clouds.all | 整数 | 云量百分比。单位为百分比(%)。 |
| rain.1h | 整数 | 过去一小时内降雨量。单位为毫米(mm)。该值可能为空(NULL)。 |
| rain.3h | 整数 | 过去三小时内降雨量。单位为毫米(mm)。该值可能为空(NULL)。 |
| snow.1h | 整数 | 过去一小时内降雪量。单位为毫米(mm)。该值可能为空(NULL)。 |
| snow.3h | 整数 | 过去三小时内降雪量。单位为毫米(mm)。该值可能为空(NULL)。 |
| dt | 整数 | 数据计算的时间戳。单位为 Unix 时间(UTC)。 |
| sys.type | 整数 | 内部参数。 |
| sys.id | 整数 | 内部参数。 |
| sys.message | 字符串 | 内部参数。 |
| sys.country | 字符串 | 位置所属国家。 |
| sys.sunrise | 整数 | 日出时间。单位为 Unix 时间(UTC)。 |
| sys.sunset | 整数 | 日落时间。单位为 Unix 时间(UTC)。 |
| timezone | 整数 | 与 UTC 的时区差。单位为秒。 |
| id | 整数 | 城市的唯一标识 ID。 |
| name | 字符串 | 城市名称。 |
| cod | 整数 | 内部参数。 |