Julkaistu 20.8.2019

Taulukkomuotoiset datat helposti PostGIS-tietokantaan

Usein tietokantojen kanssa työskennellessä koneluettava tietoformaatti Comma Separated Value (.csv) on hyvin laajasti käytetty ja hyödyllinen formaatti. Usein kuitenkin sarakkeiden tietomuodot (teksti, kokonaisluku, geometria, jne.) aiheuttavat päänvaivaa käyttäjälle. Tässä tutoriaalissa näytämme, kuinka OGR-komentotyökalun avulla saadaan helposti ladattua .csv-data PostGISiin. Tällä kertaa haluamme ladata Helsinki Region Infosharen kautta julkaistun kaupungin tuottaman liikennemerkit pilottiaineistonPostGISiin.

Ensin data tutuksi: miltä se .csv-aineisto näyttääkään?

Esimerkiksi kyseisellä datasetilla on perinteiseen tapaan paljon sarakkeita, jotka sisältävät erilaisia ominaistietoja liikennemerkeistä. Sarakkeet ovat eri muodossa ja jos .csv-tiedosto avataan laskentataulukko-ohjelmalla (Excel/Libreoffice Calc tms.), se näyttäisi suurin piirtein tältä (muutama rivin osalta):

PostGIS

GDAL/OGR-ohjelmistokirjasto apuun ja taulukkodata PostGISiin 

GDAL/OGR-työkalun avulla voidaan helposti ladata aineisto PostGISiin. GDAL/OGR on ohjelmistokirjasto, joka ei välttämättä ole nimeltään monelle tuttu, mutta käytössä se on ollut lähes kaikilla paikkatiedon kanssa toimineilla. Lue täältä, missä kaikissa paikkatieto-ohjelmissa GDAL-OGR pyörii taustalla tai liitännäisenä. Tutustu myös tukipalveluartikkelistamme, kuinka asennat ohjelmistokirjaston Windows-ympäristöön.

CSV-aineiston tuominen PostGISiin tapahtuu seuraavan komentosarjan avulla. Komennon viimeisenä parametrina AUTODETECT_TYPE=YES auttaa työkalua sananmukaisesti tunnistamaan automaattisesti tietotyyppejä aineistossa.

ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres dbname=gisdb password=mypassword" liikennemerkit.csv -nln liikennemerkit -oo AUTODETECT_TYPE=YES

Huomaa personalisoida oman työympäristösi mukaan ainakin user-, dbname- ja password-parametrit, jotka esittävät tietoja käyttämästäsi tietokannasta. Yllä olevan kommennon ajat samaisesta kansiosta, josta löydät aineiston. Jos tiedostosijaintien välillä liikkumisesta on aikaa, voit lukea seuraavista linkeistä, miten Linux-ympäristössä ja Windows-ympäristössä liikutaan kansioista toiseen. Windowsissa OsGeo4W shell -ohjelmiston saa auki ja ogr-työkalua voi testata csv-aineiston kanssa seuraavalla tavalla:

Tulokset

Lopputuloksena löydät aineiston haluamastasi tietokannasta. PgAdminissa data näyttäisi tältä:

PostGIS

Hyödyntäen psql-komentorivityökalua hallitsemaan PostGIS-tietokantaasi saisit samat tiedot esille kyselemällä taulun tietoja helposti komennolla:

\d liikennemerkit

Tämän artikkelin luontihetkellä aineisto sisälläsi seuraavat sarakkeet, joiden tietotyypit asettuivat Type-sarakkeen esittämällä tavalla. Näytönkaappaus on otettu psql-työkalusta.

PostGIS

Jos verrataan tietotyyppejä aineiston lataussivulstolta katsottuun taulukkoon tietotyypeistä huomataan, että tietotyypit täsmäävät aika pitkälti (huomaa, että tietoaineistoon on tullut lisää sarakkeita metadatan päivittämisen jälkeen).

PostGIS

Täältä voit lukea lisää GDAL/OGR:n .csv-driverista ja sen toiminnallisuuksista osana ohjelmistokirjastoa: https://gdal.org/drivers/vector/csv.html

Taulukkodatan koordinaattisarakkeet paikkatietomuotoon tietokantaan

Extrana jos haluat hyödyntää ‘x’- ja ‘y’-sarakketa ja tuottaa paikkatietosarakkeen osaksi tietokantataulua, voit tehdä sen seuraavia komentoja hyödyntäen:

-- lisätään geom_-sarake, joka on tietotyypiltään geometry 
ALTER TABLE liikennemerkit
 ADD COLUMN geom_ geometry;

-- hyödynnetään x- ja y-sarakkeita juuri luomamme geometry-sarakkeen populoimiseen 
UPDATE liikennemerkit 
 SET geom_=ST_SetSRID(ST_MakePoint(x::float8, y::float8), 3878);

Mikäli PostgreSQL:n näppärä psql-komentyökalu ei ole tuttu ja haluaisit testata sitä Windows-ympäristössä, seuraavalta videolta voit katsoa, miten yllä oleva komento ajetaan sen avulla.

Huomaa myös, kuinka loppuviimein x- ja y-sarakkeet eivät sellaisinaan eli double precision -muodossa ole päteviä, mikä johtuu lähinnä siitä, että aineistoissa jotkin x- ja y-koordinaatit ovat tyhjiä tai sitten niiden merkkipituudet ovat keskenään vaihtelevia.

Lopuksi voit vielä visualisoida aineiston vaikkapa QGISissa:

PostGIS
Profiilikuva

Santtu Pyykkönen

Santtu Pyykkönen on aluetieteen HM, jota kiinnostaa erityisesti paikkatieto kaikkine ulottuvuuksineen, avoimen lähdekoodin ohjelmistot ja yhteisöt sekä kaupunkikehitys. Harrastuksina mm. juokseminen ja lukeminen.