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.
headeroferă 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
placeseste o listă deplace, 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
- name, numele locației (format:
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> Numeeste definita in continuare ca “segment”. /api/locate permite un parametrunamece 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