TIIVISTELMÄ - Muunnokset KKJ-järjestelmän ja muiden koordinaattijärjestelmien välillä antavat usein väärän tuloksen, jos KKJ-projektiokaistojen määtittelyyn käytetään niiden EPSG-koodeja EPSG:2931, EPSG:2932, EPSG:2933, EPSG:2934 - Aineistoja muunnettaessa ei pidä koskaan luottaa sokeasti luottaa EPSG-koodeihin, vaan KKJ-kaistojen määrittelyt kannattaa antaa proj-merkkijonon avulla. - Mapserver-palvelin on erikoistapaus, ja se on helppo korjata toimimaan oikein myös EPSG-koodeilla. - Virhe vaivaa myös PostGIS- ja Spatialite-tietokantoja, ellei niides spatial_ref_sys- taulua päivitetä. KKJ-KOORDINAATTIJÄRJESTELMÄN MUUNNOSVIRHE PROJ.4 -KIRJASTOA KÄYTETTÄESSÄ Monet avoimen lähdekoodin paikkatieto-ohjelmat käyttävät koordinaattijärjestelmien hallintaan PROJ.4 -projektiokirjastoa (http://trac.osgeo.org/proj/). Muunnettaessa koordinaatteja suomalaisesta KKJ-järjestelmästä muihin järjestelmiin PROJ.4:ta käyttävillä ohjelmilla on lopputuloksessa usein noin 180 metrin sijaintivirhe. Virhe johtuu siitä, että muunnosohjelman käyttämästä kirjastosta, jossa annetaan määritykset EPSG-koodeille, puuttuu KKJ/YKJ-järjestelmän koodeilta kolmiulotteisen yhdenmuotoisuusmuunnoksen parametrit eli towgs84-parametrit. Syynä parametrien puuttumiseen kirjastosta on se, että niistä on liikkeellä useita hieman erilaisia versioita. Proj.4:n ylläpitäjien periaatteena tällaisissa tapauksissa on jättää parametrit kokonaan pois ja siirtää oikeiden parametrien valitseminen käyttäjän vastuulle. Vaikka näyttääkin siltä, että PROJ.4 -kirjaston versiossa 4.8.0 tämä ongelma on ratkaistu (http://trac.osgeo.org/proj/ticket/105), niin vanhoja PROJ.4 -versioita käyttäviä ohjelmia on käytössä hyvin paljon, eikä ongelma niiden osalta korjaannu koskaan. Siitä syystä on varminta olettaa, että muunnos KKJ:stä muihin järjestelmiin menee aina pieleen, kun käytetään EPSG-koodeja. Edes huolellisesti tehdyn testin jälkeen ei kannata käydä liian luottavaiseksi, sillä vaikka testissä saataisiinkin oikeita tuloksia, niin seuraavan ohjelmapäivityksen jälkeen tilanne voi aivan hyvin olla toinen. Onneksi PROJ.4-käyttäjä voi kuitenkin ottaa tilanteen helposti omaan hallintaansa. Tämä onnistuu käyttämällä koordinaattijärjestelmän määrittelyyn EPSG-koodien sijasta proj-merkkijonoa. Alla esitetään määrittelyt KKJ-kaistoille 1-4 # KKJ / Finland zone 1 EPSG:2391 proj="tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs" # KKJ / Finland zone 2 EPSG:2392 +proj="tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs" # KKJ / Finland Uniform Coordinate System EPSG:2393 +proj="tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs" # KKJ / Finland zone 4 EPSG:2394 +proj="tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs" EUFEF-FIN -järjestelmä ei vaadi towgs84-parametrien käyttämistä, mutta silti on varminta antaa sillekin muunnosparametrit, joiden arvona on nolla. # ETRS89 / ETRS-TM35FIN EPSG:3067 +proj="utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs" ESIMERKKEJÄ PROJ-MERKKIJONON KÄYTTÄMISESTÄ KKJ - EUREF-FIN -MUUNNOKSISSA Shapefile-muunnos YKJ->EUREF ogr2ogr -f "ESRI Shapefile" -s_srs "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m" -t_srs "+proj=utm +zone=35 +ellps=GRS80 +units=m +towgs84=0,0,0,0 +no_defs" muunnettu.shp alkuperäinen.shp Shapefile-muunnos EUREF->YKJ ogr2ogr -f "ESRI Shapefile" -t_srs "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m" -s_srs "+proj=utm +zone=35 +ellps=GRS80 +units=m +towgs84=0,0,0,0 +no_defs" muunnettu.shp alkuperäinen.shp Projektioparametrien antaminen cs2cs-koordinaattimuunnosohjelmalla cs2cs +proj=utm +zone=35 +ellps=GRS80 +units=m +towgs84=0,0,0,0 +no_defs +to +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m KKJ-MUUNNOSVIRHEEN KORJAAMINEN MAPSERVER-KARTTAPALVELIMELLA Mapserver on sikäli poikkeuksellinen PROJ.4 -kirjastoa käyttävä ohjelmisto, että sillä on helppo korjata EPSG-koodien muunnosparametrit oikeiksi. Ne nimittäin on tallennettu yksinkertaiseen tekstitiedostoon, jonka nimi on "epsg". Mapserver saadaan tekemään projektiomuunnokset oikein myös EPSG-koodeja käytettäessä, kunhan epsg-tiedostoa muokataan niin, että määrittelyt ovat tällaiset: # KKJ / Finland zone 1 <2391> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # KKJ / Finland zone 2 <2392> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # KKJ / Finland Uniform Coordinate System <2393> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # KKJ / Finland zone 4 <2394> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7535,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # ETRS89 / ETRS-TM35FIN <3067> +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> Vaikka Mapserver onkin tällä tavalla helppo saada toimimaan oikein, niin täytyy pitää mielessä, että epsg-tiedostoa käyttää vain Mapserver-ohjelma. Esimerkiksi usein Mapserverin asennuksen yhteydessä asentuvat gdal- ja ogr- apuohjelmat eivät käytä epsg-tekstitiedostoa, ja ne tuottavat EPSG-koodeja käytettäessä edelleen väärän tuloksen, vaikka Mapserver olisin saatu toimimaan oikein. POSTGIS- JA SPATIALITE-KANTOJEN PÄIVITTÄMINEN Näihin kantoihin saadaan oikeat parametrit tekemällä seuraavat päivitykset. Tässä on mukana myös harvemmin käytettävät KKJ:n 0- ja 5-kaistat, joilla on koodit EPSG:3386 ja EPSG:3387. UPDATE spatial_ref_sys set proj4text='+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs ' WHERE srid=2391; UPDATE spatial_ref_sys set proj4text='+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs ' WHERE srid=2392; UPDATE spatial_ref_sys set proj4text='+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs ' WHERE srid=2393; UPDATE spatial_ref_sys set proj4text='+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs ' WHERE srid=2394; UPDATE spatial_ref_sys set proj4text='+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs ' WHERE srid=3386; UPDATE spatial_ref_sys set proj4text='+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.7435,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs ' WHERE srid=3387; UPDATE spatial_ref_sys set proj4text='+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ' WHERE srid=3067; Hyvää lukemista aiheesta: http://www.kolumbus.fi/eino.uikkanen/geodocs/kkjgps.htm