mlocati / comuni-italiani
包含来自Istat数据的意大利地区(Regioni)、省份(Provinces)和市镇(Comuni)列表
1.3.1
2024-07-03 07:38 UTC
Requires
- php: >=7.4
Requires (Dev)
- ext-intl: *
- opis/json-schema: ^2.3
- phpunit/phpunit: ^9.5
- riimu/kit-phpencoder: ^2.4
- symfony/cache: ^5.4
README
Comuni Italiani
此PHP库包含意大利所有地区(regioni)、省份(province/UTS)和市镇(comuni)的完整列表。
数据来自国家统计局(Istituto nazionale di statistica)的官方Situas服务,该服务以CC-BY-4.0许可证发布其数据。
安装
您可以使用Composer安装此包
composer require mlocati/comuni-italiani
数据结构
此库提供以下意大利行政区划
- 地理分区(例如“北西”,“中部”,“南”)
- 地区(例如“皮埃蒙特区”,“拉齐奥大区”,“坎帕尼亚大区”)
- 省份(例如“都灵”)和超市镇领土单位(UTS - 超市镇领土单位)
- 市镇(例如“都灵”)
其中
- 每个地理分区包含一个或多个地区
- 每个地区包含一个或多个省份/UTS
- 每个省份/UTS包含一个或多个市镇
数据可用
此库提供以下数据
- 对于地理分区
- 国家统计局ID(例如:
1
) - 名称(例如:
'Nord-ovest'
) - 当前统计领土单位名称(NUTS1)的第一级(例如:
'ITC'
) - 地区列表
- 国家统计局ID(例如:
- 对于地区
- 父级地理分区
- 国家统计局ID(例如:
'01'
) - 名称(例如:
'Piemonte'
) - 类型
- 普通地位(普通地位地区)
- 特殊地位(特殊地位地区)
- 由意大利税务局(Agenzia delle Entrate)分配的税务代码(例如:
'80087670016'
) - 当前统计领土单位名称(NUTS2)的第二级(例如:
'ITC1'
) - 该地区的首府市镇(地区首府市镇)(例如:
'Torino'
) - 省份/UTS列表
- 对于省份 / UTS
- 父级地区
- 国家统计局ID(例如:
'201'
) - 名称(例如:
'Torino'
) - 历史省份代码(例如:
'001'
) - 类型
- 省份(province)
- 自治省(provincia autonoma)
- 大都市(città metropolitana)
- 自由市镇联合体(libero consorzio di comuni)
- 非行政单位(unità non amministrativa) - 前弗留利-威尼斯朱利亚省的省份
- 车辆代码(sigla automobilistica)(例如:
'TO'
) - 由意大利税务局分配的税务代码(例如:
'01907990012'
) - 当前统计领土单位名称(NUTS3)的第三级(例如:
'ITC11'
) - 该省份/UTS的首府市镇(省份首府市镇)(例如:
'Torino'
) - 市镇列表
- 对于市镇
- 父级省份/UTS
- 意大利国家统计局ID(例如:
'001272'
) - 名称(例如:
'Torino'
) - 双语市政区的意大利语和外语名称(例如:
'Bolzano'
和'Bozen'
) - 如果该市政区是其所在地区的首府市政区(regione的首府)
- 如果该市政区是其所在省/UTS的首府市政区(provincia/UTS的首府)
- 土地登记代码(codice catastale)(例如:
'L219'
) - 由意大利国家税务局(Agenzia delle Entrate)分配的税务代码(codice fiscale)(例如:
'00514490010'
) - 当前统计领土单位名称(NUTS1)的第一级(例如:
'ITC'
) - 当前统计领土单位名称(NUTS2)的第二级(例如:
'ITC1'
) - 当前统计领土单位名称(NUTS3)的第三级(例如:
'ITC11'
)
检索所有地区
您可以使用Factory
类来获取所有地理子区域、地区、省/UTS和市政区的列表。
例如
use MLocati\ComuniItaliani\Factory; $factory = new Factory(); $allGeographicalSubdivisions = $factory->getGeographicalSubdivisions(); $allRegions = $factory->getRegions(); $allProvinces = $factory->getProvinces(); $allMunicipalities = $factory->getMunicipalities();
通过ID查找地区
如果您想根据ID检索一个地区,可以使用Finder
类
use MLocati\ComuniItaliani\Finder; $finder = new Finder(); $geographicalSubdivision = $finder->getGeographicalSubdivisionByID(1); $region = $finder->getRegionByID('01'); $province = $finder->getProvinceByID('201'); $municipality = $finder->getMunicipalityByID('001272');
通过车辆代码查找省份
您可以使用Finder
类的getProvinceByVehicleCode
方法
use MLocati\ComuniItaliani\Finder; $finder = new Finder(); echo $finder->getProvinceByVehicleCode('CO')->getName(); // prints Como
通过名称查找地区
您可以使用Finder
类通过名称查找地理子区域、地区、省/UTS和市政区。
要搜索的文本将被拆分为单词,您将获得包含所有单词的地区名称。
例如,搜索roma lombard
将返回Romano di Lombardia (BG)
市政区。
示例
use MLocati\ComuniItaliani\Finder; $finder = new Finder(); $geographicalSubdivisions = $finder->findGeographicalSubdivisionsByName('Nord'); $regions = $finder->findRegionsByName('Campa'); $provinces = $finder->findProvincesByName('Bozen'); $municipalities = $finder->findMunicipalitiesByName('Roma lombard');
默认情况下,Finder将在单词的开头查找。因此,ampania
不会匹配Campania
。
如果您想允许在单词的中间搜索,请将第二个参数指定为true
use MLocati\ComuniItaliani\Finder; $finder = new Finder(); $geographicalSubdivisions = $finder->findGeographicalSubdivisionsByName('ord', true); $regions = $finder->findRegionsByName('ampania', true); $provinces = $finder->findProvincesByName('ozen', true); $municipalities = $finder->findMunicipalitiesByName('oma ombard', true);
您还可以将搜索限制在特定地区
use MLocati\ComuniItaliani\Finder; $finder = new Finder(); $province = $finder->getProvinceByVehicleCode('BG'); $municipalities = $finder->findMunicipalitiesByName('romano', false, $province); // The same applies to findRegionsByName and findProvincesByName
测试层次结构
给定两个地区,您可以使用isSame()
方法来检查它们是否相同
if ($territory1->isSame($territory2)) { echo 'Same territory'; }
您还可以检查一个地区是否包含在另一个地区中
if ($territory1->isContainedIn($territory2)) { echo "{$territory1} is contained in {$territory2}"; } if ($territory1->isSameOrContainedIn($territory2)) { echo "{$territory1} is contained in {$territory2} (or they are the same)"; }
对于地理子区域、地区和省/UTS(它们是其他地区的容器),您也可以使用contains()
和isSameOrContains()
方法。
// $region is an instance of Region here if ($region->contains($territory)) { echo "{$region} contains {$terrtory}"; } if ($region->isSameOrContains($territory)) { echo "{$region} is same (or contains) {$terrtory}"; }