MapInfo, GDAL ja ogr2ogr



Samankaltaiset tiedostot
OpenStreetMap-aineistojen haltuunotto GDAL:lla

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla

Digiroad-aineiston 2018_01 haltuunotto

Maanmittauslaitoksen nimistö Spatialite-tietokantana. - kuvitettu ohje Quantum GIS ohjelmaa varten

Rakennusten osoitetietojen haltuunotto

Maastotietokannan tiestö osoitteilla

Pääkaupunkiseudun liikennemeluvyöhykkeiden haltuunotto

Maanmittauslaitoksen peruskarttarastereiden haltuunotto

Paikkatietoaineistojen muuntaminen GPS-kohdepisteiksi GDAL/OGR -ohjelmilla

Vedä ja pudota Maamittauslaitoksen JPEG2000-ortoilmakuva GeoTIFF-muotoon

HAME PostGIS-tietokanta

OpenJUMP ja OpenStreetMap-reititys

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Tilastokeskuksen rajapintapalveluiden käyttöönotto MapInfo - ohjelmistossa Ohjeita laatiessa on käytetty MapInfon versiota 11.5.

Paikkatieto-PDF. Kaksi eri standardia teoriassa ja käytännössä. Jukka Rahkonen Viimeksi muokattu 8.

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Pikaopas. Ohjeiden etsiminen Hae ohjesisältöä napsauttamalla kysymysmerkkiä.

CSV - XML ohjelman käyttöohje

Latuviitan Landsat-mosaiikki Itämeren alueelta

Seutukartan aineistokuvaus

Paikkatieto-PDF OpenStreetMap-aineistoista

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Seuraavat tasot sisältävät alueita ja pisteitä samassa tasossa. o Asemakaavat o Kaavayksiköt o Kiinteistöt

Googlen Earthin asennus on helppoa ja maksutonta suoraan verkosta.

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Geodeettisen laitoksen koordinaattimuunnospalvelu

Kuvien siirto-ohjelman käyttöohje Huom! Tämä ohjelmisto on käytössä vain yrityksillä, joilla ei ole käytössä Java Runtime 1.4 -sovellusta.

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Vaatimusluettelo. Liite2_Vaatimusluettelo. Tun nus (ID) Kpl Tärkeys Toimittajan kommentit Navigointi. Haut

CISS Base Excel raporttien määritys Käyttäjän käsikirja. CISS Base Käyttäjän Käsikirja Econocap Engineering Oy 1

Maanmittauslaitoksen vanhojen painettujen karttojen georeferointi

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Tulosta yrityksesi tuloslaskelma ja tase myöhempää tarkastusta varten. Ota varmuuskopio tilanteesta ennen tilimuunnosta.

GIS-ANALYYSI PAIKKATIETOIKKUNASSA. Matias Järvinen 2019

SQL Buddy JAMK Labranet Wiki

PDF-tiedostojen teon pikaohje

Navistools Standard. Navistools

Asiakirjojen vertailu-kurssi

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Uuden työ- tai mittavälineen luominen tietokantaan

Collector for ArcGIS. Ohje /

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

EeNet materiaalit ohje

Muuttujien määrittely

Garmin etrex GPS-laite

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE

Ohje. Vastaanottajatietojen tuonti Työasema Prinetistä Posti SmartShipiin Julkinen - Public

Moottorikelkkareittien ja -urien lataaminen Lipas liikuntapaikat.fi järjestelmään

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

LAITTEISTOKOKOONPANON SELVITTÄMINEN JA AJURIEN ASENTAMINEN

LUSAS tiedosto-opas. Matti Lähteenmäki

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

Tietojen jakelu Skeemat Lokitiedot Kansallisen tulorekisterin perustamishanke

1. Skannaus ja tekstintunnistus (OCR) verkkoskannerilta

DOORSin Spreadsheet export/import

MultiSave - käyttö ja käyttöönotto

Ponnahdusikkunoiden ja karttatekstien hallitseminen ArcGIS Online kartoissa

Päivitysohje Opus Dental

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Vastaanottajatietojen tuonti Työasema Prinetistä Posti SmartShipiin

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Kurssimateriaali. GeoGebra

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

KANSALLINEN MAASTOTIETOKANTA

GALERIE EXHIBITIONS (13) 1 2 EXHIBITIONS 2

Using the QGIS Browser

Toinen harjoitustyö. ASCII-grafiikkaa 2017

ITKP102 Ohjelmointi 1 (6 op)

Collector käyttöohje. Ohje /

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

Uudessa Excel-2007 on muutettuja / uusia ominaisuuksia jotka tulee huomioida kun Excel-2003 tehtyjä sovelluksia otetaan käyttöön Excel-2007:ssä.

Sisällys Clerica Web-sovellusten käytön aloittaminen 2

RATKI 1.0 Käyttäjän ohje

Nettipassitus, tunnistetun käyttäjän toiminnot

Uuden TwinSpacen yleiskatsaus

Sensen perusraportit ratsastusseuroille. Jäsenten tiedot ja kilpailuluvat

Osoitin ja viittaus C++:ssa

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

3 PAIKKATIETOHARJOITUSTA

2.2 Muunnosten käyttöön tutustumista

Hyvät ja huonot tiedostomuodot paikkatietokuville, ja miksi png ja jpeg kuuluvat niihin huonoihin

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Lupapiste käyttöönottokoulutus. Palvelun esittely

CLOUDBACKUP TSM varmistusohjelmiston asennus

Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta.

1 Visma Econet Pro Arkistointi

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

Luokka näytön käyttäminen opetuksessa.

Tietojen lataaminen SOTE-organisaatiorekisteristä omiin tietojärjestelmiin

Oppilaan pikaopas. Project 2013 käyttöliittymä ja näkymät

Muutostietojen ilmoittaminen sähköisellä lomakkeella NAPliikkumispalvelukatalogissa

Älä vielä sulje vanhoja

Avoin metsätieto - Rajapintapalvelut

Projektinhallintaa paikkatiedon avulla

KÄYTTÖOHJE. Servia. S solutions

Transkriptio:

MapInfo, GDAL ja ogr2ogr Esimerkkinä pääkaupunkiseudun seutukartta 2012 Viimeksi muutettu 13. helmikuuta 2012 Lyhennelmä GDAL-apuohjelmalla ogr2ogr voidaan muuntaa suomalaisia Mapinfo-muotoisia aineistoja muihin tiedostomuotoihin ja tietokantoihin, mutta muunnoksessa on otettava huomioon seuraavat asiat: GDAL:in Mapinfo-ajuri ei hallitse muunnoksia erilaisten merkistökoodausten välillä, joten muunnos esimerkiksi ISO-8859-1 -koodauksen ja UTF-8 -koodauksen välillä on tehtävä välivaiheen kautta Mapinfo-muoto, toisin kuin esimerkiksi shapefile-muoto, sallii pisteiden, viivojen ja alueiden tallentamisen samalla karttatasolle. Myös ominaisuustietojen nimet voivat Mapinfo-muodossa olla pidempiä kuin shapefile-muodossa. Mikäli haluaa säilyttää Mapinfo-tiedoston rakenteen muunnoksessa, niin on varminta tehdä muunnos johonkin vastaavia ominaisuuksia tukevaan tiedostomuotoon, esimerkiksi GML:ään, tai tietokantaan, kuten Oracleen, PostGIS:iin tai Spatialiteen. Muunnokseen tarvittava laskenta-aika on noin 2 minuuttia, mutta valmistelevat työt vaativat oman aikansa. Tarvitaan GDAL-versio 1.9.0, jotta koordinaattijärjestelmästä toiseen muuntaminen onnistuu oikein pelkkiä EPSG-koodeja käyttämällä. Pääkaupunkiseudun seutukartta-aineisto ja sen muuntaminen ogr2ogr-ohjelmalla Pääkaupunkiseudun seutukartta-aineisto http://www.hri.fi/fi/data/seutukartta/ tuli saataville tammikuussa 2012. Aineistoon kuuluu 60 karttatasoa, joista jokainen on omana Mapinfomuotoisena neljän tiedoston tiedostonippuna, joten jakeluun sisältyy 240 tiedostoa. Jokainen karttataso sisältää vain yhden tyyppisiä geometrioita (pisteitä, viivoja tai alueita). Osa viivatasoista sisältää kuitenkin sekä LineString- että MultiLineString-tyyppejä ja vastaavasti osa aluetasoista sekä Polygon- että MultiPolygon-tyyppejä. Aineiston käyttämä koordinaattijärjestelmä on KKJ:n 2-kaista (EPSG:2392). Aineiston merkistökoodauksena on WindowsLatin1. Koodin ISO-8859-1 käyttäminen tuotti käytännössä oikean tuloksen, vaikka teoriassa se ei ehkä tarkoita ihan samaa asiaa. Ominaisuustietojen arvoissa esiintyy ei ASCII-merkkejä ja muutamilla karttatasoilla myös niiden nimissä. Ominaisuustietokenttien nimet voivat myös olla pitkiä, esimerkiksi metroasema tai vesistö_nimi_r. Seuraavassa esimerkissä seutukartta-aineiston kaikki 60 karttatasoa muunnetaan yhdeksi Spatialitetietokannaksi. Muunnoksen jälkeen koko aineisto on yhtenä tiedostona 240 tiedoston sijasta. Spatialite-muodossa on mahdollista säilyttää myös pitkät ominaisuustietojen nimet. Spatilitemuodon käyttämisen takia on kuitenkin otettava huomioon kaksi asiaa: Spatialite-tietokannat käyttävät UTF-8 -merkistökoodausta, joten muunnoksessa on tehtävä muunnos ISO-8859-1 koodauksesta UTF-8:aan. Spatialite-kanta itsessään tukee eri geometriatyyppien tallentamista samaan tauluun, mutta

monet yleisesti käytettävät Spatialite-tietokantaa tukevat sovellukset eivät tätä tue. Siksi on parasta tallentaa tason kaikki kohteet MultiLineString-muodossa, jos lähtöaineistossa on sekä LineString- että MultiLineString-tyypin kohteita. Vastaavasti sekalaisia aluekohteita sisältävien tasojen kohteet kannattaa muuntaa kaikki MultiPolygon-tyyppisiksi. KKJ-2 -kaistassa olevan, ISO-8859-1 -merkistökoodausta käyttävän Mapinfo TAB muotoisten aineistojen muuntaminen ETRS-TM35FIN -järjestelmässä olevaksi Spatialite-tietokannaksi, joka käyttää UTF-8 -merkistökoodausta Mallisuoritus 1: Vaihe 1: Ei-ASCII-merkkien poistaminen skeemasta Tämä vaihe ei ole välttämätön, mutta koska joillakin ohjelmilla tunnetusti on ongelmia, jos ominaisuustietojen nimissä on ei-ascii -merkkejä, niin kannattaa ainakin harkita niiden muuttamista vain ASCII-merkkejä sisältäviksi. Suomessa kun ollaan, niin tämä muunnos voi tuntua ärsyttävältä, joten harkinnan jälkeen ne voi päättää jättää ennalleenkin. Tässä tapauksessa lue myös mallisuoritus 2. Ominaisuustietokenttien nimet voidaan vaihtaa avaamalla tekstinkäsittelyohjelmalla.tab -päätteinen tiedosto, tässä esimerkiksi seutukartta-aineistoon kuuluva m_jarvet.tab!table!version 300!charset WindowsLatin1 Definition Table Type NATIVE Charset "WindowsLatin1" Fields 3 Vesistö_nimi_s Char (40) Index 1 ; Vesistö_nimi_r Char (40) Index 2 ; Mtryhm Integer Index 3 ; Muutetaan kntän nimet seuraavasti, ja tallennetaan muokattu TAB-tiedosto. Vesisto_nimi_s Char (40) Index 1 ; Vesisto_nimi_r Char (40) Index 2 ; Vaihe 2: Muunnetaan KKJ-2 -kaistassa oleva Mapinfo-tiedosto ETRS-TM35FIN -järjestelmää käyttäväksi GML-tiedostoksi Käytetään ogr2ogr-ohjelmaa ja annetaan seuraava komento: ogr2ogr -f GML -t_srs epsg:3067 m_jarvet.gml --config OGR_FORCE_ASCII no m_jarvet.tab Huom! Jos käytössä on GDAL-versio 1.9.0 tai uudempi voidaan muunnos KKJ2->ETRS- TM35FIN eli EPSG:2392 -> EPSG:3067 tehdä kuten yllä on esitetty. Vanhemmilla GDALversioilla tämä johtaa projektiovirheeseen. Tätä aihetta käsitellään Latuviitan ohjeessa Tee muunnokset KKJ<->TM35FIN oikein

Vaihe 3: Korjataan GML-tiedoston merkistökoodi oikeaksi GDAL:in Mapinfo-ajuri ei hallitse erilaisia merkistökoodauksia, vaan se olettaa, että koodaus on aina UTF-8. Kuten edellä olevasta.tab -tiedoston alusta nähdään, seutukartoissa käytetään merkistöä WindowsLatin1, jota vastaa koodi ISO-8859-1. Siitä syystä avataan edellä luotu GMLtiedosto ja korjataan sen ensimmäisellä rivillä oleva merkistökoodi oikeaksi. Ennen korjausta <?xml version="1.0" encoding="utf-8"?> Korjauksen jälkeen <?xml version="1.0" encoding="iso-8859-1"?> Tallennetaan korjattu GML-tiedosto. Koska GDAL:in GML-ajuri tukee muutamia erilaisia merkistökoodauksia, niin se muuntaa seuraavassa vaiheessa myös kaikki merkit ISO-8859-1 -koodauksesta UTF-8:aan. Lisätietoa tästä GML-ajurin ohjesivulla http://gdal.org/ogr/drv_gml.html Vaihe 4: Muunnetaan GML-tiedosto Spatialite-muotoon ogr2ogr -f SQLite -dsco spatialite=yes -dsco init_with_epsg=yes -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite A_es_pie.GML -nlt polygon Parametrien merkitys -f SQLite Kohteena on SQLite-tietokanta -dsco spatialite=yes SQLite-tietokanta Kohteena on nimenomaan Spatialite-tyylinen -dsco init_with_epsg=yes Kirjoitetaan syntyvään tietokantaan kaikkien tuettujen koordinaattijärjestelmien määrittelyt -gt 2048 Kirjoitetaan 2048 kohdetta ennen Committoimintoa; tämä nopeuttaa muunnosta verrattuna oletusarvon 200 käyttämiseen -a_srs epsg:3067 Liitetään aineistoon EPSG-koodi 3067 -nlt multipolygon Koska tiedetään, että osa järvistä on multipolygoneja, niin kirjoitetaan kaikki järvet tietokantaan multipolygoneina. Lisää tietoa Spatialite-ajurista ja sen paremetreistä sivulla http://gdal.org/ogr/drv_sqlite.html Vaihe 5: sama uudelleen Toistetaan vaiheet 1, 2, 3 ja 4 lopuille 59 karttatasolle. Erotuksena on ainoastaan se, että Spatialitekanta on jo olemassa, joten 4-vaiheessa ei luoda uutta tietokantaa vaan päivitetään jo olemassa olevaa. Komento on tässä tapauksessa Tarvittava komento on silloin tällainen: ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite A_es_suu.GML -nlt polygon

Huomautuksia mallisuoritukseen 1. Edellä vaiheessa 3 määrättiin luotavalle uudelle tietokantataululle tarkka geometriatyyppi -nln -parametrin avulla. Mutta kuinka oikea geometriatyyppi selvitetään? Yksi vaihtoehto on jättää se selvittämättä ja antaa kaikille viivatasoille tyypiksi MULTILINESTRING ja kaikille aluekohteille MULTIPOLYGON. Mutta seutukartta-aineistosta ei aina voi esimerkiksi nimen perusteella päätellä, mitä geometriota tasolle kuuluu. Esimerkiksi tasolla l_kiitor on kiitoradat alueina, vaikka arvaamalla voisi päätellä niiden olevan viivoja. Ogrinfo-työkalustakaan ei ole apua, koska se listaa vain, että taso sisältää ylipäätään geometrioita: ogrinfo -so -al l_kiitor.tab Had to open data source read-only. INFO: Open of `l_kiitor.tab' using driver `MapInfo File' successful. Layer name: l_kiitor Geometry: Unknown (any) Mikä siis avuksi? Yksi tapa on tehdä ensin alustava muunnos ogr2ogr-ohjelmalla Spatialitemuotoon yrittämättäkään määrätä syntyvän tietokantatason geometriatyyppiä. Tietokanta voidaan sitten avata Spatialite-gui -ohjelmalla, jossa on oma erityinen työkalu geometriatyyppien tarkastamiseen. Mallisuoritus 2: Edellisessa esimerkissä poistettiin ensin erikoismerkit Mapinfo-tiedoston skeemasta muokkaamalla.tab -tiedostoa, tehtiin väliaikainen muunnos GML-muotoon ja korjattiin käsin muokkaamalla GML-tiedoston merkistökoodi oikeaksi. Seuraavassa esimerkissä esitetään, mitä tehdä jos skeemaan kuitenkin halutaan ominaisuustietojen nimiin mukaan ei-ascii-merkkejä. Vaihe 1: Muunnos Mapinfo-muodosta GML-muotoon. Ensimmäinen vaihe voidaan tehdä suoraan ogr2ogr-ohjelmalla mutta TAB-tiedostoja ei muokata käsin ennen muunnoksen tekemistä vaan ominaisuustietojen nimiin mahdollisesti kuuluvien erikoismerkkien annetaan olla paikallaan. Komento on sama kuin edellisessäkin esimerkissä ogr2ogr -f GML -t_srs epsg:3067 m_jarvet.gml --config OGR_FORCE_ASCII no m_jarvet.tab Vaihe 2: GML-tiedoston merkistökoodauksen korjaus ja.xsd-tiedoston tuhoaminen Samoin kuin edellisessä esimerkissä korjataan GML-tiedoston ensimmäiselle rivillä oikea merkistökoodaus Ennen korjausta <?xml version="1.0" encoding="utf-8"?> Korjauksen jälkeen <?xml version="1.0" encoding="iso-8859-1"?> Ogr2ogr luo oletusasetuksia käytettäessä GML-muunnoksen yhteydessä myös skeemamäärittelytiedoston, jonka nimen alkuosa on sama kuin GML-tiedostolla mutta tarkentimena on.xsd. Tämä tiedosto tuhotaan ennen kuin siirrytään seuraavaan vaiheeseen.

Vaihe 3: GML-tiedoston muuntaminen Spatialite-muotoon Tämä vaihe on sama kuin edellisessäkin esimerkissä, ja sekä ominaisuustietojen nimiin että että niiden sisällössä mahdollisesti olevat ei-ascii-merkit muuntuvat oikein ogr2ogr -f SQLite -dsco spatialite=yes -dsco init_with_epsg=yes -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite A_es_pie.GML -nlt polygon Huomautuksia mallisuoritukseen 2. GDAL:in GML-ajuri kirjoittaa oletusasetuksilla sekä GML-tiedoston että sitä vastaavan skeematiedoston (.xsd). GML-ajuri tukee muutamaa merkistökoodausta (US-ASCII, UTF-8, UTF- 16 ja ISO-8859-1). Yllättävää kyllä, ajuri tukee niitä kuitenkin vain GML-tiedoston käsittelyssä, mutta ei skeematiedoston käsittelyssä. Tämä johtuu siitä, että skeematiedoston XML-sisällön jäsentämiseen käytetään eri ohjelmakirjastoa. Kun edellisen mallisuoritus 2:n vaiheessa 2 tehtiin muunnos Mapinfosta GML-muotoon, niin GDAL kirjoitti varsinaisen tietosisällön.gml-tiedostoon ja tiedon rakennekuvauksen, joka sisältää mm. ominaisuustietokenttien nimet.xsd-tiedostoon. GDAL kirjoittaa molempien tiedostojen otsikkoriville, että niissä käytetään merkistökoodausta UTF-8, mikä on esimerkin tapauksessa väärin. GML-tiedoston merkistökoodaus voidaan korjata oikeaksi muokkaamalla otsikkoriviä niin että siinä on todellisen koodauksen tunnus ISO-8859-1, mutta vaikka sama muutos tehtäisiin.xsdtiedostoon, niin sillä ei kuitenkaan olisi mitään vaikutusta. GDAL olettaa joka tapauksessa, että se on UTF-8-koodattu. Tästä seuraa, se, jos lähtöaineiston ominaisuustietojen nimissä on ei-asciimerkkejä, niin ne muuntuvat väärin UTF-8-muotoon. Ensimmäisessä malliesimerkissä tätä ei tapahtunut, koska alkuperäisiä Mapinfo-tiedostoja muokattiin niin, että missään ominaisuustietojen nimissä ei ollut muita kuin ASCII-merkkejä. On ehkä yllättävää, ettö helpoin tapa ominaisuustiedojen nimien muunnos UTF-8-muotoon tapahtumaan oikein on tuhota.xsd-tiedosto. GDAL:in GML-ajuri nimittäin toimii niin, että jos skeematiedostoa ei ole olemassa, niin varsinainen GML-datatiedosto käydään ensin läpi alusta loppuun ja GDAL luo skeematiedoston sen perusteella, mitä elementtejä tiedoista löytyy. Koska gml-tiedoston käsittelyssä ISO-8859-1 koodaus hallitaan, niin GDAL selviytyy myös ei-asciimerkkejä sisältävistä ominaisuustietojen nimistä. GDAL:in merkistökoodauksesta Yhteenveto siitä, mitä vaikeuksia on ISO-8859-1-merkistöä käyttävien Mapinfo-tiedostojen muuntamiseksi muihin tiedostomuotoihin GDAL:in avulla. GDAL:in Mapinfo-ajuri ei hallitse eri merkistökoodauksia vaan merkit otetaan sellaisina kuin ne ovat ja siirretään ilman muunnoksia tulostiedostoihin. GDAL:ssa ei muutenkaan ole yleistä, kaikille ajureille yhteistä menetelmää merkistökoodauksen hallintaan GDAL:in GML-ajuri hallitsee seuraavien merkistöjen väliset muunnokset: US-ASCII, UTF- 8, UTF-16 ja ISO-8859-1. Merkistötuki koskee kuitenkin vain varsinaista gml-tiedostoa, ei.xsd-skeematiedostolle GDAL tunnistaa ei-ascii-merkit ja oletusasetuksilla pakottaa ne ASCII-merkeiksi. Tämä tuottaa sinänsä käyttökelpoisen tulosen, mutta jos halutaan saada merkit muunnetuksi oikein esimerkiksi UTF-8-koodatuiksi, niin tämä pakkomuunnos on kiellettävä antamalla org2ogr-

ohjelmalla parametri --config OGR_FORCE_ASCII NO GML-muunnoksessa tulokseksi syntyy.gml- ja.xsd-tiedostot, jotka on otsikossa merkitty käyttämään UTF-8-koodausta, vaikka sisältö oikeasti onkin lähtöaineiston mukainen eli tässä tapauksessa ISO-8859-1 Gml-tiedosto on helppo korjata kuntoon muokkaamalla sen otsikkoriviä ja kirjoittamalla siihen oikea merkistökoodi, mutta koska GDAL ei tue eri merkistöjä.xsd-tiedoston tulkitsemisessa niin tämä korjaus ei riitä Pienellä tempulla muunnos saadaan onnistumaan, eli GDAL voidaan ohjata luomaan skeema tutkimalla gml-tiedosto läpikotaisin sen merkistökoodauksen ymmärtävällle menetelmällä. GDAL käyttää tätä polkua, jos se ei löytä.xsd-tiedostoa, joten.xsd-tiedosto voidaan yksinkertaisesti tuhota tai sitten sen syntyminen voidaan estää jo GML-tiedoston luontivaiheessa antamalla ogr2ogr-ohjelmalle parametri -dsco XSISCHEMA=OFF. Täydellinen toimiva komento olisi siis muotoa ogr2ogr -f GML -dsco XSISCHEMA=OFF testi.gml m_meri.tab --config OGR_FORCE_ASCII NO Edellinen komento luo GDAL:in omaa muotoa olevan skeematiedoston, jonka tiedostonimen tarkenne on.gfs Jos tehdään peräkkäisiä kokeiluja samoilla tiedostoilla, niin edellisissä muunnoksissa syntyneet.xsd- ja.gfs- tiedostot voivat vaikuttaa tuloksiin. Niiden olemassaolo on muistettava ottaa huomioon, ja yleensä ne on parasta tuhota kokeilujen välillä. Vaihtoehto merkistökoodauksen muuntamiseen: iconv-ohjelma GDAL:in puolittain toteutetun GML-tiedostomuodon merkistötuen takia muunnos WindowsLatin1:stä ISO-8859-1:stä UTF-8-koodaukseen on konstikasta. Harkitsemisen arvoinen vaihtoehto on tehdä merkistön muunnos nimenomaan siihen tarkoitukseen tehdyllä ohjelmalla kuten esimerksi iconv-ohjelmalla. Iconv tukee kymmeniä erilaisia merkistökoodauksia ja Windowskäyttäjä saa sen vaivattomasti käyttöönsä lataamalla GDAL asennusohjelman Gisinternals.com -sivustolta http://www.gisinternals.com/sdk/ Koska iconv muuntaa merkkejä, niin Mapinfon TAB-muotoisten tiedostojen koodausta ei voi muuntaa sillä suoraan, vaan välissä on käytettävä jotain sellaista tiedostomuotoa, jossa ominaisuustietojen nimet ja varsinainen tietosisältö ovat tekstimuodossa. GML, jota tässä ohjeessa on käsitelty, on nimenomaan sellainen tiedostomuoto. Toinen vaihtoehto on käyttää Mapinfon tekstipohjaista MID/MIF -tiedostomuotoa. Ogr2ogr osaa tehdä muunnoksen TAB-muodosta MID/MIF -muotoon. Tässä annetaan kuitenkin ohjeet GML-tiedostomuotoa varten. Seuraavilla komennoilla muunnetaan iconv-ohjelmalla ogr2ogr:n luomat gml- ja xsd-tiedostot UTF-8-koodatuiksi iconv -f ISO-8859-1 -t UTF-8 testi.gml >testi_utf8.gml iconv -f ISO-8859-1 -t UTF-8 testi.xsd >testi_utf8.xsd Iconv-ohjelma ei tee mitään muita muutoksia muunnettaviin tiedostoihin eikä esimerkiksi päivitä XML-muotoisten tiedostojen otsikkoriviä. Tässä nimenomaisessa tapauksessa ogr2ogr-ohjelman luomissa tiedostoissa oli valmiiksi sopivalla tavalla väärät otsikot, jotka väittivät sisällön olevan UTF-8-koodattua, vaikka se ei ollutkaan. Iconv-muunnoksen jälkeen otsikkorivi pitää paikkansa, joten sitä ei tarvitse erikseen muokata.

Tehokäyttäjä tekee komentojonoja Vaikka tämä ohje onkin pitkä, niin Mapinfo-tiedostojen muuntaminen ogr2ogr- ja iconv-ohjelmilla Spatialite-muotoon on hyvin nopeaa sitten, kun tietää mitä on tekemässä. Seuraavassa on tulokset kaikkien seutukartta-aineistoon kuuluvien 60 karttatason muuntamiseen kuluneesta ajasta vaiheittain. Muunnos tehtiin vuoden 2004 mallia olevalla yksiproserrorisella Windows-koneella ja sekä lähtö- että tulosaineistot olivat samalla ulkoisella USB-levyllä. Käytetyt komentojonot ovat tämän ohjeen liitteenä, ja kokeen voi helposti toistaa niiden avulla. Vaihe komentojono kulunut aika TAB GML tee_gml.bat 25 sekuntia ISO-8859-1 -> UTF-8 aja_iconv.bat 12 sekuntia GML -> Spatialite gml_sqlite.bat 65 sekuntia yhteensä 102 sekuntia Oheisesta kuvaruutukaappauksesta näkyy, että ööt ja äät näkyvät kuten pitääkin sekä ominaisuustietojen nimissä että niiden arvoissa. Toisesta kuvaruutukaappauksesta nähdään, että teksisesti onnistunut muunnos tiedostomuodosta toiseen ei korjaa alkuperäisessä aineistossa mahdollisesti olleita topologiavirheitä.

Satunnainen käyttäjä käyttää Quantum GIS:iä Ja saattaa kärsiä projektiovirheistä! Yksittäisen seutukartta-aineiston tason muuntaminen onnistuu helposti ja suoraviivaisesti Quantum GIS-ohjelmalla. Se avaa Mapinfo-tiedostot suoraan tiedostonavaustoiminnolla ja antaa käyttäjän valita tiedostossa käytetyn merkistökoodauksen suoraan valikosta. Ominaisuustietojen nimet ja arvot näkyvät tuonnin jälkeen oikein Tallennusvalikosta voidaan valita tallennusmuoto, koordinaattijärjestelmä ja merkistökoodaus. Koordinaattijärjestelmän vaihtamisesa on kuitenkin huomattava, että vain KKJ-kaistojen välillä tehtävä muunnos menee varmasti oikein. Jos Quantum GIS käyttää vanhempaa GDAL versiota kuin 1.9.0, niin erimerkiksi muunnokset WGS84-järjestelmään tai ETRS-TM35FIN:iin (EPSG:4326 ja EPSG:3067) menevät varmasti väärin. Tätä aihetta käsittelee Tee muunnokset KKJ<->TM35FIN oikein. Alla oleva toimenpide voi siis tuottaa väärän tuloksen.

Liitteet tee_gml.bat =========== time @ECHO off ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 A_es_pie.GML.temp -dsco XSISCHEMA=OFF A_es_pie.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 A_es_suu.GML.temp -dsco XSISCHEMA=OFF A_es_suu.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_es_til.gml.temp -dsco XSISCHEMA=OFF a_es_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_hk_osa.gml.temp -dsco XSISCHEMA=OFF a_hk_osa.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_hk_per.gml.temp -dsco XSISCHEMA=OFF a_hk_per.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_hk_pie.gml.temp -dsco XSISCHEMA=OFF a_hk_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_hk_suu.gml.temp -dsco XSISCHEMA=OFF a_hk_suu.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_hy_pie.gml.temp -dsco XSISCHEMA=OFF a_hy_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_hy_suu.gml.temp -dsco XSISCHEMA=OFF a_hy_suu.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_hy_til.gml.temp -dsco XSISCHEMA=OFF a_hy_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ja_pie.gml.temp -dsco XSISCHEMA=OFF a_ja_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ja_til.gml.temp -dsco XSISCHEMA=OFF a_ja_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ka_pie.gml.temp -dsco XSISCHEMA=OFF a_ka_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ka_til.gml.temp -dsco XSISCHEMA=OFF a_ka_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ke_pie.gml.temp -dsco XSISCHEMA=OFF a_ke_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ke_til.gml.temp -dsco XSISCHEMA=OFF a_ke_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ki_pie.gml.temp -dsco XSISCHEMA=OFF a_ki_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ki_suu.gml.temp -dsco XSISCHEMA=OFF a_ki_suu.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ki_til.gml.temp -dsco XSISCHEMA=OFF a_ki_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_kunta.gml.temp -dsco XSISCHEMA=OFF a_kunta.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ma_pie.gml.temp -dsco XSISCHEMA=OFF a_ma_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_ma_til.gml.temp -dsco XSISCHEMA=OFF a_ma_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_nu_pie.gml.temp -dsco XSISCHEMA=OFF a_nu_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_nu_suu.gml.temp -dsco XSISCHEMA=OFF a_nu_suu.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_nu_til.gml.temp -dsco XSISCHEMA=OFF a_nu_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_pkspie.gml.temp -dsco XSISCHEMA=OFF a_pkspie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_pkstil.gml.temp -dsco XSISCHEMA=OFF a_pkstil.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_pksuur.gml.temp -dsco XSISCHEMA=OFF a_pksuur.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_po_til.gml.temp -dsco XSISCHEMA=OFF a_po_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_si_pie.gml.temp -dsco XSISCHEMA=OFF a_si_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_tu_pie.gml.temp -dsco XSISCHEMA=OFF a_tu_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_tu_suu.gml.temp -dsco XSISCHEMA=OFF a_tu_suu.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_tu_til.gml.temp -dsco XSISCHEMA=OFF a_tu_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_va_kos.gml.temp -dsco XSISCHEMA=OFF

a_va_kos.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_va_suu.gml.temp -dsco XSISCHEMA=OFF a_va_suu.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_vi_pie.gml.temp -dsco XSISCHEMA=OFF a_vi_pie.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_vi_suu.gml.temp -dsco XSISCHEMA=OFF a_vi_suu.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 a_vi_til.gml.temp -dsco XSISCHEMA=OFF a_vi_til.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 Copyrig.GML.temp -dsco XSISCHEMA=OFF Copyrig.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 l_jasema.gml.temp -dsco XSISCHEMA=OFF l_jasema.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 l_jrata.gml.temp -dsco XSISCHEMA=OFF l_jrata.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 l_kiitor.gml.temp -dsco XSISCHEMA=OFF l_kiitor.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 l_metras.gml.temp -dsco XSISCHEMA=OFF l_metras.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 l_metror.gml.temp -dsco XSISCHEMA=OFF l_metror.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 l_tiest2.gml.temp -dsco XSISCHEMA=OFF l_tiest2.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 l_tiesto.gml.temp -dsco XSISCHEMA=OFF l_tiesto.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 Maankay2.GML.temp -dsco XSISCHEMA=OFF Maankay2.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 m_asalue.gml.temp -dsco XSISCHEMA=OFF m_asalue.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 m_jarvet.gml.temp -dsco XSISCHEMA=OFF m_jarvet.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 m_joet.gml.temp -dsco XSISCHEMA=OFF m_joet.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 m_meri.gml.temp -dsco XSISCHEMA=OFF m_meri.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 m_rantav.gml.temp -dsco XSISCHEMA=OFF m_rantav.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 m_teolal.gml.temp -dsco XSISCHEMA=OFF m_teolal.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 m_vihral.gml.temp -dsco XSISCHEMA=OFF m_vihral.tab --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 N_KOS_R.GML.temp -dsco XSISCHEMA=OFF N_KOS_R.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 N_KOS_S.GML.temp -dsco XSISCHEMA=OFF N_KOS_S.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 N_MERI_R.GML.temp -dsco XSISCHEMA=OFF N_MERI_R.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 N_MERI_S.GML.temp -dsco XSISCHEMA=OFF N_MERI_S.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 N_PAIK_R.GML.temp -dsco XSISCHEMA=OFF N_PAIK_R.TAB --config OGR_FORCE_ASCII no ogr2ogr -f GML -dsco XSISCHEMA=OFF -t_srs epsg:3067 N_PAIK_S.GML.temp -dsco XSISCHEMA=OFF N_PAIK_S.TAB --config OGR_FORCE_ASCII no ECHO ON time aja_iconv.bat ============= time @ECHO OFF iconv -f ISO-8859-1 -t UTF-8 A_es_pie.GML.temp >A_es_pie.GML iconv -f ISO-8859-1 -t UTF-8 A_es_suu.GML.temp >A_es_suu.GML iconv -f ISO-8859-1 -t UTF-8 a_es_til.gml.temp >a_es_til.gml iconv -f ISO-8859-1 -t UTF-8 a_hk_osa.gml.temp >a_hk_osa.gml iconv -f ISO-8859-1 -t UTF-8 a_hk_per.gml.temp >a_hk_per.gml iconv -f ISO-8859-1 -t UTF-8 a_hk_pie.gml.temp >a_hk_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_hk_suu.gml.temp >a_hk_suu.gml iconv -f ISO-8859-1 -t UTF-8 a_hy_pie.gml.temp >a_hy_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_hy_suu.gml.temp >a_hy_suu.gml iconv -f ISO-8859-1 -t UTF-8 a_hy_til.gml.temp >a_hy_til.gml iconv -f ISO-8859-1 -t UTF-8 a_ja_pie.gml.temp >a_ja_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_ja_til.gml.temp >a_ja_til.gml iconv -f ISO-8859-1 -t UTF-8 a_ka_pie.gml.temp >a_ka_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_ka_til.gml.temp >a_ka_til.gml iconv -f ISO-8859-1 -t UTF-8 a_ke_pie.gml.temp >a_ke_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_ke_til.gml.temp >a_ke_til.gml iconv -f ISO-8859-1 -t UTF-8 a_ki_pie.gml.temp >a_ki_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_ki_suu.gml.temp >a_ki_suu.gml

iconv -f ISO-8859-1 -t UTF-8 a_ki_til.gml.temp >a_ki_til.gml iconv -f ISO-8859-1 -t UTF-8 a_kunta.gml.temp >a_kunta.gml iconv -f ISO-8859-1 -t UTF-8 a_ma_pie.gml.temp >a_ma_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_ma_til.gml.temp >a_ma_til.gml iconv -f ISO-8859-1 -t UTF-8 a_nu_pie.gml.temp >a_nu_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_nu_suu.gml.temp >a_nu_suu.gml iconv -f ISO-8859-1 -t UTF-8 a_nu_til.gml.temp >a_nu_til.gml iconv -f ISO-8859-1 -t UTF-8 a_pkspie.gml.temp >a_pkspie.gml iconv -f ISO-8859-1 -t UTF-8 a_pkstil.gml.temp >a_pkstil.gml iconv -f ISO-8859-1 -t UTF-8 a_pksuur.gml.temp >a_pksuur.gml iconv -f ISO-8859-1 -t UTF-8 a_po_til.gml.temp >a_po_til.gml iconv -f ISO-8859-1 -t UTF-8 a_si_pie.gml.temp >a_si_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_tu_pie.gml.temp >a_tu_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_tu_suu.gml.temp >a_tu_suu.gml iconv -f ISO-8859-1 -t UTF-8 a_tu_til.gml.temp >a_tu_til.gml iconv -f ISO-8859-1 -t UTF-8 a_va_kos.gml.temp >a_va_kos.gml iconv -f ISO-8859-1 -t UTF-8 a_va_suu.gml.temp >a_va_suu.gml iconv -f ISO-8859-1 -t UTF-8 a_vi_pie.gml.temp >a_vi_pie.gml iconv -f ISO-8859-1 -t UTF-8 a_vi_suu.gml.temp >a_vi_suu.gml iconv -f ISO-8859-1 -t UTF-8 a_vi_til.gml.temp >a_vi_til.gml iconv -f ISO-8859-1 -t UTF-8 Copyrig.GML.temp >Copyrig.GML iconv -f ISO-8859-1 -t UTF-8 l_jasema.gml.temp >l_jasema.gml iconv -f ISO-8859-1 -t UTF-8 l_jrata.gml.temp >l_jrata.gml iconv -f ISO-8859-1 -t UTF-8 l_kiitor.gml.temp >l_kiitor.gml iconv -f ISO-8859-1 -t UTF-8 l_metras.gml.temp >l_metras.gml iconv -f ISO-8859-1 -t UTF-8 l_metror.gml.temp >l_metror.gml iconv -f ISO-8859-1 -t UTF-8 l_tiest2.gml.temp >l_tiest2.gml iconv -f ISO-8859-1 -t UTF-8 l_tiesto.gml.temp >l_tiesto.gml iconv -f ISO-8859-1 -t UTF-8 Maankay2.GML.temp >Maankay2.GML iconv -f ISO-8859-1 -t UTF-8 m_asalue.gml.temp >m_asalue.gml iconv -f ISO-8859-1 -t UTF-8 m_jarvet.gml.temp >m_jarvet.gml iconv -f ISO-8859-1 -t UTF-8 m_joet.gml.temp >m_joet.gml iconv -f ISO-8859-1 -t UTF-8 m_meri.gml.temp >m_meri.gml iconv -f ISO-8859-1 -t UTF-8 m_rantav.gml.temp >m_rantav.gml iconv -f ISO-8859-1 -t UTF-8 m_teolal.gml.temp >m_teolal.gml iconv -f ISO-8859-1 -t UTF-8 m_vihral.gml.temp >m_vihral.gml iconv -f ISO-8859-1 -t UTF-8 N_KOS_R.GML.temp >N_KOS_R.GML iconv -f ISO-8859-1 -t UTF-8 N_KOS_S.GML.temp >N_KOS_S.GML iconv -f ISO-8859-1 -t UTF-8 N_MERI_R.GML.temp >N_MERI_R.GML iconv -f ISO-8859-1 -t UTF-8 N_MERI_S.GML.temp >N_MERI_S.GML iconv -f ISO-8859-1 -t UTF-8 N_PAIK_R.GML.temp >N_PAIK_R.GML iconv -f ISO-8859-1 -t UTF-8 N_PAIK_S.GML.temp >N_PAIK_S.GML ECHO ON time gml_sqlite.bat ============== time @echo off ogr2ogr -f SQLite -dsco spatialite=yes -dsco init_with_epsg=yes -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite A_es_pie.GML -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite A_es_suu.GML -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_es_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_hk_osa.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_hk_per.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_hk_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_hk_suu.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_hy_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_hy_suu.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_hy_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ja_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ja_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ka_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ka_til.gml -nlt polygon

ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ke_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ke_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ki_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ki_suu.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ki_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_kunta.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ma_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_ma_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_nu_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_nu_suu.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_nu_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_pkspie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_pkstil.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_pksuur.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_po_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_si_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_tu_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_tu_suu.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_tu_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_va_kos.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_va_suu.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_vi_pie.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_vi_suu.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite a_vi_til.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite Copyrig.GML -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite l_jasema.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite l_jrata.gml -nlt multilinestring ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite l_kiitor.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite l_metras.gml -nlt polygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite l_metror.gml -nlt linestring ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite l_tiest2.gml -nlt multilinestring ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite l_tiesto.gml -nlt multilinestring ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite Maankay2.GML -nlt multipolygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite m_asalue.gml -nlt multipolygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite m_jarvet.gml -nlt multipolygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite m_joet.gml -nlt multipolygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite m_meri.gml -nlt multipolygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite m_rantav.gml -nlt multilinestring ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite m_teolal.gml -nlt multipolygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite m_vihral.gml -nlt

multipolygon ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite N_KOS_R.GML -nlt point ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite N_KOS_S.GML -nlt point ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite N_MERI_R.GML -nlt point ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite N_MERI_S.GML -nlt point ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite N_PAIK_R.GML -nlt point ogr2ogr -f SQLite -update -gt 2048 -a_srs epsg:3067 pk_seutukartta.sqlite N_PAIK_S.GML -nlt point ECHO ON time