Kun matkustat tai muutat uudelle alueelle, lähimpien palvelujen etsiminen voi olla hankalaa ja hidasta. Clousby-sovelluksella voit hakea osoitteen perusteella lähimmät palvelut nopeasti ja vaivattomasti.
AINEISTO 1 — OSOITTEET
Sovellukseen luettiin osoitteet hyödyntämällä aineistoa Suomen rakennusten osoitteista, postinumeroista ja WGS84-koordinaateista. Koska aineisto ei sisältänyt tietoa paikkakunnista, paikkakunnat haettiin postinumeron avulla Googlen Geocoding-rajapinnasta. Paikkakuntien osalta kehitystyö on vielä kesken.
AINEISTO 2 — PALVELUT
Sovelluksen palvelut haettiin avoimesta lähteestä osoitteesta http://download.geofabrik.de/europe/finland.html, joka on OpenStreetMap.org-tietokannasta koostettu poiminta Suomen palveluista.
SUODATUS
Molempiin aineistoihin sovellettiin omavalintaista suodatusta. Suodatuksen tavoitteena oli siistiä aineistosta pois tarpeeton data kuten (1) osoitteet, joissa ei ollut katua tai tietä, (2) palveluita, joissa ei ollut nimeä ja (3) palvelut, jotka eivät olleet merkityksellisiä käyttötarkoituksen kannalta.
Aineistoille tehtiin suodatusta kahdessa eri vaiheessa: (1) kun raaka-aineisto tallennettiin tietokantaan ja (2) muokkaamalla tietokantaa. Tämä ratkaisu tuntui luontevalta, koska raaka-aineiston tallentamisessa voitiin hyödyntää ns. "tyhmää" suodatusta, kun taas tietokannan käsittelyssä voitiin hyödyntää tietokannan omia toimintoja.
Alkuperäisessä aineistossa 1 osoitteita oli reilu 3,6 miljoonaa kappaletta, kun Clousby-sovelluksen kannalta hyödyllisiä osoitteita jäi lopulta hieman alle 2 miljoonaa kappaletta. Uniikkeja postinumeroita Clousby-sovelluksesta löytyy 3 147 kappaletta (alkuperäistä määrää ei tarkistettu).
TEKNINEN TOTEUTUS
Jokaiselle osoitteelle luotiin uniikki slug-tietokenttä, johon tallennettiin katu, talonumero ja postinumero (esim. "yliopistonkatu-2-20100"). Slug-tietokenttä mahdollisti jokaiselle osoitteelle oman "etusivun", jonne kerättiin tietoa ko. osoitetta lähinnä olevista palveluista (esim. https://clousby.com/fi/kadut/yliopistonkatu-2-20100)
Palvelut haetaan dynaamisesti osoitteiden ja palvelujen koordinaattien perusteella. Yksinkertaisesti sanottuna tietokannalta kysytään seuraavaa: "Hae osoitteen Yliopistonkatu 1 20100 koordinaateilla palvelut enintään 1 000 metrin etäisyydellä palvelut, ja järjestä ne etäisyyden perusteella alkaen lähimmästä". Tämän jälkeen palvelut ryhmitellään sopiviin kategorioihin ja näytetään osoitteen omalla sivulla.
TYÖKALUT
- Docker 20.10.2
- Docker Compose 1.27.4
- Ruby 2.7.2
- Ruby on Rails 5.2.4.4
- PostgreSQL 11.2
- PostGIS 2.5.2