This is a read only archive of pad.okfn.org. See the
shutdown announcement
for details.
geocoder
mikaelrekola@gmail.com
jaakko@okf.fi
pekka.sarkola@gispo.fi
tomi@flossmanuals.net
Tuukka.Hastrup@iki.fi
Datademo:
Link to this pad: http://pad.okfn.org/p/geocoder
Shorturl to Github http://okf.fi/geocoder
Code in Github: https://github.com/rekola/okffi-geocoder
Code deployed: http://data.okf.fi/console/
Project description as Trello issue: https://trello.com/c/JqBdRy47/28-avoin-osoitetietopalvelu-jalostusalgoritmit-ja-jalostettu-avoin-data
Bugit, issuet ja product backlog: https://github.com/rekola/okffi-geocoder/issues
Julkaistaan FODE:en https://www.facebook.com/groups/fi.okfn/permalink/10151081405235628/
Kickoff minutes:
- Book to be read front-to-back: http://books.okf.fi/geocoder/_full/
- Minimum intro page README and link to demo: https://github.com/rekola/okffi-geocoder
- Rajapinnan tulee palauttaa hakutuloksen kieli
- Tuetaan myös Googlen kieliparametrin kielinimiä
- Tuetaan samoja kyselyitä kuin Google (paitsi ei ainakaan toistaiseksi XML-kyselyitä) (Itse asiassa tuetaan vain pientä osaa koko Googlen kyselyistä)
- Koodi kaipaisi kommentteja
- Deadline? 10.3. + 3kk = 10.6.
- shp-tiedostojen mysql-latauskoodi puuttuu
- uusi perustuen ogr2ogr-työkaluun?
- automatisoitu testipatteri?
- geocode.json muutetaan (Googlen kanssa samaan) muotoon geocode/json
- tarkkojen numeroiden täydennys, eli autocomplete kertoo mitä vaihtoehtoja on
- OpenStreetMap:
- Osoitenumerot on pisteinä
- Saatavilla myös kadunpätkät, mutta ei niille numerovälejä (jos MML:stä puuttuu jotain tai on virheitä)
- Helsingin kaupungin paikkatietoaineisto:
- Datan automaattinen päivitys
- Datan yksilöinti
- Numeerinen ID vai url?
- Maatunnus / org-tunnus
- API palauttaa OSM:n urlin
- Kerätäänkö tilastotietoja käyttäjien valinnoista?
- laajennuksia
- reaaliaikatiedot
- vähän aikaa olemassa olevat poit tyyliin ravintolapäivä
- aukioloajat
Kickoffissa
SUUNNITELLAAN miten Pääkaupunkiseudun seudullinen osoiteluettelo, OpenStreetMapin osoitetiedot ja Helsingin kaupungin paikkatietoaineisto rikastetaan aineistoon
Pätemisjärjesty päälle kirjoittaen, ensin MML, tarkennetaan seudullisella osoiteluettelolla, rikastetaan palvelukartan POI pisteillä ja sen jälkeen tarkennetaan OSM rapun kirjaimilla ja katuvektoreilla.
SUUNNITELLAAN sovelluskomponenttien päivitystapa Githubiin päivitetään muutokset molempiin suuntiin komentoriville.
SUUNNITELLAAN datan kuukausittainen päivitys avohoito.okf.fi:lle
MML vuosittain - manuaalisesti
HEL seudulliset osotteistot parhaimmillaankin vuosittain -manuaalisesti
HPK Palvelukartta reaaliaikainen - Kuitenkin pitää päättää, että miten usein siitä reaaliaikaisesta datalähteestä tehdään importti
OSM dumpit päivittäin - Ei välttämättä päivittäin kannata
lähde mainitaan kolmella merkillä tai urlilla Lähde itse asiassa mainitaan hyvinkin laajasti API:n antamassa vastauksessa. Siellä on aineiston ja toimittajan nimeä ja linkkiä käyttöehtoihin
JAETAAN projektin tehtävät ja lukitaan mitä scopeen kuuluu ja ei kuulu
SOVITAAN valmistumispäivä ja varataan julkaisutilaisuus kalenterista
PÄÄTETÄÄN tuotteen ja palvelun nimi. Varataanko dns? api.okf.fi, julkaistaan demo githubissa ja tässä urlissa
PÄÄTETÄÄN projektin kieli: koodi ja sisältö englanniksi, projektidokumentaatio ja ohjeet suomeksi?
Draft documentation
The geocoder API schema is based on The Google Geocoding API: https://developers.google.com/maps/documentation/geocoding/ and Google Places API https://developers.google.com/places/
Only JSON version of the API is supported. XML is not.
Geocoding API endpoint is used for geocoding and reverse-geocoding, and the Places API is mainly used for autocomplete.
Supported API endpoints:
- Geocoding API
- Place autocomplete
- Place details
Supported parameters for Geocoding request:
- Geocoding
- address
- language (We use 3-letter ISO language codes [e.g. fin, swe], Google uses language names [e.g. FINNISH, SWEDISH])
- Reverse geocoding
- latlng (or lat and lng seperately)
- language
Unsupported parameters for Geocoding request:
- Geocoding
- Reverse geocoding
Supported parameters for Places autocomplete request:
Supported parameters for Places details request:
Unnecessary parameters:
- key (the API key)
- Client ID and signature
- sensor
Status codes:
- OK
- ZERO_RESULTS
- OVER_QUERY_LIMIT (not implemented)
- REQUEST_DENIED (not implemented)
- INVALID_REQUEST (not implemented)
- UNKNOWN_ERROR (not implemented)
Tasks:
- Importing OSM data
- Importing Helsingin kaupungin paikkatietoaineisto
- Importing Pääkaupunkiseudun seudullinen osoiteluettelo (what's the difference between Helsingin kaupungin paikkatietoaineisto and Pääkaupunkiseudun seudullinen osoiteluettelo?)
- Porting the API to Python
- Command line tool
- Implementing support for point based data
- Spatialite support (useful for command line version, so that user doesn't have to install and configure a database)
- PostgreSQL / PostGIS support (not really relevant)
- Documentation
- Extending the SQL schema
- Need to support point based addresses (Helsigin kaupungin paikkatietoaineisto)
- Need to support foreign address formats (convert kunta and kunta_nro to something generic)
- The schema structure could be modeled after the one in TomTom Multinet
- Convert the feature types from maastotietokanta to something generic
- Remove all the useless columns from maastotietokanta
- Extra features:
- Road name canonization:
- Aleksis Kivenkatu == Aleksis Kiven katu (both cases can be found in maastotietokanta)
- Kehä III (names sometimes have two spaces before the number)
- Abbreviations
- Suggestions API
- Fuzzy search
- Javascript library
SQL schema:
- In the geocoding table, each road segment is stored once for each language, and each such instance has the same ID and geometry.
- This way, the road name is always stored in the same column, regardless of the language.
- For performance reasons, the table is not normalized, and the road attributes are all stored in the same table
- If the system were to implement routing, there would be a another table called network, which would only have unique geometries.
- Geometry is stored in Mercator projection
CREATE TABLE `geocoding` (
`id` int(11) NOT NULL,
`kunta_nro` bigint(20) DEFAULT NULL,
`postcode_left` varchar(5) DEFAULT NULL,
`postcode_right` varchar(5) DEFAULT NULL,
`lang` varchar(3) DEFAULT NULL,
`name` varchar(80) DEFAULT NULL,
`kunta` varchar(80) DEFAULT NULL,
`postname_left` varchar(255) DEFAULT NULL,
`postname_right` varchar(255) DEFAULT NULL,
`luokka` bigint(20) DEFAULT NULL,
`fromleft` bigint(20) DEFAULT NULL,
`toleft` bigint(20) DEFAULT NULL,
`fromright` bigint(20) DEFAULT NULL,
`toright` bigint(20) DEFAULT NULL,
`tienum` bigint(20) DEFAULT NULL,
`osanum` bigint(20) DEFAULT NULL,
`tieosa` bigint(20) DEFAULT NULL,
`paally` bigint(20) DEFAULT NULL,
`ykssuu` bigint(20) DEFAULT NULL,
`vapkor` bigint(20) DEFAULT NULL,
`tastar` bigint(20) DEFAULT NULL,
`kulkutapa` bigint(20) DEFAULT NULL,
`versuh` bigint(20) DEFAULT NULL,
`valmas` bigint(20) DEFAULT NULL,
`suunta` bigint(20) DEFAULT NULL,
`pituus` bigint(20) DEFAULT NULL,
`syntyhetki` varchar(8) DEFAULT NULL,
`kuolhetki` varchar(8) DEFAULT NULL,
`g` geometry NOT NULL,
SPATIAL KEY `g` (`g`),
KEY `name` (`name`)
)
Projektin scopeen hyväksytyt tehtävät
Riskien taklailua ennen varsinaista aloittamista, 25.3.2014 mennessä
TESTAA QGIS API http://plugins.qgis.org/plugins/GeoCoding/, Pekka
- Tämä vaatisi tuon QGIS:n plugin puukottamista, katsotaan ehdinkö sitä tekemään
KIRJOITA books.okf.fi manuaalin versio http://books.okf.fi/geocoder/ , jossa http://pad.okfn.org/p/geocoder tiedot. KOMMENTOI puutteet. Tomi
SELVITÄ lisenssimerkinnät, Jaakko
AVAA api.okf.fi Apacheen, Mikael
DOKUMENTOI SQL schema, Mikael
OK VARAA kickoff, Jaakko http://doodle.com/wax5ku7c5p8mc3z9
OK SELVITÄ seuraavan datademon alkamispäivä Seuraava Datademo-kierros ajoittuu tämänhetkisen suunnitelman mukaisesti kevätkesän vaihteeseen ja kolmas kierros syksylle.
Esivalmistelu VALMISTELE 10min omien materiaalien esittely, kickoffiin mennessä
OK MATERIAALIT serverille tai muuten jakoon, Mikael
MATERIAALIT serverille tai muuten jakoon, Pekka
- Miten julkaistaan visualisointi?
- Miten julkaistaan kuukausittain ajettava koodi?
MATERIAALIT serverille tai muuten jakoon, Tuukka
- OK Mistä urleista löytyy
- Miten julkaistaan hakutoiminnon demokoodi? Oliko nyt täydennys, muuta?
MATERIAALIT books.okf.fi:hin, books-käyttöopastusdemo, Tomi
VARAA julkaisutilaisuus, Jaakko
Toteutus, KIRJOITA alle työkysymyksiä!
KÄÄNNÄ API Pythonille
- Saadaanko vielä kirjattua ylös, miksi siirrytään Pythoniin?
- Kukaan muu kuin minä ei tykkää Perlistä :(
TOTEUTA komentorivityökalu
- Tarvitaanko komentoriville helppitekstit eri työnä?
- Jätetään komentorivityökalu sittenkin pois datademosta, kun sitä ei ole luvattu. Tietysti sen teen, mutta ei käytetä aikaa sen dokumentoimiseen.
TOTEUTA API
- Onko Mikael tästä jo kysymyksiä?
PÄIVITÄ tietokantaschema
- Miten yhdistetään eri kantojen schemat?
- On vain yksi tietokanta, jossa on kaikki data yhdenmukaisessa muodossa
- Mikä on datojen pätemisjärjestys? Kuinka usein ja millä keinoin datoja ladataan uudestaan?
PÄIVITÄ koodiin lisenssimerkintä EUPL "jaakkoselvittäämitälaitetaan?", Mikael
- Miksi EUPL? Miksi ei EUPL? En tiennyt, että sellainen on edes olemassa. Miksi pitää olla edes EU:lle oma lisenssi? Eikö Open Source ole maailmanlaajuista? Tuntuu, että tuollainen rajoittaa osanottajamäärää.
PÄIVITÄ aineistoon lisenssimerkintä CC4 "jaakkoselvittäämitälaitetaan?", Mikael
- Ei ole ollenkaan selvää, että paikkatietodataa voi uudelleenlisenssoida CC4:ksi. Dokumentaatio voi olla CC4 tietysti. Joo periytyvien osaltahan lisenssi on jo merkitty, eikö? Jep.
KOMMENTOI issueita https://github.com/rekola/geocoder/issues
- Löytyykö vapaaehtoinen siirtämään kehitysroadmap-kandidaatit githubiin?
LUONNOSTELE tiedote, Jaakko
- Halutaanko joku palvelun wordpress- tms sivu?
DOKUMENTOI
Jakaisin dokumentaatiota useampaan osaan:
1) Yleinen johdanto (mikä Geocoder yleensä on, tärkeimpiä terminologisia selityksiä)
2) Ei-teknisen käyttäjän ohjeet (miten epätekninen käyttäjä voi käyttää Geocoderia, onko se QGIS?)
3) API:n kuvaus koodaajille (mahdollisesti esimerkkinä vaikka WordPress Plugin PHP:llä)
4) Asennusohjeet ylläpitäjille
TÄYDENNÄ books.okf.fi manuaalia kommenttien perusteella. Mikael, Tuukka, Pekka
- Mikä on Tomi paras kommentointitapa?
DEADLINE 10.6.
Seuraava Datademo-kierros ajoittuu tämänhetkisen suunnitelman mukaisesti kevätkesän vaihteeseen ja kolmas kierros syksylle.
Toteutuksen jälkeen
KIRJOITA books.okf.fi manuaali puhtaaksi, Tomi
Laitoin tuonne: http://books.okf.fi/geocoder/
Julkaisutilaisuudessa ennen seuraavan datademon alkamista
- Kuukausittaisen ajon demo
- Geocoderin haun demo
- Käyttöohjeen demo
- Keskustelutilaisuus ideoista jatkokehitykselle
- Lähetetään tiedote, vaikka fi.okfn.org tiedotteiden kautta
Projektin scopen ulkopuolelle jää
Kehitysroadmapille kandidaatteja
HÄKÄTÄÄN kimpassa Python-APIn ympäristö
Postgre tarve irrallinen moduuli
- Google places API vastaavuus. Mikael mitä tässä tulee lisäksi? Selvitetään
- Suggestions API (jätetään pois) Oliko HSL navigaattorissa JS suggestions? Niillä on oma JS kirjasto, joka käyttää Places API:a, eli riittää, että toteutetaan Places Tuukka testaatko palikan toimivuuden, onko jaettu jostain erikseen uudelleenkäytettävänä?
- Point Of Intrest suggestions Tulee mukana Places API:ssa Saadaanko joku POI database?
- Javascript library (jätetään pois) Oliko HSL navigaattorissa JS lib? Niillä on joku oma ratkaisu, ei tarvi JS kirjastoa.
- QGIS export
- Onko visualisointi- tms. työkaluja jolla datasta pääsee etsimään virheitä ja epäharmonisuuksia, miten niitä korjataan käsin jos master datasta ajetaan päivitys kuukausittain?
- Tehdään datasta export shapefileksi, niin sitä voi kattoa QGIS:llä. Ideaalista olisi, jos postinumeroalueet voisi tehdä geokoodajan datasta
- JS komponentti, Places-yhteensopivia JS-komponentteja löytynee
- Wordpress-plugin. Webbisivujen kehittäjänä, tarvitsen valmiiksi paketoidun tavan lisätä omalle sivulleni geolokaation selvitystä osoitteen avulla tai osoitteen selvitystä geolokaation avulla.
- Oma taustakartta. Datan hyödyntäjänä, otan mielelläni käyttöön useamman datasetin esitestatusta paketista. (vaikka ei olisi samassa kapasiteetissa)
- Kuntarajat visualisoituna. Datan visualisoijana, haluan että visualisointini voi vaihtaa helposti postinumeroalueista kuntarajoihin.
- Kaupunginaluerajat. Kaupunkikohtaisen datan visualisoijana, haluan että visualisointini voi vaihtaa helposti postinumeroalueista kaupunginosarajoihin.
- Vaalialuerajat visualisoituna. Vaalidatan visualisoijana, haluan että visualisointini voi vaihtaa helposti postinumeroalueista vaalialuerajoihin.
- Muiden kaupunkien osoitedatan liittäminen. Muun kaupungin kun helsingin datojen käsittelijänä, on kiva että minun itse omassa kaupungissa keräämät datat voi liittää palveluun.
- VRK osoitedatan liittäminen. Palvelun datan laatuun liittyvien kysymysten vastaajana, minusta on huojentavaa jos päästään päivittämään osoitedatan laatua dramaattisesti.
- Palvelun nopeuden optimointi. Palvelun sysadminina, minusta on siistiä jos palvelu on nopeampi kun kaverilla.
- Fuzzy search
Tuotteen kuvaus
Geokoodaaja tarjoaa osoitteen geokoodauksen geolokaatioksi, ja geolokaation koodauksen osoiteeksi.
Postinumeroaluevisualisointi käyttää geokooderia postinumeroalueiden projisoimiseen kartalle. Ei käytä!
Koodit on julkaistu avoimesti Githubissa EUPL-lisensoituna.
Palvelun kuvaus
Palvelu tarjoaa osoitteet koordinaatteina, ja koordinaatit osoitteina, sekä edellisten dataan perustuen postinumeroaluejaon visualisoituna kartalle.
- Palvelu ei itse asiassa tarjoa mitään karttoihin liittyvää. Käyttäjä vasta yhdistää tän karttaan jos yhdistää.
- Osoitedatan koordinaatitkaan ei muodosta karttapisteitä, kun ne on maantieteellisiä koordinatteja, eli ne on pallon pinnalla. Kartta sen sijaan on taso. Parempi? Joo.
Palvelun käyttö on veloituksetonta ja pääsy ympäristöön avointa OKF-FI jäsenille. Datat on kokonaisuudessaan ladattavissa opendefinition.org mukaisesti avoimella lisenssillä. Palvelussa ei ole tehty palvelutasolupausta. Palvelu ja sisältö tarjotaan as-is.
- Pääsy ympäristöön on vähän epäselvä. Kaikki tätä pääsee kuitenkin käyttämään. Datat ei ole kokonaisuudessaan CC4. Parempi? Joo.
Projektin lopputulokset
Alkuperäinen lupaus: https://trello.com/c/JqBdRy47/28-avoin-osoitetietopalvelu-jalostusalgoritmit-ja-jalostettu-avoin-data:
###Toteutetaan osoite- ja paikkatietodatan jalostuspalvelu sekä kuukausittain päivittyvä postinumeroaluekartta: Avoimen datan sovelluksen kehittäjänä, tarvitsen avoimet osoitetiedot jalostetussa, luotettavassa ja ajantasaisessa muodossa.
Nykyisin yleisin ratkaisu niin avoimissa kuin suljetuissa palveluissa on käyttää Googlen osoiterajapintaa, jonka tiedot ovat kaupunkien osoitetietoja epätarkempia ja jonka lisenssi on suljettu ja kieltää mm. muiden karttapohjien käytön.
![kuva](https://scontent-b.xx.fbcdn.net/hphotos-prn1/t31/q79/s720x720/1077260_10202534730603232_1973867873_o.jpg)
Jatkokehitetään Googlen rajapintamuodon kanssa yhteensopivaa, avointa rajapintapalvelua ja ylläpitoskriptejä, joilla data saadaan päivitettyä kuukausittain, jalostettua ja rikastettua uudestaan, julkaistua http://data.okf.fi/console/ -palvelussa, ja hyödynnetään Pekka Sarkolan kehittämää algoritmiä jolla projisoidaan karttakerrokselle postinumeroiden aluejakomateriaali koko Suomen kattavana.
Avoimen osoitetiedon jalostusalgoritmit julkaistaan Githubissa ja ja jalostettu avoin data http://data.okf.fi -palvelussa.
***Osallistujan nimi ja tiedot:***
Jaakko Korhonen, Mikael Rekola, Tuukka Hastrup, Pekka Sarkola,
***Datalähteet:***
Maanmittauslaitoksen avoin aineisto Tiestö ja osoitteet
Itellan osoite- ja postitoimipaikkatieto
Pääkaupunkiseudun seudullinen osoiteluettelo
OpenStreetMapin osoitetiedot
Helsingin kaupungin paikkatietoaineisto
***Kaupallisuus:***
Tulokset julkaistaan githubissa ja jaellaan OKF palveluissa avoimessa ja uudelleenkäytettävässä muodossa.
***Lisenssi ja käyttöehdot:***
Koodit EUPL.
Content CC4.
***Linkit:***
https://www.facebook.com/photo.php?fbid=10202534730603232&set=gm.211958242327874
http://data.okf.fi/console/, http://data.okf.fi/
Onko totta, että tähän voi lisätä tekstiä?
15.1.2017 ainakin voi.