MAANMITTAUSLAITOKSEN PAIKANNIMIAINEISTOT SPATIALITE-TIETOKANNAKSI Edellisessä ohjeessa neuvottiin kuinka paikannimiaineiston tekstitiedostot saadaan muunnetuksi shapefile-muotoon. Samalla menetelmällä voidaan myös koota tekstitiedoston yhteen Spatialite-tietokantaan neljäksi eri tietokantatauluksi. Spatialite-muunnos tehdään myös GDAL-apuohjelmalla "ogr2ogr". GDAL-version on syytä olla vähintään 1.7.0. Tämän voi tarkistaa komennolla > ogr2ogr --version Koska tavoitteena on saada aikaan hyvälaatuinen Spatialite-kanta, niin se tehdään useassa vaiheessa. Ensimmäisessä vaiheessa viedään tekstitiedostot tilapäiseen Spatialite- kantaan seuraavia komentoja käyttämällä: > ogr2ogr -f "SQLite" -dsco SPATIALITE=yes -lco SPATIAL_INDEX=no -nln pnr020_2011 valiaikainen.sqlite paikannimet.vrt PNR20_2011 > ogr2ogr -f "SQLite" -update -lco SPATIAL_INDEX=no valiaikainen.sqlite paikannimet.vrt PNR100_2011 > ogr2ogr -f "SQLite" -update -lco SPATIAL_INDEX=no valiaikainen.sqlite paikannimet.vrt PNR250_2011 > ogr2ogr -f "SQLite" -update -lco SPATIAL_INDEX=no valiaikainen.sqlite paikannimet.vrt PNR500_2011 Käytettyjen parametrien tarkka selostus löytyy sivulta http://gdal.org/ogr/drv_sqlite.html. Tässä tapauksessa on käytetty näitä parametreja -dsco SPATIALITE=yes Luodaan Spatialite-tyylinen tietokanta normaalin SQLite-kannan sijasta. -lco SPATIAL_INDEX=no Säästetään aikaa ja jätetään spatiaali-indeksi tekemättä. Tietokantahan on kuitenkin tilapäinen ja se tuhotaan hetken kuluttua. -nln pnr020_2011 Annetaan PNR20_2011 -aineistosta tehtävälle tasolle nimi, jossa käytetään etunollaa. Näin tasot järjestyvät listauksisaa siistimmin mittakaavan mukaiseen järjestykseen -update Olemassa olevaan tietokantaan ei voida kirjoittaa ilman -update -valintaa Syntyvä tietokanta on sinänsä aivan käyttökelpoinen esimerkiksi QGIS-ohjelmalla, mutta ogr2ogr-ohjelma luo Spatialitekannan hieman väärällä tavalla. Koska ongelma tiedetään, ja tavoitteena on laadukas lopputulos, niin kannattaa uhrata muutama minuutti tietokannan siivoamiseen. Se tehdään OpenLite-ohjelmalla. OpenLite-ohjelman saa ladatuksi osoitteesta http://gaia-gis.it/OpenLite/ Ohjelman käyttöohje on osoitteessa http://gaia-gis.it/OpenLite/OpenLite.pdf Paikannimitietokannan siivoaminen tehdään seuraamalla käyttöohjetta ja tekemällä uusi Spatialite-tietokanta ja kopioimalla siihen edellä luodun väliaikaisesta tietokannan siinä olevat neljä pnr-alkuista taulua. Tietojen siirron jälkeen väliaikainen tietokanta "valiaikainen.sqlite" voidaan poistaa. Mikäli Spatialite-kantaa haluaa parannella edelleen, niin sen tauluille voi luoda Spatialite-gui -ohjelmalla spatiaali-indeksit. Jos tietoja tullaan mahdollisesti tarvitsemaan YKJ-järjestelmässä, niin kannattaa tehdä dokumentissa http://latuviitta.org/documents/YKJ-TM35FIN_muunnos_ogr2ogr_cs2cs.txt selostetut koordinaattijärjestelmien päivitykset. Ensistä hienompi lopputulos syntyy luomalla tietokantaan myöhempää käyttöä helpottavia näkymiä. Nekin voidaan tehdä Spatialite-gui ohjelmalla syöttämällä SQL-komennot sen syöteikkunaan. Alempana on esimerkin vuoksi muutamia SQL-komentoja, joilla luodaan näkymiä sekä rekisteröidään uusien näkymien geometriakentät tätä tarkoitusta varten olevaan tauluun. Esimerkin komentojen avulla muutetaan taulujen kenttien nimet (attr_01, attr_02 jne.) selväkielisiksi. SQL on samanlaista kuin muissakin tieto- kannoissa. Lisäksi on syytä tietää pari yksityiskohtaa, jotka liittyvät OpenLiten luomaan tietokantarakenteeseen: - Kannassa on viite-eheyssääntöjä taulujen, näkymien ja niiden metatietotaulujen välïllä. - Emotaulujen pääavain on kentässä OGC_FID, mutta Spatialite olettaa toisinaan, että pääavaimena on ROWID. Tästä syystä tehdään SELECT "OGC_FID" AS "ROWID" - Jos ei tehdä näin, niin näkymä kyllä syntyy, mutta sen rekisteröiminen views_geometry_columns -tauluun ei onnistu kannan eheyssääntöjen takia. - Näkymän rekisteröimisestä on joskus hyötyä, joten se kannattaa tehdä. SQL NÄKYMIEN LUOMISEKSI JA NIIDEN REKISTERÖIMISEKSI VIEWS_GEOMETRY_COLUMNS -TAULUUN CREATE VIEW "pnr020_view" AS SELECT "OGC_FID" AS "ROWID", "attr_01" AS "paikannimi", "attr_02" AS "nimen_kielen_koodi", "attr_03" AS "nimen_kielen_selite", "attr_04" AS "paikkatyypin_koodi", "attr_05" AS "paikkatyypin_selite", "attr_06" AS "pohjoiskoordinaatti_KKJ/PKJ", "attr_07" AS "itäkoordinaatti_KKJ/PKJ", "attr_08" AS "pohjoiskoordinaatti_KKJ/YKJ", "attr_09" AS "itäkoordinaatti_KKJ/YKJ", "attr_10" AS "pohjoiskoordinaatti_ETRS/TM35FIN", "attr_11" AS "itäkoordinaatti_ETRS/TM35FIN", "attr_12" AS "kunnan_koodi", "attr_13" AS "kunnan_nimi", "attr_14" AS "seutukunnan_koodi", "attr_15" AS "seutukunnan_nimi", "attr_16" AS "maakunnan_koodi", "attr_17" AS "maakunnan_nimi", "attr_18" AS "suuralueeen_koodi", "attr_19" AS "suuralueen_nimi", "attr_20" AS "avin_koodi", "attr_21" AS "avin_nimi", "attr_22" AS "yleislehtijaon_lehtitunnus", "attr_23" AS "pelastuspalvelulehtijaon_ruututunnus", "attr_24" AS "ETRS-TM35-lehtijaon_lehtitunnus", "attr_25" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_koodi", "attr_26" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_selite", "attr_27" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_koodi", "attr_28" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_selite", "attr_29" AS "paikannimen_lähteen_koodi", "attr_30" AS "paikannimen_lähteen_selite", "attr_31" AS "paikka-id", "attr_32" AS "paikannimi-id", "GEOMETRY" AS "GEOMETRY" FROM "pnr020_2011"; CREATE VIEW "pnr100_view" AS SELECT "OGC_FID" AS "ROWID", "attr_01" AS "paikannimi", "attr_02" AS "nimen_kielen_koodi", "attr_03" AS "nimen_kielen_selite", "attr_04" AS "paikkatyypin_koodi", "attr_05" AS "paikkatyypin_selite", "attr_06" AS "pohjoiskoordinaatti_KKJ/PKJ", "attr_07" AS "itäkoordinaatti_KKJ/PKJ", "attr_08" AS "pohjoiskoordinaatti_KKJ/YKJ", "attr_09" AS "itäkoordinaatti_KKJ/YKJ", "attr_10" AS "pohjoiskoordinaatti_ETRS/TM35FIN", "attr_11" AS "itäkoordinaatti_ETRS/TM35FIN", "attr_12" AS "kunnan_koodi", "attr_13" AS "kunnan_nimi", "attr_14" AS "seutukunnan_koodi", "attr_15" AS "seutukunnan_nimi", "attr_16" AS "maakunnan_koodi", "attr_17" AS "maakunnan_nimi", "attr_18" AS "suuralueeen_koodi", "attr_19" AS "suuralueen_nimi", "attr_20" AS "avin_koodi", "attr_21" AS "avin_nimi", "attr_22" AS "yleislehtijaon_lehtitunnus", "attr_23" AS "pelastuspalvelulehtijaon_ruututunnus", "attr_24" AS "ETRS-TM35-lehtijaon_lehtitunnus", "attr_25" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_koodi", "attr_26" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_selite", "attr_27" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_koodi", "attr_28" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_selite", "attr_29" AS "paikannimen_lähteen_koodi", "attr_30" AS "paikannimen_lähteen_selite", "attr_31" AS "paikka-id", "attr_32" AS "paikannimi-id", "GEOMETRY" AS "GEOMETRY" FROM "pnr100_2011"; CREATE VIEW "pnr250_view" AS SELECT "OGC_FID" AS "ROWID", "attr_01" AS "paikannimi", "attr_02" AS "nimen_kielen_koodi", "attr_03" AS "nimen_kielen_selite", "attr_04" AS "paikkatyypin_koodi", "attr_05" AS "paikkatyypin_selite", "attr_06" AS "pohjoiskoordinaatti_KKJ/PKJ", "attr_07" AS "itäkoordinaatti_KKJ/PKJ", "attr_08" AS "pohjoiskoordinaatti_KKJ/YKJ", "attr_09" AS "itäkoordinaatti_KKJ/YKJ", "attr_10" AS "pohjoiskoordinaatti_ETRS/TM35FIN", "attr_11" AS "itäkoordinaatti_ETRS/TM35FIN", "attr_12" AS "kunnan_koodi", "attr_13" AS "kunnan_nimi", "attr_14" AS "seutukunnan_koodi", "attr_15" AS "seutukunnan_nimi", "attr_16" AS "maakunnan_koodi", "attr_17" AS "maakunnan_nimi", "attr_18" AS "suuralueeen_koodi", "attr_19" AS "suuralueen_nimi", "attr_20" AS "avin_koodi", "attr_21" AS "avin_nimi", "attr_22" AS "yleislehtijaon_lehtitunnus", "attr_23" AS "pelastuspalvelulehtijaon_ruututunnus", "attr_24" AS "ETRS-TM35-lehtijaon_lehtitunnus", "attr_25" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_koodi", "attr_26" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_selite", "attr_27" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_koodi", "attr_28" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_selite", "attr_29" AS "paikannimen_lähteen_koodi", "attr_30" AS "paikannimen_lähteen_selite", "attr_31" AS "paikka-id", "attr_32" AS "paikannimi-id", "GEOMETRY" AS "GEOMETRY" FROM "pnr250_2011"; CREATE VIEW "pnr500_view" AS SELECT "OGC_FID" AS "ROWID", "attr_01" AS "paikannimi", "attr_02" AS "nimen_kielen_koodi", "attr_03" AS "nimen_kielen_selite", "attr_04" AS "paikkatyypin_koodi", "attr_05" AS "paikkatyypin_selite", "attr_06" AS "pohjoiskoordinaatti_KKJ/PKJ", "attr_07" AS "itäkoordinaatti_KKJ/PKJ", "attr_08" AS "pohjoiskoordinaatti_KKJ/YKJ", "attr_09" AS "itäkoordinaatti_KKJ/YKJ", "attr_10" AS "pohjoiskoordinaatti_ETRS/TM35FIN", "attr_11" AS "itäkoordinaatti_ETRS/TM35FIN", "attr_12" AS "kunnan_koodi", "attr_13" AS "kunnan_nimi", "attr_14" AS "seutukunnan_koodi", "attr_15" AS "seutukunnan_nimi", "attr_16" AS "maakunnan_koodi", "attr_17" AS "maakunnan_nimi", "attr_18" AS "suuralueeen_koodi", "attr_19" AS "suuralueen_nimi", "attr_20" AS "avin_koodi", "attr_21" AS "avin_nimi", "attr_22" AS "yleislehtijaon_lehtitunnus", "attr_23" AS "pelastuspalvelulehtijaon_ruututunnus", "attr_24" AS "ETRS-TM35-lehtijaon_lehtitunnus", "attr_25" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_koodi", "attr_26" AS "nimen_kielen_virallisuus_paikan_sijaintikunnassa_selite", "attr_27" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_koodi", "attr_28" AS "nimen_kielen_enemmistöasema_paikan_sijaintikunnassa_selite", "attr_29" AS "paikannimen_lähteen_koodi", "attr_30" AS "paikannimen_lähteen_selite", "attr_31" AS "paikka-id", "attr_32" AS "paikannimi-id", "GEOMETRY" AS "GEOMETRY" FROM "pnr500_2011"; INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('pnr020_view','GEOMETRY','ROWID','pnr020_2011','GEOMETRY'); INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('pnr100_view','GEOMETRY','ROWID','pnr100_2011','GEOMETRY'); INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('pnr250_view','GEOMETRY','ROWID','pnr250_2011','GEOMETRY'); INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('pnr500_view','GEOMETRY','ROWID','pnr500_2011','GEOMETRY');