diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt index ee86424479..52722d9312 100644 --- a/generator/CMakeLists.txt +++ b/generator/CMakeLists.txt @@ -185,6 +185,10 @@ set( regions/specs/angola.hpp regions/specs/antigua_and_barbuda.cpp regions/specs/antigua_and_barbuda.hpp + regions/specs/argentina.cpp + regions/specs/argentina.hpp + regions/specs/aruba.cpp + regions/specs/aruba.hpp regions/specs/australia.cpp regions/specs/australia.hpp regions/specs/austria.cpp @@ -203,14 +207,20 @@ set( regions/specs/belarus.hpp regions/specs/belgium.cpp regions/specs/belgium.hpp + regions/specs/belize.cpp + regions/specs/belize.hpp regions/specs/benin.cpp regions/specs/benin.hpp regions/specs/bhutan.cpp regions/specs/bhutan.hpp + regions/specs/bolivia.cpp + regions/specs/bolivia.hpp regions/specs/bosnia_and_herzegovina.cpp regions/specs/bosnia_and_herzegovina.hpp regions/specs/brazil.cpp regions/specs/brazil.hpp + regions/specs/brunei.cpp + regions/specs/brunei.hpp regions/specs/bulgaria.cpp regions/specs/bulgaria.hpp regions/specs/burkina_faso.cpp @@ -223,18 +233,24 @@ set( regions/specs/canada.hpp regions/specs/chad.cpp regions/specs/chad.hpp + regions/specs/chile.cpp + regions/specs/chile.hpp regions/specs/china.cpp regions/specs/china.hpp + regions/specs/colombia.cpp + regions/specs/colombia.hpp + regions/specs/costa_rica.cpp + regions/specs/costa_rica.hpp regions/specs/cote_divoire.cpp regions/specs/cote_divoire.hpp regions/specs/croatia.cpp regions/specs/croatia.hpp + regions/specs/cuba.cpp + regions/specs/cuba.hpp regions/specs/cyprus.cpp regions/specs/cyprus.hpp regions/specs/czech_republic.cpp regions/specs/czech_republic.hpp - regions/specs/democratic_republic_of_the_congo.cpp - regions/specs/democratic_republic_of_the_congo.hpp regions/specs/denmark.cpp regions/specs/denmark.hpp regions/specs/dominican_republic.cpp @@ -375,6 +391,8 @@ set( regions/specs/swaziland.hpp regions/specs/sweden.cpp regions/specs/sweden.hpp + regions/specs/suriname.cpp + regions/specs/suriname.hpp regions/specs/switzerland.cpp regions/specs/switzerland.hpp regions/specs/syria.cpp diff --git a/generator/regions/country_specifier_builder.cpp b/generator/regions/country_specifier_builder.cpp index 892f26b029..ed0371ddfd 100644 --- a/generator/regions/country_specifier_builder.cpp +++ b/generator/regions/country_specifier_builder.cpp @@ -6,6 +6,8 @@ #include "generator/regions/specs/andorra.hpp" #include "generator/regions/specs/angola.hpp" #include "generator/regions/specs/antigua_and_barbuda.hpp" +#include "generator/regions/specs/argentina.hpp" +#include "generator/regions/specs/aruba.hpp" #include "generator/regions/specs/australia.hpp" #include "generator/regions/specs/austria.hpp" #include "generator/regions/specs/azerbaijan.hpp" @@ -15,22 +17,28 @@ #include "generator/regions/specs/barbados.hpp" #include "generator/regions/specs/belarus.hpp" #include "generator/regions/specs/belgium.hpp" +#include "generator/regions/specs/belize.hpp" #include "generator/regions/specs/benin.hpp" #include "generator/regions/specs/bhutan.hpp" +#include "generator/regions/specs/bolivia.hpp" #include "generator/regions/specs/bosnia_and_herzegovina.hpp" #include "generator/regions/specs/brazil.hpp" +#include "generator/regions/specs/brunei.hpp" #include "generator/regions/specs/bulgaria.hpp" #include "generator/regions/specs/burkina_faso.hpp" #include "generator/regions/specs/burundi.hpp" #include "generator/regions/specs/cameroon.hpp" #include "generator/regions/specs/canada.hpp" #include "generator/regions/specs/chad.hpp" +#include "generator/regions/specs/chile.hpp" #include "generator/regions/specs/china.hpp" +#include "generator/regions/specs/colombia.hpp" +#include "generator/regions/specs/costa_rica.hpp" #include "generator/regions/specs/cote_divoire.hpp" #include "generator/regions/specs/croatia.hpp" +#include "generator/regions/specs/cuba.hpp" #include "generator/regions/specs/cyprus.hpp" #include "generator/regions/specs/czech_republic.hpp" -#include "generator/regions/specs/democratic_republic_of_the_congo.hpp" #include "generator/regions/specs/denmark.hpp" #include "generator/regions/specs/dominican_republic.hpp" #include "generator/regions/specs/egypt.hpp" @@ -99,6 +107,7 @@ #include "generator/regions/specs/south_africa.hpp" #include "generator/regions/specs/south_korea.hpp" #include "generator/regions/specs/south_sudan.hpp" +#include "generator/regions/specs/suriname.hpp" #include "generator/regions/specs/swaziland.hpp" #include "generator/regions/specs/sweden.hpp" #include "generator/regions/specs/switzerland.hpp" @@ -136,6 +145,10 @@ std::unique_ptr GetCountrySpecifier(std::string const & countr return std::make_unique(); if (countryName == u8"Antigua and Barbuda") return std::make_unique(); + if (countryName == u8"Argentina") + return std::make_unique(); + if (countryName == u8"Aruba") + return std::make_unique(); if (countryName == u8"Australia") return std::make_unique(); if (countryName == u8"Austria") @@ -156,12 +169,18 @@ std::unique_ptr GetCountrySpecifier(std::string const & countr return std::make_unique(); if (countryName == u8"Benin") return std::make_unique(); + if (countryName == u8"Belize") + return std::make_unique(); if (countryName == u8"Bhutan") return std::make_unique(); + if (countryName == u8"Bolivia") + return std::make_unique(); if (countryName == u8"Bosnia and Herzegovina") return std::make_unique(); if (countryName == u8"Brazil") return std::make_unique(); + if (countryName == u8"Brunei") + return std::make_unique(); if (countryName == u8"Bulgaria") return std::make_unique(); if (countryName == u8"Burkina Faso") @@ -176,18 +195,24 @@ std::unique_ptr GetCountrySpecifier(std::string const & countr return std::make_unique(); if (countryName == u8"Chad") return std::make_unique(); + if (countryName == u8"Colombia") + return std::make_unique(); + if (countryName == u8"Costa Rica") + return std::make_unique(); + if (countryName == u8"Côte d'Ivoire") + return std::make_unique(); if (countryName == u8"Croatia") return std::make_unique(); if (countryName == u8"China") return std::make_unique(); - if (countryName == u8"Hong Kong") - return std::make_unique(); + if (countryName == u8"Chile") + return std::make_unique(); if (countryName == u8"Cyprus") return std::make_unique(); + if (countryName == u8"Cuba") + return std::make_unique(); if (countryName == u8"Czech Republic") return std::make_unique(); - if (countryName == u8"Democratic Republic of the Congo") - return std::make_unique(); if (countryName == u8"Denmark") return std::make_unique(); if (countryName == u8"Dominican Republic") @@ -222,6 +247,8 @@ std::unique_ptr GetCountrySpecifier(std::string const & countr return std::make_unique(); if (countryName == u8"Hungary") return std::make_unique(); + if (countryName == u8"Hong Kong") + return std::make_unique(); if (countryName == u8"Iceland") return std::make_unique(); if (countryName == u8"India") @@ -240,8 +267,6 @@ std::unique_ptr GetCountrySpecifier(std::string const & countr return std::make_unique(); if (countryName == u8"Italy") return std::make_unique(); - if (countryName == u8"Côte d'Ivoire") - return std::make_unique(); if (countryName == u8"Japan") return std::make_unique(); if (countryName == u8"Jordan") @@ -306,7 +331,8 @@ std::unique_ptr GetCountrySpecifier(std::string const & countr return std::make_unique(); if (countryName == u8"Romania") return std::make_unique(); - if (countryName == u8"Russia") + if (countryName == u8"Russia" || + countryName == u8"Россия" || countryName == u8"Российская Федерация" || countryName == u8"РФ") return std::make_unique(); if (countryName == u8"Serbia") return std::make_unique(); diff --git a/generator/regions/specs/afghanistan.cpp b/generator/regions/specs/afghanistan.cpp index 1ee9e1e144..3752a47e48 100644 --- a/generator/regions/specs/afghanistan.cpp +++ b/generator/regions/specs/afghanistan.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel AfghanistanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province + case AdminLevel::Six: return PlaceLevel::Subregion; // Districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/albania.cpp b/generator/regions/specs/albania.cpp index 9ea0f572b9..c8659326e8 100644 --- a/generator/regions/specs/albania.cpp +++ b/generator/regions/specs/albania.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel AlbaniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Region; // counties + case AdminLevel::Seven: return PlaceLevel::Subregion; // districts + case AdminLevel::Nine: return PlaceLevel::Suburb; // Neighborhoods of Tirana + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/algeria.cpp b/generator/regions/specs/algeria.cpp index b4e9d9a393..b3dba66ea8 100644 --- a/generator/regions/specs/algeria.cpp +++ b/generator/regions/specs/algeria.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel AlgeriaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Provinces of Algeria + case AdminLevel::Six: return PlaceLevel::Subregion; // Districts of Algeria + case AdminLevel::Eight: return PlaceLevel::Locality; // Communes of Algeria, also towns + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/andorra.cpp b/generator/regions/specs/andorra.cpp index c0ca7d148d..a3ccbe0996 100644 --- a/generator/regions/specs/andorra.cpp +++ b/generator/regions/specs/andorra.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel AndorraSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Seven: return PlaceLevel::Region; // Parròquies borders (communes) + case AdminLevel::Eight: + return PlaceLevel::Sublocality; // Municipality borders Only used for the capital city Andorra + // la Vella. + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/angola.cpp b/generator/regions/specs/angola.cpp index 667eec3a28..0fb8189e60 100644 --- a/generator/regions/specs/angola.cpp +++ b/generator/regions/specs/angola.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel AngolaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Províncias + case AdminLevel::Six: return PlaceLevel::Subregion; // Municípios (Municipalities) + case AdminLevel::Seven: + return PlaceLevel::Locality; // Comunas (Urban districts or Communes) includes towns + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/antigua_and_barbuda.cpp b/generator/regions/specs/antigua_and_barbuda.cpp index c3a4798657..3b267fc713 100644 --- a/generator/regions/specs/antigua_and_barbuda.cpp +++ b/generator/regions/specs/antigua_and_barbuda.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel AntiguaAndBarbudaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Parishes and dependencies borders + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/argentina.cpp b/generator/regions/specs/argentina.cpp new file mode 100644 index 0000000000..c6831dca6b --- /dev/null +++ b/generator/regions/specs/argentina.cpp @@ -0,0 +1,25 @@ +#include "generator/regions/specs/argentina.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel ArgentinaSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province / Ciudad Autónoma de Buenos Aires + case AdminLevel::Five: return PlaceLevel::Subregion; // Departamento / partido + case AdminLevel::Eight: return PlaceLevel::Locality; // Villages, City, town + case AdminLevel::Nine: return PlaceLevel::Suburb; // Barrio + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/democratic_republic_of_the_congo.hpp b/generator/regions/specs/argentina.hpp similarity index 85% rename from generator/regions/specs/democratic_republic_of_the_congo.hpp rename to generator/regions/specs/argentina.hpp index 158f3aedd4..d3b5c5195c 100644 --- a/generator/regions/specs/democratic_republic_of_the_congo.hpp +++ b/generator/regions/specs/argentina.hpp @@ -9,7 +9,7 @@ namespace regions { namespace specs { -class DemocraticRepublicOfTheCongoSpecifier final : public CountrySpecifier +class ArgentinaSpecifier final : public CountrySpecifier { private: // CountrySpecifier overrides: diff --git a/generator/regions/specs/aruba.cpp b/generator/regions/specs/aruba.cpp new file mode 100644 index 0000000000..424cce3bf1 --- /dev/null +++ b/generator/regions/specs/aruba.cpp @@ -0,0 +1,22 @@ +#include "generator/regions/specs/aruba.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel ArubaSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Eight: + return PlaceLevel::Region; // Districts (Municipalities) known as GAC regions + default: break; + } + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/aruba.hpp b/generator/regions/specs/aruba.hpp new file mode 100644 index 0000000000..ed964288ca --- /dev/null +++ b/generator/regions/specs/aruba.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class ArubaSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/australia.cpp b/generator/regions/specs/australia.cpp index cc5db2de8f..a88a979537 100644 --- a/generator/regions/specs/australia.cpp +++ b/generator/regions/specs/australia.cpp @@ -8,6 +8,19 @@ namespace specs { PlaceLevel AustraliaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // State or Territory Border + case AdminLevel::Seven: + return PlaceLevel::Subregion; // District or Region Border (e.g Perthshire, Fitzroy, Canning, + // Greater Sydney, Greater Melbourne, etc.) + case AdminLevel::Nine: + return PlaceLevel::Locality; // Suburb and Locality Border (If larger than ABS boundary) + case AdminLevel::Ten: return PlaceLevel::Locality; // Suburb and Locality Border (ABS boundaries) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/austria.cpp b/generator/regions/specs/austria.cpp index 38541b024a..03ada40eac 100644 --- a/generator/regions/specs/austria.cpp +++ b/generator/regions/specs/austria.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel AustriaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Bundesland + case AdminLevel::Nine: + return PlaceLevel::Locality; // Wiener / Grazer / ... Stadt- / Gemeindebezirk + case AdminLevel::Ten: return PlaceLevel::Sublocality; // Stadtteile + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/azerbaijan.cpp b/generator/regions/specs/azerbaijan.cpp index 99cfed6317..2d90add891 100644 --- a/generator/regions/specs/azerbaijan.cpp +++ b/generator/regions/specs/azerbaijan.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel AzerbaijanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // autonomous republic + case AdminLevel::Seven: + return PlaceLevel::Subregion; // regions (rayons) and cities with authority of republic level + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/bahamas.cpp b/generator/regions/specs/bahamas.cpp index 6a593ea63b..f13d319c75 100644 --- a/generator/regions/specs/bahamas.cpp +++ b/generator/regions/specs/bahamas.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BahamasSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: + return PlaceLevel::Region; // Central government district - New Providence (main island) only + case AdminLevel::Eight: + return PlaceLevel::Region; // Districts of the Bahamas (Local government) (other islands) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/bahrain.cpp b/generator/regions/specs/bahrain.cpp index 5ea5e5f286..1943829f99 100644 --- a/generator/regions/specs/bahrain.cpp +++ b/generator/regions/specs/bahrain.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BahrainSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Governorate + case AdminLevel::Six: + return PlaceLevel::Subregion; // Municipality Example: Al Manamah, Ras Rumman + case AdminLevel::Nine: return PlaceLevel::Locality; // neighbourhood + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/bangladesh.cpp b/generator/regions/specs/bangladesh.cpp index 65ca228727..d0165fc3ef 100644 --- a/generator/regions/specs/bangladesh.cpp +++ b/generator/regions/specs/bangladesh.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel BangladeshSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: return PlaceLevel::Region; // Division + case AdminLevel::Five: return PlaceLevel::Subregion; // District + case AdminLevel::Nine: return PlaceLevel::Locality; // Union + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/barbados.cpp b/generator/regions/specs/barbados.cpp index 5a79c2726c..a77b7b6b64 100644 --- a/generator/regions/specs/barbados.cpp +++ b/generator/regions/specs/barbados.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel BarbadosSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Region; // Parishes of Barbados + case AdminLevel::Nine: return PlaceLevel::Suburb; // Suburbs, Hamlets and Villages + case AdminLevel::Ten: return PlaceLevel::Suburb; // Neighbourhoods, Housing Developments + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/belarus.cpp b/generator/regions/specs/belarus.cpp index ae96345410..e9faae8ca0 100644 --- a/generator/regions/specs/belarus.cpp +++ b/generator/regions/specs/belarus.cpp @@ -8,6 +8,19 @@ namespace specs { PlaceLevel BelarusSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Oblasts (вобласьць / область) + case AdminLevel::Six: return PlaceLevel::Subregion; // Regions (раён / район) + case AdminLevel::Eight: + return PlaceLevel::Locality; // Soviets of settlement (сельсавет / cельсовет) + case AdminLevel::Nine: return PlaceLevel::Sublocality; // Suburbs (раён гораду / район города) + case AdminLevel::Ten: + return PlaceLevel::Locality; // Municipalities (населены пункт / населённый пункт) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/belgium.cpp b/generator/regions/specs/belgium.cpp index af2645589b..e0880937c2 100644 --- a/generator/regions/specs/belgium.cpp +++ b/generator/regions/specs/belgium.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BelgiumSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Communities, regions and language areas of Belgium + case AdminLevel::Six: return PlaceLevel::Subregion; // Provinces + case AdminLevel::Nine: return PlaceLevel::Suburb; // Deelgemeenten (sections) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/belize.cpp b/generator/regions/specs/belize.cpp new file mode 100644 index 0000000000..7353220e8f --- /dev/null +++ b/generator/regions/specs/belize.cpp @@ -0,0 +1,23 @@ +#include "generator/regions/specs/belize.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel BelizeSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Département + case AdminLevel::Eight: return PlaceLevel::Subregion; // Commune + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/belize.hpp b/generator/regions/specs/belize.hpp new file mode 100644 index 0000000000..3759e38181 --- /dev/null +++ b/generator/regions/specs/belize.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class BelizeSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/benin.cpp b/generator/regions/specs/benin.cpp index 96eaf2af05..9e087ad21d 100644 --- a/generator/regions/specs/benin.cpp +++ b/generator/regions/specs/benin.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BeninSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Communities, regions and language areas of Belgium + case AdminLevel::Six: return PlaceLevel::Subregion; // Provinces + case AdminLevel::Nine: return PlaceLevel::Suburb; // Deelgemeenten (sections) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/bhutan.cpp b/generator/regions/specs/bhutan.cpp index 4eff0eea6a..d80cdc3218 100644 --- a/generator/regions/specs/bhutan.cpp +++ b/generator/regions/specs/bhutan.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel BhutanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Dzongkhag (the primary subdivisions of Bhutan) + case AdminLevel::Five: + return PlaceLevel::Subregion; // Dungkhag (sub-district of a + // dzongkhag) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/bolivia.cpp b/generator/regions/specs/bolivia.cpp new file mode 100644 index 0000000000..22bc4b3f41 --- /dev/null +++ b/generator/regions/specs/bolivia.cpp @@ -0,0 +1,23 @@ +#include "generator/regions/specs/bolivia.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel BoliviaSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Departamentos + case AdminLevel::Six: return PlaceLevel::Subregion; // Provincias / provinces + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/bolivia.hpp b/generator/regions/specs/bolivia.hpp new file mode 100644 index 0000000000..e14764bd4d --- /dev/null +++ b/generator/regions/specs/bolivia.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class BoliviaSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/bosnia_and_herzegovina.cpp b/generator/regions/specs/bosnia_and_herzegovina.cpp index 0e6c1bc76e..c1bc07b1e0 100644 --- a/generator/regions/specs/bosnia_and_herzegovina.cpp +++ b/generator/regions/specs/bosnia_and_herzegovina.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BosniaAndHerzegovinaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // entitet / eнтитет / entity + case AdminLevel::Five: return PlaceLevel::Subregion; // kanton (FBiH) + case AdminLevel::Six: return PlaceLevel::Locality; // grad / град / city + case AdminLevel::Nine: return PlaceLevel::Locality; // naselje / насеље / localities + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/brazil.cpp b/generator/regions/specs/brazil.cpp index dd02e06067..d597fb991e 100644 --- a/generator/regions/specs/brazil.cpp +++ b/generator/regions/specs/brazil.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BrazilSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Unidades Federativas (Estados e Distrito Federal) + case AdminLevel::Five: return PlaceLevel::Subregion; // Mesorregiões + case AdminLevel::Ten: return PlaceLevel::Suburb; // Bairros e Sub-Distritos + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/brunei.cpp b/generator/regions/specs/brunei.cpp new file mode 100644 index 0000000000..91516e773a --- /dev/null +++ b/generator/regions/specs/brunei.cpp @@ -0,0 +1,26 @@ +#include "generator/regions/specs/brunei.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel BruneiSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Districts + case AdminLevel::Six: return PlaceLevel::Subregion; // Mukims (subdistricts) + case AdminLevel::Eight: + return PlaceLevel::Locality; // Villages (kampung or kampong), as designated by the Survey + // Department + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/brunei.hpp b/generator/regions/specs/brunei.hpp new file mode 100644 index 0000000000..c1118d040f --- /dev/null +++ b/generator/regions/specs/brunei.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class BruneiSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/bulgaria.cpp b/generator/regions/specs/bulgaria.cpp index 19204986eb..1575c5272b 100644 --- a/generator/regions/specs/bulgaria.cpp +++ b/generator/regions/specs/bulgaria.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BulgariaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Райони за планиране + case AdminLevel::Six: return PlaceLevel::Subregion; // Regions (Области) + case AdminLevel::Eight: return PlaceLevel::Locality; // Borders of city, town, village + case AdminLevel::Nine: return PlaceLevel::Suburb; // Districts and suburbs + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/burkina_faso.cpp b/generator/regions/specs/burkina_faso.cpp index 03d97467be..3f7024edeb 100644 --- a/generator/regions/specs/burkina_faso.cpp +++ b/generator/regions/specs/burkina_faso.cpp @@ -8,6 +8,19 @@ namespace specs { PlaceLevel BurkinaFasoSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Régions + case AdminLevel::Five: return PlaceLevel::Subregion; // Provinces + case AdminLevel::Eight: + return PlaceLevel::Locality; // Towns or villages (excluding their surrounding rural areas) + case AdminLevel::Nine: + return PlaceLevel::Sublocality; // Urban sectors (only in cities, and in the capital town of + // other urban municipalities) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/burundi.cpp b/generator/regions/specs/burundi.cpp index fc4fabf22a..cb555062fb 100644 --- a/generator/regions/specs/burundi.cpp +++ b/generator/regions/specs/burundi.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel BurundiSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Provinces + case AdminLevel::Five: return PlaceLevel::Subregion; // Communes + case AdminLevel::Eight: return PlaceLevel::Locality; // Collines + case AdminLevel::Ten: return PlaceLevel::Sublocality; // Sous-Collines + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/cameroon.cpp b/generator/regions/specs/cameroon.cpp index bd04517325..45221ea9b1 100644 --- a/generator/regions/specs/cameroon.cpp +++ b/generator/regions/specs/cameroon.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel CameroonSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Regions, like Extrême-Nord + case AdminLevel::Six: return PlaceLevel::Subregion; // Départements, like Mayo-Danay + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/canada.cpp b/generator/regions/specs/canada.cpp index 25873b046e..f2046c3449 100644 --- a/generator/regions/specs/canada.cpp +++ b/generator/regions/specs/canada.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel CanadaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Provinces & territories + case AdminLevel::Six: + return PlaceLevel::Subregion; // Regional municipalities & single-tier municipalities + case AdminLevel::Ten: return PlaceLevel::Locality; // Neighborhoods + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/chad.cpp b/generator/regions/specs/chad.cpp index d2696d8f93..e50a867b9b 100644 --- a/generator/regions/specs/chad.cpp +++ b/generator/regions/specs/chad.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel ChadSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Régions (23) + case AdminLevel::Six: return PlaceLevel::Subregion; // Départments (61) + case AdminLevel::Nine: return PlaceLevel::Locality; // Villages ou localités + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/chile.cpp b/generator/regions/specs/chile.cpp new file mode 100644 index 0000000000..47bf059efb --- /dev/null +++ b/generator/regions/specs/chile.cpp @@ -0,0 +1,23 @@ +#include "generator/regions/specs/chile.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel ChileSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Regiones + case AdminLevel::Six: return PlaceLevel::Subregion; // Provincias + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/chile.hpp b/generator/regions/specs/chile.hpp new file mode 100644 index 0000000000..ea336e62e7 --- /dev/null +++ b/generator/regions/specs/chile.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class ChileSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/china.cpp b/generator/regions/specs/china.cpp index f5787aa1c8..805ca03968 100644 --- a/generator/regions/specs/china.cpp +++ b/generator/regions/specs/china.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel ChinaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Two: return PlaceLevel::Country; // Hong Kong, Macau + case AdminLevel::Four: return PlaceLevel::Region; // Provinces + case AdminLevel::Six: return PlaceLevel::Subregion; // County + case AdminLevel::Eight: return PlaceLevel::Subregion; // Township / Town / Subdistrict + case AdminLevel::Ten: return PlaceLevel::Locality; // Village + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/colombia.cpp b/generator/regions/specs/colombia.cpp new file mode 100644 index 0000000000..eb5079f9b0 --- /dev/null +++ b/generator/regions/specs/colombia.cpp @@ -0,0 +1,23 @@ +#include "generator/regions/specs/colombia.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel ColombiaSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Departamento + case AdminLevel::Five: return PlaceLevel::Subregion; // Provincia + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/colombia.hpp b/generator/regions/specs/colombia.hpp new file mode 100644 index 0000000000..5ab8782d73 --- /dev/null +++ b/generator/regions/specs/colombia.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class ColombiaSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/costa_rica.cpp b/generator/regions/specs/costa_rica.cpp new file mode 100644 index 0000000000..341aad83f8 --- /dev/null +++ b/generator/regions/specs/costa_rica.cpp @@ -0,0 +1,24 @@ +#include "generator/regions/specs/costa_rica.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel CostaRicaSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Provincia + case AdminLevel::Six: return PlaceLevel::Subregion; // Cantón + case AdminLevel::Ten: return PlaceLevel::Sublocality; // Barrio + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/costa_rica.hpp b/generator/regions/specs/costa_rica.hpp new file mode 100644 index 0000000000..ae1d42c000 --- /dev/null +++ b/generator/regions/specs/costa_rica.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class CostaRicaSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/cote_divoire.cpp b/generator/regions/specs/cote_divoire.cpp index dfe7659a6a..e0a51474c4 100644 --- a/generator/regions/specs/cote_divoire.cpp +++ b/generator/regions/specs/cote_divoire.cpp @@ -8,6 +8,19 @@ namespace specs { PlaceLevel CoteDivoireSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // district (example: Lagunes) où disctrict autonome (example: + // Abidjan) place=state (not place=district) + case AdminLevel::Five: + return PlaceLevel::Subregion; // region (example: Agnéby-Tiassa) place=region + case AdminLevel::Nine: return PlaceLevel::Locality; // village + case AdminLevel::Ten: return PlaceLevel::Sublocality; // quartier + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/croatia.cpp b/generator/regions/specs/croatia.cpp index 0d26801915..eefd746c37 100644 --- a/generator/regions/specs/croatia.cpp +++ b/generator/regions/specs/croatia.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel CroatiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Region; // County (hr: županije) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/cuba.cpp b/generator/regions/specs/cuba.cpp new file mode 100644 index 0000000000..19c78c2cd4 --- /dev/null +++ b/generator/regions/specs/cuba.cpp @@ -0,0 +1,23 @@ +#include "generator/regions/specs/cuba.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel CubaSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Provincia + case AdminLevel::Six: return PlaceLevel::Subregion; // Municipio + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/cuba.hpp b/generator/regions/specs/cuba.hpp new file mode 100644 index 0000000000..35986cbd9b --- /dev/null +++ b/generator/regions/specs/cuba.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class CubaSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/cyprus.cpp b/generator/regions/specs/cyprus.cpp index 756aa5baa8..83ba1f453e 100644 --- a/generator/regions/specs/cyprus.cpp +++ b/generator/regions/specs/cyprus.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel CyprusSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Region; // The 6 districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/czech_republic.cpp b/generator/regions/specs/czech_republic.cpp index bb814e0024..63f45bcddc 100644 --- a/generator/regions/specs/czech_republic.cpp +++ b/generator/regions/specs/czech_republic.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel CzechRepublicSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Region; // Regions + case AdminLevel::Seven: return PlaceLevel::Subregion; // Districts + case AdminLevel::Eight: return PlaceLevel::Locality; // Towns / village + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/democratic_republic_of_the_congo.cpp b/generator/regions/specs/democratic_republic_of_the_congo.cpp deleted file mode 100644 index 1ca82f970b..0000000000 --- a/generator/regions/specs/democratic_republic_of_the_congo.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "generator/regions/specs/democratic_republic_of_the_congo.hpp" - -namespace generator -{ -namespace regions -{ -namespace specs -{ -PlaceLevel DemocraticRepublicOfTheCongoSpecifier::GetSpecificCountryLevel( - Region const & region) const -{ - return PlaceLevel::Unknown; -} -} // namespace specs -} // namespace regions -} // namespace generator diff --git a/generator/regions/specs/denmark.cpp b/generator/regions/specs/denmark.cpp index f46a3e386a..ab8efaf7bd 100644 --- a/generator/regions/specs/denmark.cpp +++ b/generator/regions/specs/denmark.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel DenmarkSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Regioner (regions - administrative unit) + case AdminLevel::Seven: return PlaceLevel::Subregion; // Districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/dominican_republic.cpp b/generator/regions/specs/dominican_republic.cpp index 8b9003d8be..95b9f3b5b3 100644 --- a/generator/regions/specs/dominican_republic.cpp +++ b/generator/regions/specs/dominican_republic.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel DominicanRepublicSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province (Provincia) + case AdminLevel::Six: return PlaceLevel::Subregion; // Municipality (Municipio) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/egypt.cpp b/generator/regions/specs/egypt.cpp index ff42797ce8..b7a4fc8651 100644 --- a/generator/regions/specs/egypt.cpp +++ b/generator/regions/specs/egypt.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel EgyptSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: return PlaceLevel::Region; // Governorate (Mouhafazah محافظة) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/estonia.cpp b/generator/regions/specs/estonia.cpp index 29695eb306..e7f4b46a99 100644 --- a/generator/regions/specs/estonia.cpp +++ b/generator/regions/specs/estonia.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel EstoniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Region; // Countys + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/ethiopia.cpp b/generator/regions/specs/ethiopia.cpp index d9b5432952..b16de925f8 100644 --- a/generator/regions/specs/ethiopia.cpp +++ b/generator/regions/specs/ethiopia.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel EthiopiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Administrative States (9) + case AdminLevel::Six: return PlaceLevel::Subregion; // Woreda + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/finland.cpp b/generator/regions/specs/finland.cpp index f1c708ba78..64e762584a 100644 --- a/generator/regions/specs/finland.cpp +++ b/generator/regions/specs/finland.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel FinlandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Provinces + case AdminLevel::Six: return PlaceLevel::Subregion; // Regions + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/france.cpp b/generator/regions/specs/france.cpp index 69f3bcf1e8..2e13bc10aa 100644 --- a/generator/regions/specs/france.cpp +++ b/generator/regions/specs/france.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel FranceSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Régions + case AdminLevel::Six: return PlaceLevel::Subregion; // Départements + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/french_polynesia.cpp b/generator/regions/specs/french_polynesia.cpp index 17c279f3fd..80938f703c 100644 --- a/generator/regions/specs/french_polynesia.cpp +++ b/generator/regions/specs/french_polynesia.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel FrenchPolynesiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: + return PlaceLevel::Region; // Administratrive divisions (archipelagos or sub-archipelagos) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/gabon.cpp b/generator/regions/specs/gabon.cpp index 4fe6cef403..b8a9c27b42 100644 --- a/generator/regions/specs/gabon.cpp +++ b/generator/regions/specs/gabon.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel GabonSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Provinces + case AdminLevel::Six: return PlaceLevel::Subregion; // Departments + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/gambia.cpp b/generator/regions/specs/gambia.cpp index 3fc78d0284..c0aff13a36 100644 --- a/generator/regions/specs/gambia.cpp +++ b/generator/regions/specs/gambia.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel GambiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Regions (Divisions) + case AdminLevel::Six: return PlaceLevel::Subregion; // Districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/georgia.cpp b/generator/regions/specs/georgia.cpp index 0b4fe2b12c..d282235657 100644 --- a/generator/regions/specs/georgia.cpp +++ b/generator/regions/specs/georgia.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel GeorgiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // regions (მხარე) including the Ajaran Autonomous Republic + case AdminLevel::Six: return PlaceLevel::Subregion; // districts (რაიონი) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/germany.cpp b/generator/regions/specs/germany.cpp index 201487e39d..70808e9120 100644 --- a/generator/regions/specs/germany.cpp +++ b/generator/regions/specs/germany.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel GermanySpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // federal states border + case AdminLevel::Five: return PlaceLevel::Subregion; // state-district border + case AdminLevel::Eight: return PlaceLevel::Sublocality; // Towns, Municipalities / City-districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/ghana.cpp b/generator/regions/specs/ghana.cpp index 7e25171a77..e8f642a164 100644 --- a/generator/regions/specs/ghana.cpp +++ b/generator/regions/specs/ghana.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel GhanaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Region + case AdminLevel::Six: return PlaceLevel::Subregion; // District + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/greece.cpp b/generator/regions/specs/greece.cpp index b339712f18..3af007a102 100644 --- a/generator/regions/specs/greece.cpp +++ b/generator/regions/specs/greece.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel GreeceSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Five: return PlaceLevel::Region; // Όρια Περιφερειών (NUTS 2) + case AdminLevel::Six: return PlaceLevel::Subregion; // Όρια Περιφερειακών ενοτήτων (NUTS 3) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/guinea.cpp b/generator/regions/specs/guinea.cpp index b7a182542a..d323589082 100644 --- a/generator/regions/specs/guinea.cpp +++ b/generator/regions/specs/guinea.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel GuineaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Region + case AdminLevel::Six: return PlaceLevel::Subregion; // Prefectures + case AdminLevel::Nine: return PlaceLevel::Locality; // Villages / Towns + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/haiti.cpp b/generator/regions/specs/haiti.cpp index e1d3ff4efd..66dd1bb82b 100644 --- a/generator/regions/specs/haiti.cpp +++ b/generator/regions/specs/haiti.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel HaitiSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // State border (Départements) (Layer 1) + case AdminLevel::Five: return PlaceLevel::Subregion; // Districts + case AdminLevel::Eight: return PlaceLevel::Locality; // City and town border (communes) (Layer 2) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/hong_kong.cpp b/generator/regions/specs/hong_kong.cpp index a91e47e26a..4c9b8c6564 100644 --- a/generator/regions/specs/hong_kong.cpp +++ b/generator/regions/specs/hong_kong.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel HongKongSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Region; // Districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/hungary.cpp b/generator/regions/specs/hungary.cpp index 74b0d13c56..88796e4471 100644 --- a/generator/regions/specs/hungary.cpp +++ b/generator/regions/specs/hungary.cpp @@ -8,6 +8,18 @@ namespace specs { PlaceLevel HungarySpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Departamentos (State Border) + case AdminLevel::Six: return PlaceLevel::Subregion; // Municipios (Municipal Border) + case AdminLevel::Eight: + return PlaceLevel::Locality; // Aldeas (Admin level border which encompass several towns / + // cities) + case AdminLevel::Nine: return PlaceLevel::Locality; // Ciudades (Cities) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/iceland.cpp b/generator/regions/specs/iceland.cpp index 9a14dcbfaf..5a3702d187 100644 --- a/generator/regions/specs/iceland.cpp +++ b/generator/regions/specs/iceland.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel IcelandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Five: return PlaceLevel::Region; // Departamentos (State Border) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/india.cpp b/generator/regions/specs/india.cpp index cc7397381a..4ec4a8ed86 100644 --- a/generator/regions/specs/india.cpp +++ b/generator/regions/specs/india.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel IndiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // State + case AdminLevel::Five: return PlaceLevel::Subregion; // District + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/indonesia.cpp b/generator/regions/specs/indonesia.cpp index ab46d6fea6..1611f83fe4 100644 --- a/generator/regions/specs/indonesia.cpp +++ b/generator/regions/specs/indonesia.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel IndonesiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/iran.cpp b/generator/regions/specs/iran.cpp index e7be9f2cd4..58820d0c07 100644 --- a/generator/regions/specs/iran.cpp +++ b/generator/regions/specs/iran.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel IranSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province + case AdminLevel::Six: return PlaceLevel::Subregion; // Counties + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/iraq.cpp b/generator/regions/specs/iraq.cpp index 26375babb4..9bb7486827 100644 --- a/generator/regions/specs/iraq.cpp +++ b/generator/regions/specs/iraq.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel IraqSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // governorates + case AdminLevel::Six: return PlaceLevel::Subregion; // districts (qadha) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/ireland.cpp b/generator/regions/specs/ireland.cpp index aee9c58bb9..189522454f 100644 --- a/generator/regions/specs/ireland.cpp +++ b/generator/regions/specs/ireland.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel IrelandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Five: return PlaceLevel::Region; // Province + case AdminLevel::Six: return PlaceLevel::Subregion; // County + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/isle_of_man.cpp b/generator/regions/specs/isle_of_man.cpp index 9b2cf65122..1d768afb1b 100644 --- a/generator/regions/specs/isle_of_man.cpp +++ b/generator/regions/specs/isle_of_man.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel IsleOfManSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: return PlaceLevel::Suburb; // Sheedings + case AdminLevel::Eight: return PlaceLevel::Locality; // Parish / Village / Town + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/israel.cpp b/generator/regions/specs/israel.cpp index 7f11c8bc69..634b4987bd 100644 --- a/generator/regions/specs/israel.cpp +++ b/generator/regions/specs/israel.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel IsraelSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // District + case AdminLevel::Five: return PlaceLevel::Subregion; // Sub-district + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/italy.cpp b/generator/regions/specs/italy.cpp index 1589cba80d..a997f1190b 100644 --- a/generator/regions/specs/italy.cpp +++ b/generator/regions/specs/italy.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel ItalySpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // per i confini regionali (en: boundary of regions) + case AdminLevel::Six: + return PlaceLevel::Subregion; // Sub-per i confini provinciali (en: boundary of provinces) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/japan.cpp b/generator/regions/specs/japan.cpp index 5f414396e0..2cf9cb76a7 100644 --- a/generator/regions/specs/japan.cpp +++ b/generator/regions/specs/japan.cpp @@ -8,6 +8,18 @@ namespace specs { PlaceLevel JapanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Prefecture border + case AdminLevel::Five: + return PlaceLevel::Subregion; // Sub Prefecture border (振興局・支庁 in Hokkaido) + case AdminLevel::Seven: + return PlaceLevel::Locality; // Municipal border (Cities, Towns, Villages, Special wards of + // Tokyo) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/jordan.cpp b/generator/regions/specs/jordan.cpp index bd7a9ddfa6..c3f13bab17 100644 --- a/generator/regions/specs/jordan.cpp +++ b/generator/regions/specs/jordan.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel JordanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // governorate + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/kosovo.cpp b/generator/regions/specs/kosovo.cpp index 0d71126300..20663e527c 100644 --- a/generator/regions/specs/kosovo.cpp +++ b/generator/regions/specs/kosovo.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel KosovoSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Komunat e Kosovës + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/laos.cpp b/generator/regions/specs/laos.cpp index 8aca68e73d..9cb570b62c 100644 --- a/generator/regions/specs/laos.cpp +++ b/generator/regions/specs/laos.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel LaosSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Provinces (Lao: ແຂວງ khoueng) or one prefecture (kampheng + // nakhon) + case AdminLevel::Six: return PlaceLevel::Subregion; // Districts (Lao: ເມືອງ mɯ́ang) + case AdminLevel::Seven: return PlaceLevel::Locality; // Villages + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/latvia.cpp b/generator/regions/specs/latvia.cpp index c62a8b6c72..a21a9de7fc 100644 --- a/generator/regions/specs/latvia.cpp +++ b/generator/regions/specs/latvia.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel LatviaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Six: + return PlaceLevel::Region; // Counties (Novadi), Cities (Republikas nozīmes pilsētas) + case AdminLevel::Seven: return PlaceLevel::Locality; // Towns (Pilsētas) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/lebanon.cpp b/generator/regions/specs/lebanon.cpp index bc0449237b..81332e6eab 100644 --- a/generator/regions/specs/lebanon.cpp +++ b/generator/regions/specs/lebanon.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel LebanonSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: return PlaceLevel::Region; // Governorate (Mouhafazah محافظة) + case AdminLevel::Four: return PlaceLevel::Subregion; // Qadaa (also known as Caza قضاء ج. أقضية) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/lesotho.cpp b/generator/regions/specs/lesotho.cpp index e3fb82a539..e34ddabcd9 100644 --- a/generator/regions/specs/lesotho.cpp +++ b/generator/regions/specs/lesotho.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel LesothoSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Districts + case AdminLevel::Six: return PlaceLevel::Subregion; // Constitutencies + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/liberia.cpp b/generator/regions/specs/liberia.cpp index 590767637b..6bb2afda69 100644 --- a/generator/regions/specs/liberia.cpp +++ b/generator/regions/specs/liberia.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel LiberiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Counties (15) + case AdminLevel::Six: return PlaceLevel::Subregion; // Districts (90) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/libya.cpp b/generator/regions/specs/libya.cpp index e9307e4455..7cf6b10e13 100644 --- a/generator/regions/specs/libya.cpp +++ b/generator/regions/specs/libya.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel LibyaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // district (Shabiya) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/lithuania.cpp b/generator/regions/specs/lithuania.cpp index fb961de9b8..3eba8b7913 100644 --- a/generator/regions/specs/lithuania.cpp +++ b/generator/regions/specs/lithuania.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel LithuaniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Counties (Apskritys) + case AdminLevel::Five: return PlaceLevel::Subregion; // Municipalities (Savivaldybės / Rajonai) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/luxembourg.cpp b/generator/regions/specs/luxembourg.cpp index 86e5a3dbce..d9c4636890 100644 --- a/generator/regions/specs/luxembourg.cpp +++ b/generator/regions/specs/luxembourg.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel LuxembourgSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Districts (state) + case AdminLevel::Five: return PlaceLevel::Subregion; // Cantons (region) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/macedonia.cpp b/generator/regions/specs/macedonia.cpp index d935b03758..48d708bd0c 100644 --- a/generator/regions/specs/macedonia.cpp +++ b/generator/regions/specs/macedonia.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel MacedoniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Статистички Региони (Statistical regions) + case AdminLevel::Six: return PlaceLevel::Locality; // Град Скопје (City of Skopje) + case AdminLevel::Eight: return PlaceLevel::Locality; // Град/Село (city / town / village) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/madagascar.cpp b/generator/regions/specs/madagascar.cpp index 26b932db03..ebf86852fc 100644 --- a/generator/regions/specs/madagascar.cpp +++ b/generator/regions/specs/madagascar.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel MadagascarSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: return PlaceLevel::Region; // Faritany mizakatena (provinces) + case AdminLevel::Four: return PlaceLevel::Subregion; // Faritra (regions) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/malawi.cpp b/generator/regions/specs/malawi.cpp index 80bbb6ad94..ff30371383 100644 --- a/generator/regions/specs/malawi.cpp +++ b/generator/regions/specs/malawi.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel MalawiSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: return PlaceLevel::Region; // Regions + case AdminLevel::Four: return PlaceLevel::Subregion; // Districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/malaysia.cpp b/generator/regions/specs/malaysia.cpp index 693391d679..8da574e82e 100644 --- a/generator/regions/specs/malaysia.cpp +++ b/generator/regions/specs/malaysia.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel MalaysiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // negeri (states) + case AdminLevel::Six: return PlaceLevel::Subregion; // daerah (districts) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/mali.cpp b/generator/regions/specs/mali.cpp index c762c51dd2..c7f85f6069 100644 --- a/generator/regions/specs/mali.cpp +++ b/generator/regions/specs/mali.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel MaliSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Régions + case AdminLevel::Six: return PlaceLevel::Subregion; // Cercles + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/mauritania.cpp b/generator/regions/specs/mauritania.cpp index 18bf3afccf..944a271673 100644 --- a/generator/regions/specs/mauritania.cpp +++ b/generator/regions/specs/mauritania.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel MauritaniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Régions (Wilayas) + case AdminLevel::Six: return PlaceLevel::Subregion; // Départements (Moughataa) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/moldova.cpp b/generator/regions/specs/moldova.cpp index 39bc512241..bb8e77dad1 100644 --- a/generator/regions/specs/moldova.cpp +++ b/generator/regions/specs/moldova.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel MoldovaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Autonomous regions, Districts + case AdminLevel::Eight: + return PlaceLevel::Locality; // Towns, Villages that do not form a commune + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/morocco.cpp b/generator/regions/specs/morocco.cpp index 264a8356ab..104d3a6ab4 100644 --- a/generator/regions/specs/morocco.cpp +++ b/generator/regions/specs/morocco.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel MoroccoSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Regions (Wilaya) + case AdminLevel::Five: return PlaceLevel::Subregion; // Provinces, + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/mozambique.cpp b/generator/regions/specs/mozambique.cpp index 7023684459..6038116f46 100644 --- a/generator/regions/specs/mozambique.cpp +++ b/generator/regions/specs/mozambique.cpp @@ -8,6 +8,13 @@ namespace specs { PlaceLevel MozambiqueSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // States (Províncias) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/myanmar.cpp b/generator/regions/specs/myanmar.cpp index 07f6962941..196ec856c6 100644 --- a/generator/regions/specs/myanmar.cpp +++ b/generator/regions/specs/myanmar.cpp @@ -8,6 +8,18 @@ namespace specs { PlaceLevel MyanmarSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // states, regions, union territory, self-administered zones and + // divisions + case AdminLevel::Six: + return PlaceLevel::Locality; // cities (as the only city in Myanmar, Yangon encompasses several + // districts) , + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/nepal.cpp b/generator/regions/specs/nepal.cpp index dde1ab1bce..2ce567f0bb 100644 --- a/generator/regions/specs/nepal.cpp +++ b/generator/regions/specs/nepal.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel NepalSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: return PlaceLevel::Region; // Province + case AdminLevel::Six: return PlaceLevel::Subregion; // Districts + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/netherlands.cpp b/generator/regions/specs/netherlands.cpp index 30c79cd8db..7cd4f223a8 100644 --- a/generator/regions/specs/netherlands.cpp +++ b/generator/regions/specs/netherlands.cpp @@ -8,6 +8,18 @@ namespace specs { PlaceLevel NetherlandsSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: + return PlaceLevel::Region; // border around The Netherlands, and border around other + // constituent states in the Kingdom of the Netherlands (Aruba, + // Curaçao & Sint Maarten) + case AdminLevel::Four: + return PlaceLevel::Subregion; // Provinces like Zeeland, Noord-Holland etc. (provincie) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/new_zealand.cpp b/generator/regions/specs/new_zealand.cpp index 7e812f91a8..515c27c795 100644 --- a/generator/regions/specs/new_zealand.cpp +++ b/generator/regions/specs/new_zealand.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel NewZealandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Regions (Canterbury, Bay of Plenty, Auckland, Gisborne etc.) + // governed by a regional council or unitary authority, and the + // Chatham Islands Territory. + case AdminLevel::Six: return PlaceLevel::Subregion; // Districts and Cities + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/niger.cpp b/generator/regions/specs/niger.cpp index f2e9e4dd36..330235b8b1 100644 --- a/generator/regions/specs/niger.cpp +++ b/generator/regions/specs/niger.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel NigerSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Régions + case AdminLevel::Six: return PlaceLevel::Subregion; // Départements + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/nigeria.cpp b/generator/regions/specs/nigeria.cpp index a7680a22b7..443da0f4ca 100644 --- a/generator/regions/specs/nigeria.cpp +++ b/generator/regions/specs/nigeria.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel NigeriaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // States (36) + the federal capital territory + case AdminLevel::Six: return PlaceLevel::Subregion; // Local Government Areas (774) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/north_korea.cpp b/generator/regions/specs/north_korea.cpp index dde92fb151..82a5d5335a 100644 --- a/generator/regions/specs/north_korea.cpp +++ b/generator/regions/specs/north_korea.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel NorthKoreaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province + case AdminLevel::Six: return PlaceLevel::Subregion; // County + case AdminLevel::Eight: + return PlaceLevel::Locality; // Town (읍), Village (리), Neighbourhood (동), Workers' district + // (로동자구) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/norway.cpp b/generator/regions/specs/norway.cpp index 9a36142abe..b267abb5a1 100644 --- a/generator/regions/specs/norway.cpp +++ b/generator/regions/specs/norway.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel NorwaySpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // County + case AdminLevel::Seven: return PlaceLevel::Subregion; // Muncipiality + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/philippines.cpp b/generator/regions/specs/philippines.cpp index c017f587ed..e6d59faa3d 100644 --- a/generator/regions/specs/philippines.cpp +++ b/generator/regions/specs/philippines.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel PhilippinesSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: return PlaceLevel::Region; // Regions (Rehiyon) + case AdminLevel::Four: return PlaceLevel::Subregion; // Provinces (Lalawigan) + case AdminLevel::Six: return PlaceLevel::Locality; // Cities/municipalities (Lungsod/bayan) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/poland.cpp b/generator/regions/specs/poland.cpp index 7a255ed680..cdfa0982eb 100644 --- a/generator/regions/specs/poland.cpp +++ b/generator/regions/specs/poland.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel PolandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // województwa (voivodships, provinces, regions). Details in Polish + case AdminLevel::Six: return PlaceLevel::Subregion; // powiaty (counties) + case AdminLevel::Eight: return PlaceLevel::Locality; // cities, towns and villages. + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/portugal.cpp b/generator/regions/specs/portugal.cpp index b57d1c249a..920d1947b3 100644 --- a/generator/regions/specs/portugal.cpp +++ b/generator/regions/specs/portugal.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel PortugalSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Region + case AdminLevel::Five: return PlaceLevel::Subregion; // Island / Subregion + case AdminLevel::Nine: return PlaceLevel::Locality; // Locality + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/romania.cpp b/generator/regions/specs/romania.cpp index caef737020..5ee8602bc3 100644 --- a/generator/regions/specs/romania.cpp +++ b/generator/regions/specs/romania.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel RomaniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: + return PlaceLevel::Region; // Historical provinces (Transylvania, Moldavia ...) + case AdminLevel::Four: + return PlaceLevel::Subregion; // Counties (Judeţe) and the Municipality of Bucharest + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/senegal.cpp b/generator/regions/specs/senegal.cpp index 45ab47f4fa..fef535aba4 100644 --- a/generator/regions/specs/senegal.cpp +++ b/generator/regions/specs/senegal.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel SenegalSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: + return PlaceLevel::Region; // boundary of the "Regions" like Saint-Louis, Matam... + case AdminLevel::Six: + return PlaceLevel::Subregion; // boundaries of the "Départements" see a list + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/serbia.cpp b/generator/regions/specs/serbia.cpp index 3d2b9486ce..c077cf3c2a 100644 --- a/generator/regions/specs/serbia.cpp +++ b/generator/regions/specs/serbia.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel SerbiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // autonomous provinces аутономне покрајине + case AdminLevel::Six: return PlaceLevel::Subregion; // окрузи + case AdminLevel::Seven: return PlaceLevel::Locality; // cities градови + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/sierra_leone.cpp b/generator/regions/specs/sierra_leone.cpp index 21f9db0089..a54c793424 100644 --- a/generator/regions/specs/sierra_leone.cpp +++ b/generator/regions/specs/sierra_leone.cpp @@ -8,6 +8,18 @@ namespace specs { PlaceLevel SierraLeoneSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Five: + return PlaceLevel::Region; // borders of 12 administrative districts, 6 municipalities + // (including Freetown), and Western Area Rural + case AdminLevel::Six: + return PlaceLevel::Subregion; // borders of Paramount Chiefdoms, 8 Wards in Freetown, and 4 + // Districts in Western Area + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/slovakia.cpp b/generator/regions/specs/slovakia.cpp index 44680dc5f7..04ba2ebaab 100644 --- a/generator/regions/specs/slovakia.cpp +++ b/generator/regions/specs/slovakia.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel SlovakiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // region borders + case AdminLevel::Nine: + return PlaceLevel::Locality; // (Town/Village), autonomous towns in Bratislava and Košice + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/slovenia.cpp b/generator/regions/specs/slovenia.cpp index 322c2f0bb5..a28f3b5eb2 100644 --- a/generator/regions/specs/slovenia.cpp +++ b/generator/regions/specs/slovenia.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel SloveniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // reserved for regional borders - if they are ever finalized (SL: + // pokrajine) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/south_africa.cpp b/generator/regions/specs/south_africa.cpp index 77de92eda5..d7e8f657ab 100644 --- a/generator/regions/specs/south_africa.cpp +++ b/generator/regions/specs/south_africa.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel SouthAfricaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // provincial borders + case AdminLevel::Six: return PlaceLevel::Subregion; // district borders + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/south_korea.cpp b/generator/regions/specs/south_korea.cpp index 447d45cbaa..927c52037c 100644 --- a/generator/regions/specs/south_korea.cpp +++ b/generator/regions/specs/south_korea.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel SouthKoreaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Regional(State) + case AdminLevel::Seven: return PlaceLevel::Locality; // City; + case AdminLevel::Eight: return PlaceLevel::Locality; // Town; + case AdminLevel::Ten: return PlaceLevel::Locality; // Village + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/south_sudan.cpp b/generator/regions/specs/south_sudan.cpp index e4e945eda6..fa2564c708 100644 --- a/generator/regions/specs/south_sudan.cpp +++ b/generator/regions/specs/south_sudan.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel SouthSudanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // State (28) + case AdminLevel::Six: return PlaceLevel::Subregion; // County (86) + case AdminLevel::Nine: return PlaceLevel::Locality; // Village + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/suriname.cpp b/generator/regions/specs/suriname.cpp new file mode 100644 index 0000000000..367027135b --- /dev/null +++ b/generator/regions/specs/suriname.cpp @@ -0,0 +1,25 @@ +#include "generator/regions/specs/suriname.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +PlaceLevel SurinameSpecifier::GetSpecificCountryLevel(Region const & region) const +{ + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Districten (districts equivalent to counties or provinces) + case AdminLevel::Eight: + return PlaceLevel::Suburb; // Ressorten (resorts approximately equivalent to municipalities) + default: break; + } + + return PlaceLevel::Unknown; +} +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/suriname.hpp b/generator/regions/specs/suriname.hpp new file mode 100644 index 0000000000..a4693a5426 --- /dev/null +++ b/generator/regions/specs/suriname.hpp @@ -0,0 +1,20 @@ +#include "generator/place_node.hpp" +#include "generator/regions/collector_region_info.hpp" +#include "generator/regions/country_specifier.hpp" +#include "generator/regions/region.hpp" + +namespace generator +{ +namespace regions +{ +namespace specs +{ +class SurinameSpecifier final : public CountrySpecifier +{ +private: + // CountrySpecifier overrides: + PlaceLevel GetSpecificCountryLevel(Region const & region) const override; +}; +} // namespace specs +} // namespace regions +} // namespace generator diff --git a/generator/regions/specs/swaziland.cpp b/generator/regions/specs/swaziland.cpp index 053f4cf0ea..e47ff86d61 100644 --- a/generator/regions/specs/swaziland.cpp +++ b/generator/regions/specs/swaziland.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel SwazilandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Tifundza (regions) + case AdminLevel::Six: return PlaceLevel::Subregion; // Tinkhundla (constituencies) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/sweden.cpp b/generator/regions/specs/sweden.cpp index ae7af11dd1..4b8cd0f382 100644 --- a/generator/regions/specs/sweden.cpp +++ b/generator/regions/specs/sweden.cpp @@ -8,6 +8,19 @@ namespace specs { PlaceLevel SwedenSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: + return PlaceLevel::Region; // Landsdel (Region) Example: Norrland, Svealand och Götaland + case AdminLevel::Four: + return PlaceLevel::Subregion; // Län (County / NUTS3) (21) Example: Västra Götalands län, + // Örebro län etc + case AdminLevel::Nine: + return PlaceLevel::Suburb; // Suburbs (de: Stadtkreise/Stadtteile, fr: secteurs) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/switzerland.cpp b/generator/regions/specs/switzerland.cpp index bcffec915e..dd426a358b 100644 --- a/generator/regions/specs/switzerland.cpp +++ b/generator/regions/specs/switzerland.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel SwitzerlandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Cantons (de: Kantone) Example: Aargau, Vaud + case AdminLevel::Six: + return PlaceLevel::Subregion; // Districts (de: Bezirke/Ämter, fr: districts) + case AdminLevel::Nine: + return PlaceLevel::Suburb; // Suburbs (de: Stadtkreise/Stadtteile, fr: secteurs) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/syria.cpp b/generator/regions/specs/syria.cpp index 91054bf49d..4f19267512 100644 --- a/generator/regions/specs/syria.cpp +++ b/generator/regions/specs/syria.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel SyriaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Governorates + case AdminLevel::Five: return PlaceLevel::Subregion; // Districts + case AdminLevel::Eight: return PlaceLevel::Locality; // Cities, towns and villages of Subdistrict + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/taiwan.cpp b/generator/regions/specs/taiwan.cpp index dde4a8616e..e7f78fdefb 100644 --- a/generator/regions/specs/taiwan.cpp +++ b/generator/regions/specs/taiwan.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel TaiwanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province + case AdminLevel::Seven: return PlaceLevel::Subregion; // District + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/tajikistan.cpp b/generator/regions/specs/tajikistan.cpp index a889d3a5b2..ee544dc3f2 100644 --- a/generator/regions/specs/tajikistan.cpp +++ b/generator/regions/specs/tajikistan.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel TajikistanSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Border of Province (3), Region (1) and Capital city (Sughd + // Province, Region of Republican Subordination, Khatlon Province, + // Gorno-Badakhshan Autonomous Region, Dushanbe) + case AdminLevel::Six: return PlaceLevel::Subregion; // District (e.g. Varzob, Khovaling, Murghob) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/tanzania.cpp b/generator/regions/specs/tanzania.cpp index e7723f0f9e..67c4a0009b 100644 --- a/generator/regions/specs/tanzania.cpp +++ b/generator/regions/specs/tanzania.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel TanzaniaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Region (e.g. Arusha) + case AdminLevel::Five: return PlaceLevel::Subregion; // District (e.g. Arumeru) + case AdminLevel::Eleven: return PlaceLevel::Locality; // Village + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/thailand.cpp b/generator/regions/specs/thailand.cpp index 9b8c5187c2..5048ab4eb3 100644 --- a/generator/regions/specs/thailand.cpp +++ b/generator/regions/specs/thailand.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel ThailandSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province / Bangkok + case AdminLevel::Six: return PlaceLevel::Subregion; // District / Bangkok: Khet + case AdminLevel::Eleven: return PlaceLevel::Locality; // Village + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/the_central_african_republic.cpp b/generator/regions/specs/the_central_african_republic.cpp index 5386c27ed0..59f9757561 100644 --- a/generator/regions/specs/the_central_african_republic.cpp +++ b/generator/regions/specs/the_central_african_republic.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel TheCentralAfricanRepublicSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Préfectures, like Ouham + case AdminLevel::Six: return PlaceLevel::Subregion; // Sous-préfectures, like Bouca + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/togo.cpp b/generator/regions/specs/togo.cpp index 43a2be6fd7..1306432ef4 100644 --- a/generator/regions/specs/togo.cpp +++ b/generator/regions/specs/togo.cpp @@ -8,6 +8,18 @@ namespace specs { PlaceLevel TogoSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // Région / Commune de Lomé (statut particulier) + case AdminLevel::Five: + return PlaceLevel::Subregion; // Préfecture (note : la préfecture du Golfe, dans la région + // Maritime, couvre également Lomé) + case AdminLevel::Eleven: return PlaceLevel::Locality; // Village + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/tunisia.cpp b/generator/regions/specs/tunisia.cpp index 5dc8788a62..230a9f7908 100644 --- a/generator/regions/specs/tunisia.cpp +++ b/generator/regions/specs/tunisia.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel TunisiaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Borders of the 24 Governorates of Tunisia + case AdminLevel::Six: return PlaceLevel::Subregion; // Imadats (Sectors) Borders + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/turkey.cpp b/generator/regions/specs/turkey.cpp index aec3f9d2c7..24a77b8e66 100644 --- a/generator/regions/specs/turkey.cpp +++ b/generator/regions/specs/turkey.cpp @@ -8,6 +8,17 @@ namespace specs { PlaceLevel TurkeySpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Three: + return PlaceLevel::Region; // The Census-defined geographical regions of Turkey (which are used + // for administrative purposes and are well-known in the country) + case AdminLevel::Four: return PlaceLevel::Subregion; // Borders of the 81 provinces of Turkey + case AdminLevel::Eight: return PlaceLevel::Locality; //(inofficially: boundaries of villages) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/uganda.cpp b/generator/regions/specs/uganda.cpp index 37c6795b5b..8733620c8e 100644 --- a/generator/regions/specs/uganda.cpp +++ b/generator/regions/specs/uganda.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel UgandaSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Borders of the 112 districts of Uganda + case AdminLevel::Six: return PlaceLevel::Subregion; // Borders of the 112 districts of Uganda + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/ukraine.cpp b/generator/regions/specs/ukraine.cpp index 0c06758dc1..1cc9e14dd4 100644 --- a/generator/regions/specs/ukraine.cpp +++ b/generator/regions/specs/ukraine.cpp @@ -8,6 +8,15 @@ namespace specs { PlaceLevel UkraineSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Oblasts + case AdminLevel::Six: return PlaceLevel::Subregion; // районы в областях + case AdminLevel::Seven: return PlaceLevel::Sublocality; // Административные районы в городах + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/united_kingdom.cpp b/generator/regions/specs/united_kingdom.cpp index 38e9826d9b..f9236de84a 100644 --- a/generator/regions/specs/united_kingdom.cpp +++ b/generator/regions/specs/united_kingdom.cpp @@ -8,6 +8,14 @@ namespace specs { PlaceLevel UnitedKingdomSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // England, Scotland, Wales and Northern Ireland + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/united_states.cpp b/generator/regions/specs/united_states.cpp index 3d344445e0..32922b5272 100644 --- a/generator/regions/specs/united_states.cpp +++ b/generator/regions/specs/united_states.cpp @@ -8,6 +8,18 @@ namespace specs { PlaceLevel UnitedStatesSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: + return PlaceLevel::Region; // the 50 states, three Territories, two Commonwealths and the + // District of Columbia + case AdminLevel::Six: + return PlaceLevel::Subregion; // state counties and "county equivalents," territorial + // municipalities + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/vanuatu.cpp b/generator/regions/specs/vanuatu.cpp index c0016e1783..cabed60581 100644 --- a/generator/regions/specs/vanuatu.cpp +++ b/generator/regions/specs/vanuatu.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel VanuatuSpecifier::GetSpecificCountryLevel(Region const & region) const { + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // Province + case AdminLevel::Six: + return PlaceLevel::Subregion; // Area (sometimes referred to as Area Council. Municipalities of + // Port Vila and Luganville are their own Areas) + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs diff --git a/generator/regions/specs/vietnam.cpp b/generator/regions/specs/vietnam.cpp index 426278f50d..5f53697312 100644 --- a/generator/regions/specs/vietnam.cpp +++ b/generator/regions/specs/vietnam.cpp @@ -8,6 +8,16 @@ namespace specs { PlaceLevel VietnamSpecifier::GetSpecificCountryLevel(Region const & region) const { + + AdminLevel adminLevel = region.GetAdminLevel(); + switch (adminLevel) + { + case AdminLevel::Four: return PlaceLevel::Region; // province border + case AdminLevel::Six: return PlaceLevel::Subregion; // district / township border + case AdminLevel::Eight: return PlaceLevel::Locality; // commune / town / ward + default: break; + } + return PlaceLevel::Unknown; } } // namespace specs