diggingdata/yii2-geonames

Yii2 GeoNames 模块。管理下载和导入 GeoNames 数据。表格的 CRUD UI。

安装: 324

依赖者: 0

建议者: 0

安全: 0

类型:yii2-extension

0.0.5 2023-02-06 15:35 UTC

This package is auto-updated.

Last update: 2024-09-06 19:28:30 UTC


README

此扩展为 Yii 框架 2.0 提供了 GeoNames 管理解决方案,包含导入脚本和 CRUD UI。

它是基于 https://github.com/yurtesen/geonames 的 Laravel / Lumen / Eloquent Geonames 脚本的改编。

有关许可证信息,请查看 LICENSE 文件。

最新稳定版本

1. 安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

composer require --prefer-dist diggindata/yii2-geonames:dev-master

php composer.phar require --prefer-dist diggindata/yii2-geonames

或添加

"diggindata/yii2-geonames": "@dev"

到您的 composer.json 的 require 部分,然后运行

composer install

2. 配置

文件夹

我们需要一个文件夹来存储从 geonames.org 下载的数据文件。因此,在您的应用程序基本目录中,创建目录 datadata/geonames。此目录将保存从 geonames.org 下载的数据文件。

应用程序配置

将以下行添加到您的 web 和控制台配置文件中,以启用此模块(config/web.phpconfig/console.php

    ...
    'modules' => [
        ...
        'geonames' => [
            'class' => 'diggindata\geonames\Module',
        ],
    ],

命令行配置

可以配置 yii geonames 命令行命令。

在您的 Yii 应用程序的 config 目录中创建一个 geonames.php 文件。

您可以使用 vendor/diggindata/yii2-geonames/geonames.php.example 文件作为模板。

以下列出了所有可用的配置选项及其默认值。

proxy (类型: string, 默认: null)

  • 代理服务器的 URL 和端口

proxy_user (类型: string, 默认: null)

  • 代理用户名

proxy_pass (类型: string, 默认: null)

  • 代理用户密码

keepTxt (类型: boolean, 默认: true)

storagePath (默认: Yii::getAlias('@app/data') . '/geonames')

ignoreTables

要忽略导入的表的数组。某些表可能没有被您使用,例如 alternate_names 表。
取消注释它将停止自动导入。

countries (类型: array, 默认: array())

要导入的国家 2 位 ISO 代码数组。如果数组为空,则导入 allCountries 文件。

3. 更新数据库模式

最后,您需要通过应用提供的迁移来更新您的数据库模式。确保您已正确配置了 db 应用程序组件,然后运行以下命令

$ php yii migrate/up --migrationPath=@vendor/diggindata/yii2-geonames/src/migrations

现在我该去哪里?

到此为止,您应该已经安装了 Yii2-geonames。您现在可以打开 geonames 模块。您也应该能够通过控制台命令导入 GeoNames 数据,请参阅下面的 用法

用法

下载数据

在您的应用程序文件夹中输入以下命令

yii geonames/geonames/download

这将下载数据文件

[] zip
+--- DE.zip
iso-languagecodes.txt
timeZones.txt
admin1CodesASCII.txt
admin2Codes.txt
countryInfo.txt
DE.zip
featureCodes_en.txt
hierarchy.zip

要更新现有文件,请添加 -u 标志。

导入数据

在您的应用程序文件夹中输入以下命令

yii geonames/geonames/seed

这将把下载的数据插入到相应的数据库表中。

提示

删除重复的邮政编码

-- Add Auto-Increment PK
ALTER TABLE `postalcode`
ADD `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY;

-- Delete duplicates
DELETE t1 FROM postalcode t1
INNER JOIN postalcode t2 
WHERE 
    t1.id > t2.id AND (
    t1.countryCode = t2.countryCode AND
    t1.postalCode = t2.postalCode AND
    t1.placeName = t2.placeName AND
    t1.admin1Code = t2.Admin1Code AND
    t1.admin2Code = t2.admin2Code AND
    t1.admin3Code = t2.admin3Code AND
    t1.latitude = t2.latitude AND
    t1.longitude = t2.longitude
);

-- Drop Auto-Increment PK
ALTER TABLE postalcode DROP `id`;