fwidm/weatherdata

用于存储天气数据的Apiato容器。

安装: 1

依赖项: 0

建议者: 0

安全性: 0

星级: 1

关注者: 2

分支: 0

开放问题: 0

类型:apiato-container

dev-master 2018-03-30 14:59 UTC

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
    )
)