mrcnpdlk/weather-api

波兰的天气API和空气质量

v1.0.1 2018-06-11 13:35 UTC

This package is auto-updated.

Last update: 2024-09-04 07:59:51 UTC


README

内容

  1. 安装
  2. 基本用法
    1. 缓存
    2. 日志记录器
  3. 外部来源
    1. 环境保护总局
    2. Airly
    3. Open Weather Map
  4. API使用
    1. 创建实例
    2. 可用方法
    3. 示例

安装

使用composer安装最新版本

composer require mrcnpdlk/weather-api

基本用法

缓存

库支持基于PSR-16标准的缓存组件。

以下示例使用了phpfastcache/phpfastcache V7。 phpfastcache/phpfastcache支持许多端点,例如FilesSqliteRedis等。更多关于使用缓存和配置的信息,您可以在Wiki中找到。

    /**
     * Cache in system files
     */
    $oFilesConfig = new \Phpfastcache\Drivers\Files\Config();
    $oFilesConfig->setPath(sys_get_temp_dir())->setDefaultTtl(60);
    $oInstanceCacheFiles = new \Phpfastcache\Helper\Psr16Adapter('files', $oFilesConfig);
    /**
     * Cache in Redis
     */
    $oRedisConfig = new \Phpfastcache\Drivers\Redis\Config();
    $oRedisConfig
        ->setHost('localhost')
        ->setPort(6379)
        ->setDefaultTtl(60)
        ;
    $oInstanceCacheRedis = new \Phpfastcache\Helper\Psr16Adapter('redis', $oRedisConfig);

日志

库还支持基于PSR-3标准的日志组件,例如非常流行的monolog/monolog

$oInstanceLogger = new \Monolog\Logger('name_of_my_logger');
$oInstanceLogger->pushHandler(new \Monolog\Handler\ErrorLogHandler(
        \Monolog\Handler\ErrorLogHandler::OPERATING_SYSTEM,
        \Psr\Log\LogLevel::DEBUG
    )
)->pushProcessor(new \Monolog\Processor\PsrLogMessageProcessor());

外部来源

GIOS

GIOS(环境保护总局 - Główny Inspektorat Ochrony Środowiska)提供无需任何认证的API

Airly

Airly建立了空气质量传感器的网络,这些传感器可以部署在整个城市或县。如果您想使用此API的外部数据,您需要从此处获取免费的Token密钥。

OWM

Open Weather Map是一个广为人知的天气和预报项目。要使用它,您需要从此处获取免费的Token密钥。

API使用

创建实例

$oClient = new \mrcnpdlk\Weather\Client();
$oClient
    ->setCacheInstance($oInstanceCacheFiles)
    ->setLoggerInstance($oInstanceLogger)
    ->setAirlyConfig('AIRLY_TOKEN')  // not required but recommended
    ->setOWMConfig('OWM_TOKEN')  // not required but recommended
;
$oApi = new \mrcnpdlk\Weather\Api($oClient);

默认情况下,API使用

  • 通过在运行脚本的机器的公共IP地址中找到的当前地理位置
  • 运行脚本的机器的当前日期

我们可以通过调用setLocation()方法来更改位置。

use mrcnpdlk\Weather\NativeModel\GeoPoint;

$oApi->setLocation(new GeoPoint(51.758158,19.544377));

方法

示例

getAddress()

mrcnpdlk\Weather\Model\Address Object
(
    [countryCode] => pl
    [province] => łódzkie
    [commune] => Łódź
    [place] => Łódź
    [neighbourhood] => Katedralna
    [street] => Wincentego Tymienieckiego
    [homeNr] => 16
    [postalCode] => 90-365
)

getSunSchedule()

此方法对接近极地的位置可能给出不合适的结果。

mrcnpdlk\Weather\Model\SunSchedule Object
(
    [sunrise] => 07:46:57
    [sunset] => 15:50:12
    [dayDuration] => 8:03
    [transit] => 11:48:34
    [civilTwilightBegin] => 07:07:27
    [civilTwilightEnd] => 16:29:42
    [nauticalTwilightBegin] => 06:24:41
    [nauticalTwilightEnd] => 17:12:27
    [astronomicalTwilightBegin] => 05:44:05
    [astronomicalTwilightEnd] => 17:53:03
)

getUVIndex()

0.43

getNearestGiosStation()

mrcnpdlk\Weather\NativeModel\Gios\Station Object
(
    [id] => 10058
    [stationName] => Łódź-Jana Pawła II 15
    [dateStart] => 2015-10-27 00:00:00
    [dateEnd] =>
    [gegrLat] => 51.754613
    [gegrLon] => 19.434925
    [addressStreet] => al. Jana Pawła II 15
    [city] => mrcnpdlk\Weather\NativeModel\Gios\City Object
        (
            [id] => 516
            [name] => Łódź
            [commune] => mrcnpdlk\Weather\NativeModel\Gios\Commune Object
                (
                    [communeName] => Łódź
                    [districtName] => Łódź
                    [provinceName] => ŁÓDZKIE
                )

        )

    [distance] => 2253.495
)

mrcnpdlk\Weather\NativeModel\Gios\Station实现了两个方法

原生API