Thursday, July 10, 2008

Coordonate geografice pentru zone din Bucuresti folosind Yahoo GeoPlanet

Baietii de la Yahoo! Developer Network au mai facut public un API cool, prin care poti afla coordonatele geografice ale zonelor din Bucuresti (n-am incercat inca pentru celelalte orase mari ca Timisoara sau Cluj). Noul serviciu (ma rog, nu e asa nou, e lansat acum 2 luni, dar vazand ca nu a scris nimeni despre el in .ro am zis sa ies din letargie si sa scriu eu :) ) se cheama Yahoo! GeoPlanet.

Cu copy-paste de pe site-ul lor:

Yahoo! GeoPlanet is a resource for managing all geo-permanent named places on Earth. It provides the geographic developer community with the vocabulary and grammar to describe the world's geography in an unequivocal, permanent, and language-neutral manner

Mai precis, si cu consecinte practice pentru aplicatii bazate in .ro se pare ca noul serviciu "stie" de zonele din Bucuresti.
De exemplu, daca vreau sa aflu coordonatele geografice ale cartierului Titan e de ajuns sa trimit o cerere catre serverul lor de forma:

http://where.yahooapis.com/v1/places.q('bucharest%20titan')?appid=c0Gvbt7V34EXlepMgWHQDyUpely540gTWbrWU4D9acUtlJx0.yBozNUPS07xaUAkfJ0

Rapunsul e de forma asta:

<places yahoo:start="0" yahoo:count="1" yahoo:total="1">

<place yahoo:uri="http://where.yahooapis.com/v1/place/22726129" xml:lang="en-us">
<woeid>22726129</woeid>
<placeTypeName code="22">Suburb</placeTypeName>
<name>Titan</name>
<country type="Country" code="RO">Romania</country>
<admin1 type="State" code="">Bucuresti</admin1>
<admin2/>
<admin3/>
<locality1 type="Town">Bucharest</locality1>
<locality2 type="Suburb">Titan</locality2>
<postal type="Postal Code">0100000</postal>

<centroid>
<latitude>44.41695</latitude>
<longitude>26.168961</longitude>
</centroid>
</place>
</places>

Pare corect, coordonatele 44.41695,26.168961 fiind ale unui punct situat pe undeva pe langa Billa. Interesant ca "stie" ca Titan este cartier/suburb (vezi tagul "placeTypeName").

M-am jucat un pic cu el si am mai incercat si alte zone: Floreasca, Drumul Taberei sau Crangasi, cu care pare ca se descurca binisor. Ca de obicei in cazul API-urilor Yahoo!, exista o limita maxima de 50.000 de cereri pe zi per aplicatie. Ramane acum sa vad cum putem integra cat mai usor serviciul asta cu imoo.ro :)

via Simon Willison, de la care am aflat ca serviciul e folosit si de Flickr pentru a-si geolocaliza pozele in functie de taguri.