Kódy zemí, měn, bank, názvy měst a vesnic, poštovní směrovací čísla… Většina aplikací pracuje s nějakými číselníky. Kde ale vzít jejich hodnoty a nekrást? V tomto blogu chci projít a stručně charakterizovat zdroje, které jsem pro potřeby nedávného projektu našel a které se mi osvědčily.

Zkusme napřed pojmenovat možné způsoby, jak získat data pro číselníky na novém projektu.

  • Přebírání číselníků ze staršího projektu, programu, firmy, … – asi nejrozšířenější praktikou je vzít data tam, kde už jsme je jednou připravili. Může to být jiný projekt, naše internetové bankovnictví, nebo třeba náš účetní systém. Je to správné a legální? Dá se takový postup snadno zopakovat? Jak řešit aktualizace dat?
  • Placený zdroj dat – některé číselníky si můžeme koupit. Existují dodavatelé, kteří se na přípravu a aktualizaci číselníkových dat specializují.
  • Volně dostupné zdroje dat na internetu – mnohé číselníky neobsahují data, o kterých by se dalo mluvit jako o cenných. Náročný bývá spíše způsob, jak jejich hodnoty zkompilovat a udržovat. Proto je přirozená myšlenka hledat pro číselníky volně dostupné zdroje dat. Existuje jich mnoho, na některé se zaměřím.

Ve zbytku příspěvku se budu věnovat právě několika dostupným zdrojům dat pro číselníky zemí, bank, měn, měst, ulic, PSČ a adres.

Země

Pro číselník zemí existuje standard ISO 3166. Standard má tři části, číselníku zemí odpovídá ISO 3166-1 (dvouznakové kódy, pro Českou republiku je to ČR). Další dvě části standardu popisují jemnější členění zemí a země vyřazené z číselníku. Na typickém projektu není důvod tento standard nepoužít.

  • ISO – Přímo na stránkách ISO organizace se dají najít číselníky zemí v angličtině a francouzštině. Bohužel jen v upper case.
  • Český statistický úřad – Na stránkách ČSÚ je možné volně stáhnout xls soubor s daty odpovídajícími normě ISO 3166-1. Číselník obsahuje kódy předepsané standardem, plný a zkrácený český název a plný anglický název.

Na posledním projektu jsme použili data z ČSÚ. Xls soubor jsme zkonvertovali do csv a pak už jej jednoduchým skriptem transformovali do formátu, kterým plníme databázi. To je postup, který se dá snadno zopakovat a v případě potřeby i automatizovat. I když to asi v případě číselníku zemí není nutné.

Banky a měny

Dalšími typickými číselníky jsou seznamy bank registrovaných v České republice a seznam měn. Pro měny opět existuje ISO standard – ISO 4217. Definuje tříznakové kódy, kde první dva znaky odpovídají číselníku zemí definovanému standardem ISO 3166-1. Nevidím důvod, proč se i pro číselník měn nepřidržet tohoto standardu (pokud potřebujeme všechny) .

  • Český statistický úřad – ČSÚ je dobrým zdrojem i pro číselník měn. Na uvedeném odkazu se dá specifikace stáhnout jako xls nebo pdf soubor. Xls soubor je snado převoditelný do csv, které už se dá vhodným skriptem rychle zpracovat.
  • Česká národní banka – Obsahově správným zdrojem dat pro číselník bank je určitě ČNB. Ke stáhnutí je zde k dispozici pdf soubor, který se zpracovává hůř, ale možné to je.

Nabízí se i možnost „převzít“ číselník bank z vašeho oblíbeného internetového bankovnictví. Otázkou je, nakolik je to správné a kolik toho vaše svědomí snese.

Města, ulice, PSČ, adresy, …

Poslední skupinou číselníků, které se budu věnovat, jsou města, ulice, PSČ a adresy. Od těchto číselníků si typicky slibujeme provázanost, aktuálnost dat a také možnost aktualizovatelnosti dat. V bankovním prostředí je častý požadavek na ověření existence a správnosti adresy (např. u scoring systémů, kde je zákazník s existující adresou jistě důvěryhodnější).

  • Česká pošta – Česká pošta nabízí placený číselník adres. Zmiňuji ho jako alternativu k UIR-ADR (viz níže), ale protože jsem na stránkách pošty nenašel možnost stažení vzorku dat, jeho hodnocení se vyhnu.
  • Český statistický úřad – Několik číselníků měst a PSČ nabízí i ČSÚ. Vždy ale plní nějaký statistický účel (např. sčítání obyvatelstva) a jako obecné číselníky se mi neosvědčily.
  • UIR-ADR: Územně identifikační registr adres – Překvapivě kvalitní a volně dostupnou databázi adres spravuje česká státní správa, konkrétně Ministerstvo práce a sociálních věcí.
UIR-ADR - datový model

Datový model registru UIR-ADR
(zjednodušený, pouze některé tabulky)

Registr UIR-ADR toho nabízí mnoho:

  • Typy dat – UIR-ADR obsahuje číselníky okresů, obcí, částí obce, ulic, stavebních objektů, adresních míst, adresních pošt, pražských obvodů, městských částí/městských obvodů, oblastí, krajů, správních obvodů a některé další typy dat.
  • Prohlížení registru na webu – jednoduchá webová aplikace pro prohlížení registru.
    Webová služba pro ověřování adres v registru – UIR-ADR poskytuje webovou službu pro ověřování adres. Služba je volně dostupná, ale vyžaduje nejprve registraci.
  • Možnost udržovat si vlastní kopii registru – zdarma si lze objednat CD s instalací UIR-ADR. Instalace znamená vytvoření instance MS SQL s daty a windows prohlížečkou, nebo inicializaci dat v jiné databázi. CD obsahuje data registru v šesti různých databázových formátech (dBase, FoxPro, Oracle, MS SQL Server, SQL_92, CSV).
  • Aktualizace registru zdarma – v případě udržování vlastní kopie jsou volně k dispozici aktualizace registru (údajně připravované 1x týdně, ale to jsem neověřoval).

Na novém projektu bych rozhodně zvolil vlastní kopii UIR-ADR. Vím o několika bankách a dalších firmách, které registr používají. Standardizace dat podle registru UIR-ADR je trend, takže je tu dobrá šance, že v případě integrace a výměny adresních dat budete mít štěstí a adresy půjdou snadno porovnávat. Poslední poznámka se týká ověřování adres – nesmíme zapomenout, že zde neplatí předpoklad uzavřeného světa. Absence adresy v registru ještě nemusí zaručeně znamenat, že adresa skutečně neexistuje.

Shrnutí

Příspěvek si kladl za cíl nabídnou několik osvědčených zdrojů dat pro různé číselníky. Řešili jste někdy na projektu zdroje dat pro číselníky? Jakou cestou jste se vydali? Podělte se o své zkušenosti v diskuzi pod článkem.