mlocati/comuni-italiani

包含来自Istat数据的意大利地区(Regioni)、省份(Provinces)和市镇(Comuni)列表

1.3.1 2024-07-03 07:38 UTC

This package is auto-updated.

Last update: 2024-09-03 08:20:25 UTC


README

Tests Coverage

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(例如:'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}";
}