fdevs / moscow-open-data-sdk

此包已废弃,不再维护。未建议替代包。

莫斯科开放数据SDK: http://api.data.mos.ru

dev-master 2014-12-10 10:46 UTC

This package is not auto-updated.

Last update: 2022-08-30 06:43:08 UTC


README

#莫斯科开放数据SDK

此库允许轻松处理莫斯科政府开放数据。您可以在那里找到大量有用的数据,如:市场、体育场所/区域、公共交通票务区域、学校、图书馆等。

##安装 将 fdevs/moscow-open-data-sdk 添加到您的 composer.json 文件中的依赖项

php composer.phar require fdevs/moscow-open-data-sdk

##使用

#####示例 1: 获取所有数据类型的列表

只需创建一个 OpenData 实例,并传入 ClientInterface 实例和您在此处获得的 API 密钥 here

require __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;
use FDevs\MoscowOpenData\Api\OpenData;
use FDevs\MoscowOpenData\Model\DataType;
use FDevs\MoscowOpenData\Model\QueryFilter;

$apiKey = '12345...';
$api = new OpenData(new Client(), $apiKey);

// here you get a `Package` with `DataType` items inside
foreach ($api->getDataTypesList()->getItems() as $dataType) {
    /** @var DataType $dataType */
    printf(
        "id: %d\ncategory: %d\ndepartment: %d\ncaption: %s\n\n",
        $dataType->getId(),
        $dataType->getCategoryId(),
        $dataType->getDepartmentId(),
        $dataType->getCaption()
    );
}

以这种方式获取信息时,我们只有上面示例中打印的信息。输出

...
id: 1534
category: 14
department: 6
caption: План обустройства территорий транспортно-пересадочных узлов в 2014 году

id: 912
category: 162
department: 16
caption: Места для пикника
...

#####示例 2: 获取数据类型完整信息

$dataTypeId = 912; // from previous example
$dataType = $api->getDataTypeFullInfo($dataTypeId);

每种数据类型可能有自己特定的属性。让我们看看

echo $dataType->getDescription() . "\n";

foreach ($dataType->getGenericProperties() as $property) {
    /** @var GenericProperty $property */
    printf("type: %s, caption: %s\n", $property->getType(), $property->getCaption());
}

输出

Места для пикника, расположенные в пределах установленных границ города Москвы
type: Photo, caption: Фотография
type: ObjectShortName, caption: Краткое название спортивного объекта
type: SportZoneName, caption: Название спортивной зоны
type: ObjectAdmArea, caption: Административный округ
type: ObjectDistrict, caption: Район
type: Address, caption: Адрес
type: Email, caption: Адрес электронной почты
type: WebSite, caption: Адрес сайта
type: HelpPhone, caption: Справочный телефон
...

#####示例 3: 获取数据类型条目(以体育区域为例)

$sportZoneDataTypeId = 912;
$zones = $api->getDataTypeEntries($sportZoneDataTypeId);

foreach ($zones as $zone) {
    /** @var DataTypeEntry $zone */
    $website = $zone->hasGenericProperty('WebSite') ? $zone->getGenericProperty('WebSite')->getCaption() : '';
    $address = $zone->hasGenericProperty('Address') ? $zone->getGenericProperty('Address')->getCaption() : '';

    printf(
        "id: %s\nwebsite: %s\naddress: %s\n\n",
        $zone->getId(),
        $website,
        $address
    );
}
过滤器

可以在一些 API 调用中应用 Query 过滤器。有关更多详细信息,请参阅 OpenDataInterface

#####示例 4.1: 限制和偏移量

查询过滤器允许我们减少数据集并遍历它。

$filter = new QueryFilter();
$filter
    ->setLimit(10)
    ->setSkip(5)
;
$dataPackage = $api->getDataTypesList($filter);

#####示例 4.2: 内联计数

可以使用查询过滤器获取总记录数

$filter = new QueryFilter();
$filter
    ->setLimit(5)
    ->setShowInlineCount(true)
;
$dataPackage = $api->getDataTypesList($filter);

echo $dataPackage->getTotalCount();

##更多信息 阅读莫斯科开放数据的文档 Moscow open data

##许可证 此库根据 MIT 许可证授权