devnix / belfiore-code
意大利贝尔菲奥雷代码和外国地区代码的序列化数据
Requires
- php: >=7.1
- doctrine/collections: ^1.6
Requires (Dev)
- ext-zip: *
- devnix/zip-exception: ^0.1.0
- phpoffice/phpspreadsheet: ^1.10
- phpunit/phpunit: ^9.0
- symfony/console: ^4.4|^5.0
- symfony/error-handler: ^4.4|^5.0
- symfony/serializer: ^4.4|^5.0
- symfony/yaml: ^4.4|^5.0
README
官方意大利贝尔菲奥雷代码列表(地籍代码),代表一个comune。
更新
要更新数据库,您必须克隆项目并安装dev-dependencies
。然后,控制台将可用以下载和转储标准化数据集
composer install
bin/console update
并且一切就绪。
无论如何,如果您认为抓取的数据已过时,请提交问题。我会尽快更新新数据。
使用方法
安装
PHP
composer require devnix/belfiore-code
序列化数据
您可以在任何语言的dist/
文件夹中获取最新序列化数据库(comunes和外国地区)的CSV、JSON、XML和YAML。
API
PHP
存在一个Devnix\BelfioreCode\Collection\ComuneCollection
和一个Devnix\BelfioreCode\Collection\RegionCollection
,以获取一个填充了两个数据库的ArrayCollection
。这使得您可以像数组一样直接遍历它们,甚至可以执行列查询。
查询
您可以通过其registry_code
(也称为cadastral code或belfiore code)获取一个comune。
<?php use Devnix\BelfioreCode\Collection\ComuneCollection; use Doctrine\Common\Collections\Criteria; use Doctrine\Common\Collections\Expr\Comparison; $comunes = new ComuneCollection(); $criteria = new Criteria(); $criteria ->where(new Comparison('registry_code', Comparison::IS, 'A001')) ; var_dump($comunes->matching($criteria)));
这将获取一个包含匹配注册代码的新集合。如您所见,有一个名为"ABANO"的comune在1924-11-13停止运营,还有一个名为"ABANO TERME"的活跃comune。
object(Devnix\BelfioreCode\Collection\ComuneCollection)#49 (1) {
["elements":"Doctrine\Common\Collections\ArrayCollection":private]=>
array(2) {
[0]=>
array(18) {
["id"]=>
string(5) "12560"
["institution_date"]=>
string(10) "1866-11-19"
["end_date"]=>
string(10) "1924-11-13"
["istat_id"]=>
string(6) "028001"
["registry_code"]=>
string(4) "A001"
["name_it"]=>
string(5) "ABANO"
["name_transliterated"]=>
string(5) "ABANO"
["alternative_name"]=>
string(0) ""
["alternative_name_transliterated"]=>
string(0) ""
["anpr_id"]=>
string(2) "28"
["istat_province_id"]=>
string(3) "028"
["istat_region_id"]=>
string(2) "05"
["istat_prefecture_id"]=>
string(0) ""
["status"]=>
string(12) "discontinued"
["provincial_code"]=>
string(2) "PD"
["source"]=>
string(0) ""
["last_update"]=>
string(10) "2016-06-17"
["istat_discontinued_code"]=>
string(6) "028500"
}
[1]=>
array(18) {
["id"]=>
string(1) "1"
["institution_date"]=>
string(10) "1924-11-14"
["end_date"]=>
string(10) "9999-12-31"
["istat_id"]=>
string(6) "028001"
["registry_code"]=>
string(4) "A001"
["name_it"]=>
string(11) "ABANO TERME"
["name_transliterated"]=>
string(11) "ABANO TERME"
["alternative_name"]=>
string(0) ""
["alternative_name_transliterated"]=>
string(0) ""
["anpr_id"]=>
string(2) "28"
["istat_province_id"]=>
string(3) "028"
["istat_region_id"]=>
string(2) "05"
["istat_prefecture_id"]=>
string(2) "PD"
["status"]=>
string(6) "active"
["provincial_code"]=>
string(2) "PD"
["source"]=>
string(0) ""
["last_update"]=>
string(10) "2016-06-17"
["istat_discontinued_code"]=>
string(0) ""
}
}
}
您可能希望通过其registry_code
找到一个活跃的comune。为此,只需参考Doctrine Collections文档
<?php use Devnix\BelfioreCode\Collection\ComuneCollection; use Doctrine\Common\Collections\Criteria; use Doctrine\Common\Collections\Expr\Comparison; $comunes = new ComuneCollection(); $criteria = new Criteria(); $criteria ->where(new Comparison('registry_code', Comparison::IS, 'A001')) ->andWhere(new Comparison('status', Comparison::IS, 'active')) ; var_dump($comunes->matching($criteria)));
它将为您获取所需的标准
object(Devnix\BelfioreCode\Collection\ComuneCollection)#55 (1) {
["elements":"Doctrine\Common\Collections\ArrayCollection":private]=>
array(1) {
[1]=>
array(18) {
["id"]=>
string(1) "1"
["institution_date"]=>
string(10) "1924-11-14"
["end_date"]=>
string(10) "9999-12-31"
["istat_id"]=>
string(6) "028001"
["registry_code"]=>
string(4) "A001"
["name_it"]=>
string(11) "ABANO TERME"
["name_transliterated"]=>
string(11) "ABANO TERME"
["alternative_name"]=>
string(0) ""
["alternative_name_transliterated"]=>
string(0) ""
["anpr_id"]=>
string(2) "28"
["istat_province_id"]=>
string(3) "028"
["istat_region_id"]=>
string(2) "05"
["istat_prefecture_id"]=>
string(2) "PD"
["status"]=>
string(6) "active"
["provincial_code"]=>
string(2) "PD"
["source"]=>
string(0) ""
["last_update"]=>
string(10) "2016-06-17"
["istat_discontinued_code"]=>
string(0) ""
}
}
}
排序
排序也可以通过Doctrine Collections完成。请参阅他们的文档以查看可用的API
<?php use Devnix\BelfioreCode\Collection\ComuneCollection; use Doctrine\Common\Collections\Criteria; use Doctrine\Common\Collections\Expr\Comparison; $comunes = new ComuneCollection(); $criteria = new Criteria(); $criteria->orderBy(['last_update' => Criteria::ASC]); var_dump($comunes->matching($criteria)));
路线图
- 编写单元测试以验证数据源保持相同的格式
- 编写涵盖所有类的单元测试
- 用英文编写每个列的文档
- 调查使用GitHub Actions每月自动运行更新命令的方法
贡献
您可以通过分支项目并创建拉取请求来做出贡献。请确保您所有的工作都在develop
分支上,否则您的PR将被拒绝。
由于我非常希望得到一些反馈,特别是比我更熟悉这类数据的人的反馈,我将将其视为WIP,API/列名称可能在短期内发生变化。
归属
- Comunes值列表:CC BY 4.0 内政部
- 区域值列表:CC BY 3.0 国家统计局
受Marketto/codice-fiscale-utils启发,与DavidePastore/codice-fiscale一起使用