在《Power BI/Query爬虫:抓取多个城市历史天气数据》这篇文章中,我分享了如何抓取历史天气数据,本文讲解如何抓取实时天气以及天气预报数据,
核心方法是:通过Power BI调用高德地图天气API提取数据,使用SVG图片制作各种天气图标,最后地图或者表格进行天气展现。涉及数据抓取的部分同时适用于Power BI和Excel,动态图表的部分适用于Power BI。最终可以呈现如下效果。
可以鼠标指向地图任意城市悬浮展现天气:
![Power BI/Excel网抓:获取实时天气数据](http://p2.ttnews.xyz/loading.gif)
可以直接在地图展现:
![Power BI/Excel网抓:获取实时天气数据](http://p2.ttnews.xyz/loading.gif)
也可以表格样式展现:
1.天气数据提取
在高德地图开放平台(https://lbs.amap.com/)免费申请WEB服务API,获取KEY(网络有相应教程)。
不同城市有对应编码,编码作为识别城市的唯一依据,编码列表可在https://lbs.amap.com/api/webservice/download下载。
部分编码
将城市编码表导入Power BI,并添加如下自定义列:
<code>Json.Document( Web.Contents("https://restapi.amap.com/v3/weather/weatherInfo?&city="&[adcode]&"&output=JSON&key=你申请的KEY") )/<code>
该公式的含义是,通过adcode列调用实时天气数据,并返回JSON格式。如果需要的不是实时天气,而是未来几天的预报信息,需要在该代码多加一个参数"extensions",如下所示:
<code>Json.Document( Web.Contents("https://restapi.amap.com/v3/weather/weatherInfo?&city="&[adcode]&"&output=JSON&key=你申请的KEY&extensions=all") )/<code>
更多参数详情参考https://lbs.amap.com/api/webservice/guide/api/weatherinfo/
将数据展开后即可得到实况天气:
实况天气高德官方每小时更新多次,预报天气每天更新3次,分别在8、11、18点左右更新。由于天气数据的特殊性以及数据更新的持续性,无法确定精确的更新时间,具体更新时间以接口返回数据的reporttime字段为准。
2.SVG天气图标导入
主要的天气状况有雪、雷雨、雨、阴、多云、晴等,Power BI支持SVG图片显示,在网上找到对应天气SVG图片,将SVG代码存入Excel并导入Power BI。
天气SVG表
天气SVG引入城市代码表
SVG代码使用如下字段相连,并将其标记为“图像URL”格式:
<code>"data:image/svg+xml;utf8,"&RELATED('天气SVG'[SVG])/<code>
主要天气状况的SVG代码可在http://www.jq22.com/code2431找到,以下列出“晴天”代码:
<code>/<code>
3.图表制作
对于地图悬浮提示的显示方式,首先新建一个单独的提示页面,使用卡片图、表格等图表样式作以下设计(此处将该页命名为“天气”)。
将该页“工具提示”打开,并将页面大小类型设置为“工具提示”:
最后将地图页打开,选中地图,在“工具提示”设置中选择上面设计好的提示页面。这样悬浮天气提示功能设置完成。
对于直接在地图显示的方式,将需要的字段并列在Location,并下钻到最底层。
如需表格显示,如下图拖拽字段即可。
以上即是全部制作过程。
閱讀更多 wujunmin 的文章