heartsentwined/zf2-geoname

维护Geonames数据库的本地副本

v4.2.3 2016-07-06 12:27 UTC

README

Build Status

维护Geonames(地点)数据库的本地副本。

此模块将安装Geonames(地点)数据库的自更新本地副本。它涵盖了来自官方数据库转储的位置信息。它不包括“附加组件”,例如地震、天气数据等,这些数据可通过他们的Web服务获取。

注意:Geonames数据库的大小约为1.5GiB - 2GiB,当安装在MySQL数据库中时。您确定需要本地副本,而不是官方Web服务吗?

安装

Composer:

{
  "require": {
    "yalesov/zf2-geoname": "4.*"
  }
}

然后在(app root)/config/application.config.*中的modules键中添加Yalesov\Geoname

Geoname模块将通过DoctrineORMModule连接到您的应用程序数据库。它将创建多个以he_geoname_*为前缀的表,并使用默认的EntityManager doctrine.entitymanager.orm_default。如果您的设置不同,请根据需要修改config/module.config.yml中的doctrine部分。

Geoname模块使用了Cron模块,所以请确保您遵循其设置,并且已经正确设置了cron作业。

最后,您需要更新您的数据库模式。推荐的方式是通过Doctrine的CLI

$ vendor/bin/doctrine-module orm:schema-tool:update --force

配置

config/geoname.local.php.dist复制到(app root)/config/autoload/geoname.local.php,并修改设置。

  • tmpDir:存储geonames数据库源文件的临时目录。(请确保它是脚本可写的。)
  • cron:(cron表达式)Geoname应该运行多频繁。

cron应该多频繁?推荐设置为每15分钟一次,这也是默认设置。然而,您可以自行调整。

目前(2012年9月18日),安装数据库需要820个cron作业。以15分钟为间隔,这将需要大约8.5天来安装数据库。至于更新,每天只需要一个cron作业。然而,建议每天设置多个以提供冗余——以防geonames服务器暂时不可达。

您也可以在安装后调整到更频繁的cron。在安装期间,Meta实体的status字段或he_geoname_meta表的status字段将设置为Yalesov\Geoname\Repository\Meta::STATUS_INSTALL_*,之后将设置为Yalesov\Geoname\Repository\Meta::STATUS_UPDATE

用法

数据库同步

只需遵循安装说明。Geoname模块将在cron作业中安装和更新其数据库。

注意:当源指示“删除”时,Geoname模块实际上不会从您的数据库中删除相应的记录;它只会将其标记为已弃用(通过在实体的PlaceAltName中将isDeprecated字段设置为true)。这是为了确保您可以在您的ZF2应用程序中依赖Geoname模块设置的ID。

查询数据库

您可以直接使用Doctrine 2 ORM API。映射文件位于 (zf2-geoname)/src/Yalesov/Geoname/Entity/Mapping。从 continentcountry,再到各种行政级别的所有地点的层次结构,都已正确地捕获在 Place 实体的 parentchildren 字段中。

待办:添加一组用于常见任务的API,例如按名称查找地点、列出国家中的所有地点等。