Locate

versiunea 18, actualizată de aurelian în 20 Jul, 2009

Privire de ansamblu

/api/locate este un serviciu web accesibil printr-o interfață Pseudo-REST pentru aflarea coordonatelelor geografice ale unui loc în funcție de numele acestuia însa nu este un geocoder adevărat pentru că nu poate converti o adresa completă (stradă/număr/localitate) într-un punct reprezentat prin latitudine/logitudine.

Apel

GET /api/locate

Parametrii:

parametru descriere valore posibilă valoare implicită
name numele căutat string (urlencoded)
api_key cheia de acces string
format formatul răspunsului xml, json sau georss xml
page pagina int 1
version versiunea dorită 0.5 0.5
callback javascript callback numele unei functii javascript ce va fi apelată având ca parametru raspunsul. (functionează doar pentru format=json)

Exemple

http://ondi.ro/api/locate?api_key=[KEY]&name=bucuresti&format=json

http://ondi.ro/api/locate?name=%C8%98tefan+cel+Mare&api_key=[KEY]

Note

  • name trebuie sa fie urlencoded, de exemplu in php: <?= urlencode("Ploiești"); ?> sau in ruby: require 'cgi';puts CGI.encode("Ploiești");
  • detalii specifice pentru georss

Răspuns

Un răspuns valid conține două secțiuni: header și places.

  1. header oferă informații generice despre serviciu, și conține:
    • code, codul de răspuns: 10 OK, 20-29 WARNING, 30-39 ERROR
    • results, numărul de rezultate găsite
    • version, versiunea folosită (0.3)
    • service, numele serviciului solicitat
    • page, pagina curenta
    • per_page, numarul de rezultate pe pagina
    • pages, numarul total de pagini
  2. places este o listă de place, fiecare conținând:
    • name, numele locației (format: tip nume)
    • parent, numele locației părinte
    • county, județul
    • kind, tipul locației
    • updated, data ultimei actualizări
    • latitude
    • longitude

kind: valori posibile:

kind ce înseamnă?
0 Țară, poate fi doar România- do’h.
2 Județ
4 Municipiu reședință de județ
8 Sector
16 Municipiu
32 Oraș
64 Cartier
128 Comună
256 Localitate reședință de comună
512 Localitate

Notă: Pentru kind=0, parent este NULL. Pentru kind<=2, county este NULL.

code: valori posibile:

code semnificație
10 OK
21 Warning: ApiKey-ul folosit nu poate fi validat
31 Error: ApiKey invalid
32 Error: Versiune Invalidă
33 Error: ApiKey dezactivat
37 Error: Limita accesari / zi a fost atinsa
38 Error: Contul necesita revalidare

Gramatica

Parametrul name accepta un format extins pentru a reduce rezultatele cautarii.

Syntaxa completa este:

<keyword> Nume,[<keyword> Nume, [<keyword> Nume]]

unde cuvantul cheie <keyword> este optional, iar virgula (,) se foloseste pe post de separator. Intrand putin in detalii, parserul /api/locate recunoaste un set de cuvinte cheie (o gramatica) definite prin urmatoarele expresii regulate:

  • /^Sat |^Satul /i #=> kind 512
  • /^Localitatea|^Loc |^Loc\./i #=> kind 256
  • /^Comuna |^Com |^Com\./i #=> kind 128
  • /^Cartier|^Cartierul|^Cart |^Cart\./i #=> kind 64
  • /^Oras|^Orasul|^Oraș|^Orașul/i #=> kind 4, 16 sau 32
  • /^Sector |^Sectorul|^Sec |^Sec\./i #=> kind 8
  • /^Municipiu|^Municipiul|^Mun |^Mun\./i #=> kind 4 sau 16
  • /^Judet|^Judetul|^Județ|^Județul|^Jud|^Jud\./i #=> kind 2

Pentru a obtine cele mai bune rezultate, trebuiesc respectate cateva conditii:

  • combinatia <keyword> Nume este definita in continuare ca “segment”. /api/locate permite un parametru name ce contine maxim 3 astfel de segmenti. In momentul in care vom avea suport pentru nume de strazi, atunci, vom permite 4.
  • rangul unui segment dat (kind) nu poate fi mai mic decat rangul segmentului anterior.
  • virgula (,) este folosita pe post de separator.

In plus, se recomanda folosirea grafiei romanesti corecte pentru ȘșȚț (cu virgula) si nu cea cu sedila ŞşŢţ. Vezi lista de expresii regulate de mai sus pentru a intelege de ce.

Exemple ce returneaza 1 rezultat:

  • Sat Groși, Comuna Băbana, Județul Argeș
  • Grosi, Jud. Argeș
  • Crangași, București
  • Județul Sibiu

Exemple ce nu returneaza niciun rezultat:

  • Com. Băbana, Sat Groși
  • Județul Argeș, Băbana
  • București, Sectorul 4