torstaina, kesäkuuta 21, 2007

Geokooderi viisastuu

Api v2.82 antoi meille GClientGeocoderiin pari kivaa uutta metodia:

.setBaseCountryCode(countryCode) ;
ja
.setViewport(bounds);

GClientGeocoderhan palauttaa useita geokoodaustuloksia, joista yleensä otetaan näkyville vain ensimmäinen koska skripti on niin yksinkertainen. Kyseiset uudet metodit järjestelevät tulokset pyynnön mukaan maata tai tiettyä suorakaidealuetta suosivaan järjestykseen. Skriptaamalla on ennenkin ollut mahdollista hylätä tulokset, jotka eivät ole halutun suorakaidealueen sisällä tai, joiden palautuva maakoodi ei mätsää.

Kokeilin juttua, toimii mutta pykii vielä hieman. Karttasivun ensimmäinen .setCenter() pitää tehdä ajatuksella ja kirjoittaa seuraavaksi geokooderin määrittelyn jälkeen:
geocoder.setViewport(map.getBounds());

set.Center() määrää myös , mitä nuolinäppäinten keskellä oleva 'return' tekee.

Juttu ei ole vielä valmis. Esimerkiksi .reset() -metodi ei nollaa määrittelyä. Virallisessa blogissa oleva demo on hutiloitu (siitä raportoin, ja Pamela työskentelee).

Geokoodaus vaatii paljon enemmän pesuvoimaa kuin web-haku. Esim. jostain kadusta on Googlella tiedossa vain parin talonumeron koordinaatit. Kun asiakas kysyy jotain muuta numeroa, joutuu geokooderipalvelin hakemaan jostain kadun reittiviivan ja inter-/ekstrapoloimaan sitä pitkin matemaattisen arvion. Yms..

Geokoodaustulosten tallentaminen omalle serverille on monien käsitysten mukaan rikollista toimintaa - täydellinen väärinkäsitys. Vuoden 2006 GeoDay-tapahtumassa pyydettiin ihmisiä sanomaan yhteen ääneen: "I will cache my geocoding results". Kolme kertaa, seisomaan ei tarvinnut nousta. Rikollista on tehdä sivu joka hakee joka latauksella Googlelta koordinaatit.

GClientGeocooderin käyttöön onkin asetettu avainkohtaiset rajat. 50 tuhatta geokoodausta/päivä/avain. Käytännössä tuo 50k on jaettu tasan tämän meidän aikamme kesken, eli nopeus on myös rajoitettu.
if (pyynnöt/osoite ylittävät 50k/vrk) {olet bannattu vuorokauden}.
if (ticks/pyyntö<1750&&pyyntöjä>1000) {olet bannattu vuorokauden}.

Nyt kun geokooderi toimii Härmässäkin.... jotkut ajattelevat rakentavansa sivunsa pelkän reaaliaikaisen geokooderin varaan. Unohda.

Käyhän se, mutta välttyäksesi bannaukselta, tulisi sinun perehtyä geokooderin esilataukseen. Osoitelistan voi kääntää koordinaateiksi esim tällä sivulla.

Maailman hienoin esimerkki geokooderin esilatauksesta on härmäläinen http://www.kumiankka.net/halytysmap.php