Zjištění obvodu Plzně ze souřadnic

Jednoduchá webová služba na zjištění městského obvodu Plzně ze souřadnic ve formátu WGS84. Služba byla vyvinuta pro potřeby projektu Křížky a vetřelci, který díky ní kategorizuje drobné umění na území Plzně dle městských obvodů a části obce. Zdrojový kód služby je dostupný na GitHubu.

Autorem služby je Pavel Cvrček. Připomínky či nápady pište na e-mail jasnapaka@jasnapaka.com či na GitHub projektu.

Příklad použití

Webová služba běží na následující adrese:

https://tools.jasnapaka.com/mestske-obvody-plzen/service.php

Služba akceptuje parametry souřadnice ve formátu WGS84 (lat, long) a parametr format, který udává formát výstupu. Souřadnice jsou povinné, formát je volitelný. U formátu lze zvolit hodnotu xml či json. Pokud žádný neuvedete, je výchozí xml. Za situace, kdy je vše v pořádku, vrací služba v odpovědi HTTP stavový kód 200 a odpověď ve zvoleném formátu.

Příklad volání:

https://tools.jasnapaka.com/mestske-obvody-plzen/service.php?lat=49.738065&long=13.382195

Odpověď:

<?xml version="1.0" encoding="UTF-8"?>
<area>
    <code>umo3<?/code>
    <umo>Plzeň 3<?/umo>
    <part>Jižní Předměstí<?/part>
</area>

Vysvětlení polí:

Pole Popis
code Udává číslo městského obvodu ve formátu umoX, kde X je číslo obvodu dle přehledu.
umo Název městského obvodu.
part Název části obce.

Pokud nebyl na základě souřadnic nalezen žádný městský obvod či došlo při hledání k chybě, vrací se chybový výstup. Stav, kdy nebylo nic nalezeno, je reprezentován HTTP stavovým kódem 404. Chybu pak značí stavový kód 500. V návratovém výstupu je pak kromě číselného kódu chyby i jeho popis.

<?xml version="1.0" encoding="UTF-8"?>
<error>
    <code>4</code>
    <msg>Nastala interní chyba služby. Databáze není dostupná.</msgv
</error>

Kompletní výčet možných chybových stavů:

Číslo chyby Popis
1 Služba je vypnuta.
2 Vstupní parametry 'lat' a 'long' musí být reálná čísla.
3 Na základě vstupních parametrů 'lat' a 'long' nebyl nalezen žádný městský obvod.
4 Nastala interní chyba služby. Databáze není dostupná.
5 V POST Payload nebyl nalezen validní JSON.

Hromadná žádost

Pokud se potřebujete hromadně dotázat na více bodů, je to možné. Postačí zavolat samotný skript a do POST Payloadu uvést JSON s žádostí. Výstupem bude JSON s hromadnou odpovědí. Příklad žádosti:

[{"lat":49.725,"long":13.37661},{"lat":49.761248}]

Odpověď bude:

{"count" : 2, "items" : [{"status" : 200,"code" : "umo3", "umo" : "Plzeň 3",
            "part" : "Doudlevce"},{"status" : 500, "code" : 2,
            "msg" : "Vstupní parametry 'lat' a 'long' musí být reálná čísla."}]}

Navrácen je počet zpracovaných žádostí a v poli items pak jednotlivé odpovědi. Jejich struktura odpovídá formátu navracených XML při jednotlivých podáních. Navíc je zde atribut status, který značí, jak byl konkrétní požadavek ze seznamu vyřízen. Hodnota odpovídá HTTP statusu 200 (ok) či 500 (chyba).