fwidm / weatherdata
用于存储天气数据的Apiato容器。
dev-master
2018-03-30 14:59 UTC
Requires
- fwidm/dwd-hourly-crawler: dev-master
- fwidm/geolocation: dev-master
- olifolkerd/convertor: dev-master
This package is not auto-updated.
Last update: 2024-09-29 05:09:15 UTC
README
可用于获取特定 GeoLocations
的天气数据,其中包含纬度、经度和时间戳。
单位转换
单位转换目前正在进行中。如果您在查询中指定了 conversion=x
参数,转换将实时发生。如果指定了这些参数,我们将从主任务中获取获取到的数据传递到转换任务中,该任务将尝试转换所有匹配您请求的数据。
语法
?convert=<string>
<string>
:多个转换由;
分隔,例如?convert=*:C;*L
将所有适用值转换为 °C 和升。- 您可以使用
*
作为通配符指定所有数据点,或者像这样指定参数:?convert=a,b,c:C
将名称包含 a、b 或 c 的所有参数转换为 °C(如果可能)。 - 当前失败的转换不是
- 每个天气数据点只会转换一次!因此,如果您指定
?convert=*:C,*:K
,所有值都将转换为 °C
支持的单位
目前,通过两个示例网关,可以收集以下单位的数据
目前 oli folkerd 的 Convertor Library 已被 分支 并适应此 API 的需求。
网关
网关是能够从天气来源检索数据的对象。此外,它们还将检索到的格式转换为通用格式。
添加另一个网关
- 要添加另一个
*GateWay
,您的新类必须扩展AbstractDataRetrievalGateway
并实现以下方法retrieve()
:内部函数,描述如何获取数据。通过调用其他服务(例如CopernicusRetrievalGateway
)或使用库(例如DWDRetrievalGateway
)来获取数据。parseToWeatherData()
:通过调用相应的转换器,将检索到的数据解析为期望的格式。- 可选:实现
parseToWeatherSource()
:如果您的服务提供对多个条目相关的额外数据,则可以这样做。德国气象服务(DWD)使用测量站,并在检索数据时提供有关站点的信息。这些有关站点的信息将保存到WeatherSource
模型中。
- 完成所有操作后,您最后一步是编辑
DataRetrievalJob
- 在
weather.php
中的设置中注册新实现的网关,如下所示'gateways' => [ new DWDRetrievalGateway(), new CopernicusRetrievalGateway(), new YourRetrievalGateway() ];
- 在
示例 *ToWeatherDataTransformer
输出
Array
(
[data] => Array
(
[source_id] =>
[source] => Copernicus
[value] => 0.83590698242188
[description] => stdClass Object
(
[dataTime] => 0
[name] => High cloud cover
[step] => 0
[date] => 20170928
[shortName] => hcc
[paramId] => 188
[index] => 45047
)
[classification] => Cloudiness
[distance] => 13.558712398993
[lat] => 48.29265233053
[lon] => 9.5
[date] => Carbon\Carbon Object
(
[date] => 2017-09-28 00:00:00.000000
[timezone_type] => 1
[timezone] => +00:00
)
[type] => High cloud cover
[geo_location_id] => 6
[unit] => (0 - 1)
)
)
示例 * ToWeatherSourceTransformer
输出
请注意,数据是数据库中的 json
列,可以包含多种数据。
Array
(
[data] => Array
(
[original_id] => 03402
[data] => FWidm\DWDHourlyCrawler\Model\DWDStation Object
(
[id:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => 03402
[from:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => Carbon\Carbon Object
(
[date] => 2002-11-01 10:14:27.000000
[timezone_type] => 3
[timezone] => UTC
)
[until:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => Carbon\Carbon Object
(
[date] => 2017-10-07 10:14:27.000000
[timezone_type] => 3
[timezone] => UTC
)
[height:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => 750
[latitude:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => 48.3851
[longitude:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => 9.4837
[name:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => Münsingen-Apfelstetten
[state:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => Baden-Württemberg
[active:FWidm\DWDHourlyCrawler\Model\DWDStation:private] => 1
)
[source] => DWD
)
)