nicholasricci / anagrafiche-anpr-istat
ANPRR和ISTAT的序列化数据
v1.1.0
2024-08-07 14:25 UTC
Requires
- php: >=8.1
- ext-zip: *
- doctrine/collections: ^2.2
Requires (Dev)
- devnix/zip-exception: ^0.1.0
- phpoffice/phpspreadsheet: ^1.10
- phpunit/phpunit: ^9.5
- symfony/console: ^6.4
- symfony/error-handler: ^6.4
- symfony/serializer: ^6.4
- symfony/yaml: ^6.4
README
官方意大利贝尔菲奥雷代码列表(地籍代码),代表一个comune。
更新
要更新数据库,您必须克隆项目并安装dev-dependencies
。然后,控制台将可用以下载和转储标准化数据集
composer install
php -d memory_limit=-1 bin/console update
就绪。
使用方法
安装
PHP
composer require nicholasricci/anagrafiche-anpr-istat
序列化数据
您可以在任何语言的dist/
文件夹中获取最新的comune和外国地区的序列化数据库CSV、JSON、XML和YAML。
API
PHP
有一个nicholasricci\AnagraficheANPRISTAT\Collection\ComuneCollection
和一个nicholasricci\AnagraficheANPRISTAT\BelfioreCode\Collection\RegionCollection
,可以获取一个填充了两个数据库的ArrayCollection
。这使您可以直接像数组一样遍历它们,甚至可以执行列查询。
查询
您可以通过其registry_code
(也称为cadastral code或belfiore code)获取一个comune。
<?php use nicholasricci\AnagraficheANPRISTAT\Collection\ComuneCollection; use nicholasricci\AnagraficheANPRISTAT\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(nicholasricci\AnagraficheANPRISTAT\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 nicholasricci\AnagraficheANPRISTAT\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(nicholasricci\AnagraficheANPRISTAT\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 nicholasricci\AnagraficheANPRISTAT\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)));