admin管理员组文章数量:1794759
.NET程序获取当前IP经纬度,并通过经纬度实现天气查询功能
创建一个 8的webapi项目备用
编辑一个实体类,该实体类用于存储获取ip地址的经纬度数据使用
继续编辑三个类,用来存储对应经纬度的具体天气数据包:
改造默认的天气控制器,里面写成我们自己的。例如先写个获取IP的经纬度坐标的请求
运行一下,看下现在的效果,可以看到获取到ip的具体信息,包括运营商、经纬度坐标等。
继续拓展内容,根据经纬度获取天气数据
运行,可以看到一些天气信息
我当前获取到的Json数据如下:
代码语言:javascript代码运行次数:0运行复制{
"latitude": 22.5,
"longitude": 114,
"generationtime_ms": 0.05698204040527344,
"utc_offset_seconds": 0,
"timezone": "GMT",
"timezone_abbreviation": "GMT",
"elevation": 37,
"current_weather_units": {
"time": "iso8601",
"interval": "seconds",
"temperature": "°C",
"windspeed": "km/h",
"winddirection": "°",
"is_day": "",
"weathercode": "wmo code"
},
"current_weather": {
"time": "2024-10-11T09:45",
"interval": 900,
"temperature": 26.1,
"windspeed": 6.6,
"winddirection": 131,
"is_day": 1,
"weathercode": 2
}
}
数据字段解析
基本信息
latitude: 22.5 - 纬度。表示该地点的纬度位置。
longitude: 114 - 经度。表示该地点的经度位置。
generationtime_ms: 0.05698204040527344 - 数据生成的时间,单位是毫秒。表示从数据请求到数据生成所用的时间。
utc_offset_seconds: 0 - 与 UTC 时间的偏移,单位为秒。这里为 0 表示该数据是在 GMT 时区下计算的。
timezone: "GMT" - 时区,表示为 GMT。
timezone_abbreviation: "GMT" - 时区缩写,这里也是 GMT。
elevation: 37 - 表示该地点的海拔高度为 37 米。
当前天气单位
current_weather_units 部分用于解释当前天气数据中每个字段的单位。
time: "iso8601" - 时间格式遵循 ISO 8601 标准。
interval: "seconds" - 时间间隔单位为秒。
temperature: "°C" - 温度单位为摄氏度。
windspeed: "km/h" - 风速单位为每小时公里数。
winddirection: "°" - 风向单位是角度,以度数表示。
is_day: "" - 此字段没有单位,仅用来指示是否是白天(通常为 0 或 1)。
weathercode: "wmo code" - 表示天气情况的代码,使用 WMO(世界气象组织)标准代码。
当前天气情况
current_weather 部分提供了实际的天气数据。
time: "2024-10-11T09:45" - 表示观测的具体时间点,格式为 ISO 8601,即 2024 年 10 月 11 日 09:45。此处我们要换算成自己的东八区时间,要增加8小时,则是下午17点45分。
interval: 900 - 表示观测间隔为 900 秒,即 15 分钟。
temperature: 26.1 - 当前温度为 26.1°C。
windspeed: 6.6 - 当前风速为 6.6 km/h。
winddirection: 131 - 当前风向为 131 度。风向用度数表示,0 度表示正北,90 度表示正东,131 度则大致为东南方向。
is_day: 1 - 表示当前观测是在白天,1 代表白天,0 通常代表夜晚。
weathercode: 2 - 当前的天气代码为 2,按照 WMO 的天气代码标准,2 通常表示“部分多云”。
WMO 天气代码详解
根据 WMO(世界气象组织)的标准,weathercode 字段提供了天气状况的具体信息。以下是一些常见的 WMO 天气代码:
0: 晴朗
1: 主要晴朗
2: 部分多云
3: 多云
4: 阴天
45: 有雾
48: 有浓雾
51: 轻微毛毛雨
53: 中等毛毛雨
55: 强毛毛雨
61: 轻微阵雨
63: 中等阵雨
65: 强阵雨
71: 轻雪
73: 中雪
75: 强雪
95: 雷阵雨,可能有轻微的降水
99: 雷阵雨,伴有强降水
天气描述
在当前的数据中,weathercode 为 2,这表示天气状况为“部分多云”。
获取经纬度和天气的在线源码:
代码语言:javascript代码运行次数:0运行复制LocationInfo locationInfo = null;
using (var httpClient = _httpClientFactory.CreateClient())
{
httpClient.Timeout = TimeSpan.FromSeconds(100);
var res = httpClient.GetAsync("/").GetAwaiter().GetResult();
res.EnsureSuccessStatusCode();
var location = res.Content.ReadAsStringAsync().GetAwaiter().GetResult();
if (!string.IsNullOrEmpty(location))
{
locationInfo = JsonConvert.DeserializeObject<LocationInfo>(location);
}
}
if (locationInfo != null)
{
using (var httpClient = _httpClientFactory.CreateClient())
{
httpClient.Timeout = TimeSpan.FromSeconds(100);
var res = httpClient.GetAsync($"={locationInfo.lat}&longitude={locationInfo.lon}¤t_weather=true").GetAwaiter().GetResult();
res.EnsureSuccessStatusCode();
var weather = res.Content.ReadAsStringAsync().GetAwaiter().GetResult();
if (!string.IsNullOrEmpty(weather))
{
WeatherResponse weatherInfo = JsonConvert.DeserializeObject<WeatherResponse>(weather);
return Ok(weatherInfo);
}
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2024-10-12,如有侵权请联系 cloudcommunity@tencent 删除存储ip程序数据源码本文标签: NET程序获取当前IP经纬度,并通过经纬度实现天气查询功能
版权声明:本文标题:.NET程序获取当前IP经纬度,并通过经纬度实现天气查询功能 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754878199a1707655.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论