OpenJUMP ja OpenStreetMap-reititys



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

OpenStreetMap-aineistojen haltuunotto GDAL:lla

GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla

Digiroad-aineiston 2018_01 haltuunotto

MatkailuMapathon

Listarakenne (ArrayList-luokka)

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

Käyttöohje: LAPIO latauspalvelu

Paikkatieto-PDF OpenStreetMap-aineistoista

Keravan karttapalvelun käyttöohje

Kuvien lisääminen ja käsittely

HELSINGIN YLIOPISTO TIEDEKASVATUS. helsinki.fi/tiedekasvatus v 1.2

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

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

MapInfo, GDAL ja ogr2ogr

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

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.

Oma kartta Google Maps -palveluun

Projektinhallintaa paikkatiedon avulla

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

Paikkatieto-ohjelmistot maataloudessa

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Harjoitustyö (TKO_2023)

Jypelin käyttöohjeet» Ruutukentän luominen

ILMAINEN KARTTATIETO

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

LOHJAN KAUPUNGIN KARTTAPALVELUN KÄYTTÖOHJEET

Ohjeet asiakirjan lisäämiseen arkistoon

ohjeita kirjautumiseen ja käyttöön

Public Account-tili on pysyvä, joten kannattaa käyttää mieluummin sitä kuin kaupallisen tilin kokeiluversiota.

Reitityksen ja realiaikatiedon virheelliset tilanteet

Senaatin kartaston karttalehtien georeferointi

Koko maan maastokartat ja GPS-sijaintitieto helposti Windows-tietokoneelle

Ohjelmoinnin peruskurssi Y1

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Helsingin seudun liikenteen reitit ja aikataulut Tässä.fi:ssä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Ohjelmoinnin perusteet Y Python

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

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

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

RATKI 1.0 Käyttäjän ohje

OpenStreetMap-reititys Spatialitellä ja OpenJUMP:lla

Sarjamuotoisten paikkatietotuotteiden lataaminen: 1. Siirrä tuote ensin kartalle Kartalle-painikkeella ja valitse haluamasi alue kartalta

Laskuharjoitus 9, tehtävä 6

Osallistavan suunnittelun kyselytyökalu

Java ja grafiikka. Ville Sundberg

Rovaniemen mediapankin käyttöohje

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

Cabas liitännän käyttö AutoFutur ohjelmassa

Viivojen pituuksien laskenta ja tilastot

Yleistä vektoreista GeoGebralla

Määrittelydokumentti

Tiedostojen siirto ja FTP - 1

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

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Selaimen kautta käytettävällä PaikkaOpin kartta-alustalla PaikkaOppi Mobiililla

Muistitikun liittäminen tietokoneeseen

Saavutettavuuden alueellinen tarkastelu eri kulkumuotojen matkaa-aikoihin perustuen

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

1 YLEISTÄ 1. 2 KARTAT yleistä Avoimien aineistojen tiedostopalvelu 2 3 KARTAN TEKEMINEN JA SIIRTÄMINEN PUHELIMEEN 4

Gps-reittien lataaminen Lipas liikuntapaikat.fi - järjestelmään

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Tie- ja puustotietojen käsittely paikkatietosovelluksilla

Gimp 3. Polkutyökalu, vektori / rasteri, teksti, kierto, vääntö, perspektiivi, skaalaus (koon muuttaminen) jne.

Maanmittauslaitoksen vanhojen painettujen karttojen georeferointi

Ohjeistus yhdistysten internetpäivittäjille

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.

VSP webmail palvelun ka yttö öhje

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

5. Sijainnin määrittäminen olemassa olevalle liikuntapaikalle

NXT Infrapuna-sensori

Fixcom Webmail ohje. Allekirjoitus. Voit lisätä yhden tai useamman allekirjoituksen.

SUOMEN PANKKIYHDISTYS

SMART Board harjoituksia 14 - Notebook 10 Gallerian käyttäminen Notebookissa Yritä tehdä tehtävät sivulta 1 ilman että katsot vastauksia.

SIVIILEIHIN KOHDISTUNEET KONFLIKTIT AFRIKASSA. Matias Järvinen 2019

Tasogeometriaa GeoGebran piirtoalue ja työvälineet

LAITTEISTOKOKOONPANON SELVITTÄMINEN JA AJURIEN ASENTAMINEN

Näin saat 365 päivän ajalta Freshest Data sisältöä NavionicsWeb Store nettikaupasta

Käyttöopas RoofCon Viewer

Pedanet oppilaan ohje Aleksanteri Kenan koulu Eija Arvola

Ohjelma on tarkoitettu pankkiyhteysohjelmalla vastaanotettujen Finvoiceverkkolaskujen

SSH Secure Shell & SSH File Transfer

Office 365 palvelujen käyttöohje Sisällys

Suvi Junes/Pauliina Munter Tietohallinto / Opetusteknologiapalvelut 2014

Lipas- järjestelmän tallennusohjeet, käyttöohjeet-kansio. Lipas- järjestelmä löytyy myös osoitteesta

Paikkatietoaineistojen muuntaminen GPS-kohdepisteiksi GDAL/OGR -ohjelmilla

Automaattitilausten hallinta

TYÖPAJA 1: Tasogeometriaa GeoGebran piirtoalue ja työvälineet

Mathcad 14.0 Single User -asennus

Ohjeita kirjan tekemiseen

Projektityö: Mobiiliajopäiväkirja. Mikko Suomalainen

Latuviitan Landsat-mosaiikki Itämeren alueelta

Vektoreita GeoGebrassa.

Tilauspalveluun pääsee osoitteessa

RATKI 1.0 Talousraportin käyttäjän ohje

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Transkriptio:

OpenJUMP ja OpenStreetMap-reititys Jukka Rahkonen, http://latuviitta.org Lisenssi Creative Commons Attribution 3.0 Unported Viimeksi muokattu 12. huhtikuuta 2013 Tiivistelmä Verkossa toimivat reitityspalvelut ottavat vastaan reitin alku- ja loppupisteen ja palauttavat sitten reitin. Lisähienouksina voi olla reititystavan valinta, esimerkiksi nopein tai lyhin reitti, tai autoiluun, pyöräilyyn tai jalankulkuun parhaiten sopiva reitti. Reitityspalvelun käyttöön tarvitaan siis kolme rakennuspalikkaa: 1. Väline, jolla voidaan antaa reitin alku- ja loppupisteet. 2. Väline, joka pyytää reitin reitityspalvelusta. 3. Väline, joka näyttää reitin. OpenJUMP-karttaohjelman avulla voidaan tehdä helposti mallisuoritus reitityspalveluiden käytöstä. Valmistelut Haetaan ja asennetaan OpenJUMP-ohjelmisto osoitteesta http://openjump.org Tallennetaan tämän ohjeen liitteessä 1. oleva BeanShell koodi tekstitiedostoksi, jolle annetaan nimi YOUR_routins.bsh. Viedään tämä tiedosto OpenJUMP:in Bean-työkaluhakemistoon \lib\ext\beantools. Samalla tavalla tallennetaan liitteen 2. koodi nimellä Get_HSL_Route.bsh. Vaihe 1: Alku- ja loppupisteiden antaminen Haetaan ensiksi hieman vektoritietoja, niin pystymme sijoittamaan itsemme kartalle alku- ja loppupisteiden antamista varten. Tässä esimerkissä koordinaatistona on käytettävä maantieteellisiä leveys- ja pituusasteita (EPSG:4326), mistä syystä vektoreiksi sopivat erinomaisesti OpenStreetMap-projektin shapefile-muotoiset vektorit, jotka voidaan ladata osoitteesta http://download.geofabrik.de/europe/finland-latest.shp.zip Geofabrikin zip-pakettiin kuuluu monia eri aineistoja. Tässä harjoituksessa emme tarvitse niitä kaikkia, ja siksi voidaan myös käyttää GDAL-ohjelmiston mahdollistamaa kätevää tapaa lukea ziptiedoston sisältä vain haluttu shapefile. Se onnistuu seuraavalla komennolla: ogr2ogr -f "ESRI Shapefle" roads.shp /vsizip/vsicurl/http://download.geofabrik.de/europe/finland-latest.shp.zip roads

Komento hakee Geofabrikin palvelimella olevan zip-tiedoston sisältä roads-nimisen paikkatietoaineiston ja tallentaa sen paikalliselle levylle nimellä roads.shp. Aineiston nimi on tunnettava; jos se ei ole ennestään tiedossa, niin listan saatavilla olevista tasoista saa komennolla ogrinfo -ro /vsizip/vsicurl/http://download.geofabrik.de/europe/finlandlatest.shp.zip Tämän komennon käyttäminen on enemmänkin kuin hauska temppu. Se nimittäin pystyy hakemaan OSM-tiet 187 megatavun zip-arkistosta niin, että verkkoliikennettä syntyy vain 77 megatavua (tiedostokoot 4. huhtikuuta 2013), eli tämä paljon fiksumpi tapa kuin hakea koko arkisto levylle ja purkaa sitten haluttu tiedosto siitä ulos. GDAL-työkalujen käytöstä ei tässä sen enempää. Tarkempia ohjeita on eräissä muissa Latuviitan paikkatieto-ohjeissa sekä tietysti GDAL:n omilla sivuilla http://gdal.org. Kun OpenStreetMap-vektoreita tai jotan muuta EPSG:4324-järjestelmässä olevaa aineistoa on hankittu, niin avataan aineisto OpenJUMP:issa. Lisätään OpenJUMP-kartalle uusi taso valikosta Tiedosto-Uusi-Taso tai valikosta, joka avautuu klikkaamalla hiiren oikealla näppeimellä karttatasoluettelon päällä. Valitaan muokkaustyökaluista työkalu Piirrä viiva ja piirretään viiva kahdella pisteellä. Mutkikkaan viivan piirtämisestä useilla taitepisteillä ei ole haittaa, mutta ei hyötyäkään, koska vain viivan ensimmäistä ja viimeistä pistettä tullaan käyttämään.

Vaihe 2. Reitin pyytäminen reitityspalvelusta Valmisteluvaiheessa tallennettu BeanShell-skripti löytyy valikosta Räätälöi-BeanTools- YOURS_routing ja se lähettää reittipyynnön reitityspalveluun.

Vaihe 3. Reitin näyttäminen kartalla Sama BeanShell-skripti, jolla reittipyyntö lähetettiin, osaa myös piirtää palvelun lähettämän reittiehdotuksen kartalle. Reitin haku välietappien kautta Jos halutaan etsiä reitti Helsingistä Lahden ja Kuhmoisten kautta Jyväskylään, niin se onnistuu piirtämällä kolme viivaa ja pyytämällä kolme reittiä: Helsinki-Lahti, Lahti-Kuhmoinen ja Kuhmoinen-Jyväskylä. OpenJUMP:in skripti tekee automaattisesti haun jokaisen aktiiviselta karttatasolta löytämänsä viivan alku- ja loppupisteiden perusteella. Muista siis tyhjentää taso, tai luoda uusia reittihakuja varten uusi karttataso, kun teet peräkkäisiä hakuja. Kun haluttu reitti on piirretty, valitaan YOURS_routing OpenJUMP:in valikosta ja katsotaan, miltä tulos näyttää.

Reitti haetaan reitityspalvelusta, joka tässä tapauksessa on http://www.yournavigation.org. Reittiä ei siis haeta OpenJUMP:ssa auki olevan vektoriaineiston perusteella. Kuitenkin, koska myös yournavigation.org käyttää reititykseen samaa OpenStreetMap-aineistoa, niin reitti seurailee tarkasti OpenJUMP:ssa näkyviä vektoreita. Seuraavasta kuva antaa esimerkin tämän vektoriaineiston tarkkuudesta. Paikka on teiden 24 ja 9 risteys Jämsässä, ja reitistä huomataan, että liikenneympyrä on mallinnettu aineistoon todellakin ympyränä eikä pelkkänä risteyspisteenä.

OpenStreetMap ja yournavigation tietävät myös, että lyhin reitti ei ole aina mahdollinen, kuten tässä, kun halutaan kääntyä Lahdentieltä länteen. Miten se toimii? YOURS_routing.bsh -skripti luo seuraavanlaisen http-pyynnön http://www.yournavigation.org/api/1.0/gosmore.php? format=kml& flat=61.84361791171761& flon=25.176709841366492& tlat=61.85041397176689& tlon=25.16789466202721& v=motorcar& fast=1& layer=mapnik Kaikki muut parametrit tulevat skriptistä aina samoina, mutta flat, flon, tlat ja tlon otetaan OpenJUMP:ssa piirrettyjen viivojen alku- ja loppupisteistä. Paremetrien merkitys selviää YOURSreititysohjelman wiki-sivulta http://wiki.openstreetmap.org/wiki/yours Esimerkissä haetaan autolla ajattavaa reittiä, pyöräilyreitin voisi etsiä muuttamalla parametrin v arvoksi bicycle. Ne on kaikki samanlaisia, eli esimerkkejä muista reitityspalveluista Kaikille reitityspalvelut toimivat samalla tavalla: niille annetaan alku- ja loppupisteet koordinaatteina (joko suoraan, tai sitten antamalla osoite, joka muunnetaan koordinaateiksi) ja mahdollisesti jotain lisäparametrejä. Otetaan toiseksi esimerkiksi pyöräilyn ja kävelyn reittiopas,

joka löytyy osoitteesta http://pk.hsl.fi/. Tätä palvelua varten täytyy kehittää seuraavan kaltaisia pyyntöjä: http://pk.hsl.fi/getroute/? format=gpx& profile=kleroweighted& from=location*koordinaatti[2552242,6674964]*2552242*6674964& to=location*koordinaatti[2554424,6681402]*2554424*6681402 Tästä pyynnöstä täytyy huomata vain se, että koordinaatit näyttävät olevan Helsingin järjestelmän koordinaatteja, eli KKJ:n 2-kaistaa (EPSG:2392. Tallennetaan OpenJUMP:in BeanTools hakemistoon tällä kertaa liittessä 2.oleva skripti Get_HSL_Route.bsh ja hankitaan OpenJUMP:iin KKJ:n 2-kaistassa olevaa taustaaineistoa.

Tulos ei tällä kertaa näy kartalla, koska OpenJUMP ei osaa avata GPX-tiedostomuodossa tulevia reittiohjeita. Sen sijaan skripti on tehty kirjoittamaan tulosruutuun pyynnöt, jotka voidaan lähettää reitityspalveluun vaikkapa selaimella tai wget- tai curl-ohjelmalla. Tässä kuvassa näkyvät HSL:n palvelun lähettämät reitit, jotka on ensin tallennettu GPS-muodossa levylle ja muunnettu sitten ogr2ogr-ohjelmalla shapefile-muodoon, jotta se voidaan avata OpenJUMP:ssa.

Liite 1. YOURS_routing.bsh { import com.vividsolutions.jts.geom.*; import com.vividsolutions.jts.io.wktreader; import com.vividsolutions.jump.feature.*; import com.vividsolutions.jump.geom.envelopeutil; import com.vividsolutions.jump.workbench.model.*; import java.io.*; import java.net.url; fc = wc.getlayernamepanel().getselectedlayers()[0].getfeaturecollectionwrapper(); paths = new ArrayList();; count = 0; for (Iterator i = fc.getfeatures().iterator(); i.hasnext();) { Feature feature = (Feature) i.next(); LineString linestring = (LineString)feature.getGeometry(); URL url; try { // get URL content url = new URL("http://www.yournavigation.org/api/1.0/gosmore.php?format=kml&flat=" +linestring.getstartpoint().gety()+"&flon=" +linestring.getstartpoint().getx()+"&tlat=" +linestring.getendpoint().gety()+"&tlon=" +linestring.getendpoint().getx() +"&v=motorcar" +"&fast=1" +"&layer=mapnik"); print(url); URLConnection conn = url.openconnection(); // open the stream and put it into BufferedReader BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream())); String inputline; StringBuffer sb = new StringBuffer(); while ((inputline = br.readline())!= null) { sb.append(inputline).append("\n"); wkt = sb.tostring().replaceall("(?s).*<coordinates>\\s*", "LINESTRING(").replaceAll("(?s)\\s*</coordinates>.*", ")").replaceall("(?s)\\s+", "@").replaceall("(?s),", " ").replaceall("(?s)@", ","); print(wkt); bf = new BasicFeature(fc.getFeatureSchema()); bf.setgeometry(new WKTReader().read(wkt)); paths.add(bf); br.close(); if (count++ > 9) break; catch (MalformedURLException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); fc.addall(paths);

Liite 2. Get_HSL_Route.bsh { import com.vividsolutions.jts.geom.*; import com.vividsolutions.jump.feature.*; import com.vividsolutions.jump.geom.envelopeutil; import com.vividsolutions.jump.workbench.model.*; htmlframe = wc.workbench.frame.outputframe; htmlframe.createnewdocument(); htmlframe.settitle("output for gdal_translate"); fc = wc.getlayernamepanel().getselectedlayers()[0].getfeaturecollectionwrapper(); int j=1; for (Iterator i = fc.getfeatures().iterator(); i.hasnext();) { Feature feature = (Feature) i.next(); LineString linestring = (LineString)feature.getGeometry(); htmlframe.addtext("http://pk.hsl.fi/getroute/? format=gpx&profile=kleroweighted&from=location*koordinaatti[" +linestring.getstartpoint().getx()+", " +linestring.getstartpoint().gety()+"]" +"*"+linestring.getstartpoint().getx() +"*"+linestring.getstartpoint().gety() +"&to=location*koordinaatti[" +linestring.getendpoint().getx()+", " +linestring.getendpoint().gety()+"]" +"*"+linestring.getendpoint().getx() +"*"+linestring.getendpoint().gety() ); j++; wc.workbench.frame.flash(htmlframe); htmlframe.surface();