GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

Samankaltaiset tiedostot
Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

4. Lausekielinen ohjelmointi 4.1

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Koodaamme uutta todellisuutta FM Maarit Savolainen

Tähtitieteen käytännön menetelmiä Kevät 2009

Ohjelmointi 1 / syksy /20: IDE

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Johdatus ArcGIS-ohjelmistoon

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

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

Ohjelmointi 1. Kumppanit

Luento 4. Timo Savola. 21. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

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

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

Ohjelmoinnin perusteet Y Python

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

5. HelloWorld-ohjelma 5.1

Zeon PDF Driver Trial

C-ohjelmointikielen perusteet, osa 1

Tie- ja puustotietojen käsittely paikkatietosovelluksilla

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Ohjelmoinnin peruskurssi Y1

4. Lausekielinen ohjelmointi 4.1

Ohjelmoinnin perusteet Y Python

Omia appeja AppInventorilla. Jenna Tuominen Resurssikeskus Linkki, LumA, HY

Johdatus ohjelmointiin

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

5. HelloWorld-ohjelma 5.1

MAANMITTAUSLAITOKSEN ILMAISTEN KARTTOJEN TULOSTAMINEN QUANTUM GIS -OHJELMALLA

Ohjelmoinnin perusteet Y Python

GIS-ANALYYSI PAIKKATIETOIKKUNASSA. Matias Järvinen 2019

C# Windows ohjelmointi perusopas

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Pedacode Pikaopas. Web-sovelluksen luominen

KMTK-tietokannan yleistys ja monitasoprosessit (KMTK-Yleistys)

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

Kemian tekniikan kandidaattiohjelman ohjelmointikurssi (5 op)

ILMAINEN KARTTATIETO

11/20: Konepelti auki

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

ASCII-taidetta. Intro: Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Ohjelmoinnin perusteet Y Python

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Add-In:n asennus tehdään omalle koneelle (ArcGIS asennettu omalle koneelle). HUOM! Verkkolevyltä asennus ei onnistu!

Osa 7: Hahmojen ohjelmointi ja hienosäätö

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Ohjelmoinnin perusteet Y Python

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Asiointipalvelun ohje

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Mylly: Uusi tapa ka sitella teksti- ja puheaineistoa helposti ja tehokkaasti. Mietta Lennes ja Jussi Piitulainen FIN-CLARIN, Helsingin yliopisto

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

IR-lämpömittarityypit

IR-lämpömittarityypit

Ohjelmointityökalu Scratch

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Tie- ja puustotietojen käsittely paikkatietosovelluksilla

Vedä ja pudota Maamittauslaitoksen JPEG2000-ortoilmakuva GeoTIFF-muotoon

Ohjelmoinnin perusteet Y Python

Racket ohjelmointia II. Tiina Partanen 2015

MetropAccess- Workshop 2014

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Ohjelmoinnin perusteet Y Python

Moodle-oppimisympäristö

VisualStudio Pikaopas, osa 1: WEB-sivujen suunnittelu

Tilastokeskuksen rajapintapalveluiden käyttöönotto QGIS-ohjelmistossa

Ohjelmoinnin perusteet Y Python

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmoinnin perusteet Y Python

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

LAITTEISTOKOKOONPANON SELVITTÄMINEN JA AJURIEN ASENTAMINEN

Ohjelmointileirin järjestäminen

ASTERI KIRJANPITO KIELIVERSION OHJE

Tentti erilaiset kysymystyypit

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

OpenJUMP ja OpenStreetMap-reititys

Pedacode Pikaopas. Web Service asiakasohjelman luominen

7. Näytölle tulostaminen 7.1

Ohjelmoinnin perusteet Y Python

Autentikoivan lähtevän postin palvelimen asetukset

Transkriptio:

GIS-automatisointi ja ohjelmointi/skriptaus Harri Antikainen

Mistä nyt puhutaan? Automatisointi: Mikä tahansa tapa teettää tietokoneella asioita ilman että käyttäjän tarvitsee tehdä muuta kuin laittaa prosessi alulle ArcGIS:ssä automatisointi tapahtuu joko ModelBuilderin avulla tai ohjelmoimalla/skriptaamalla Ohjelmointi/skriptaus: Koodin kirjoittamista Maallikon kannalta ohjelmointi ja skriptaus käytännössä sama asia Kuitenkin keskeinen ero löytyy: o Ohjelmoinnissa koodi käännetään konekielelle ja yleensä koodi vaikeaa laatia o Skriptauksessa koodia ei käännetä, yleensä myös paljon yksinkertaisempaa o Ohjelmoimalla toteutettu koodi toimii yleensä skriptikoodia tehokkaammin 2

GIS-automatisointi ja ohjelmointi/skriptaus Yleensä ottaen automatisointi tulee aiheelliseksi jos useista vaiheista koostuva toimintoketju on tarpeen suorittaa useita kertoja Automatisoinnin toteuttamisen vaatima aika ja vaiva on pienempi kuin prosessin toistaminen manuaalisesti käsin Ohjelmointi/skriptaus on erityisesti tarpeen kun: automatisoitavaan tehtävään liittyy monimutkaista logiikkaa halutaan laajentaa ArcGIS:n toiminnallisuutta halutaan toteuttaa kokonaan uusia GIS-toimintoja 3

ModelBuilder ModelBuilder tarjoaa graafisen suunnittelukäyttöliittymän, jolla voidaan muodostaa erilaisia toimintoketjuja (geoprosesseja) Kuvake löytyy ArcMapin ikoniriviltä: 4

ModelBuilder Tosin itse teen mieluummin seuraavasti: 1) Luodaan ensin ArcCatalog-näkymän johonkin hakemistoon uusi toolbox (Hiiren oikea New Toolbox), tai etsitään olemassa oleva toolbox 2) Sitten lisätään toolboxin alle uusi malli (hiiren oikea New Model...) 3) Sitten vain aletaan tekemään mallia Tämä menettely siksi että mallin pitää joka tapauksessa olla jonkin toolboxin alla: on parempi että mallin tekee heti oikeaan paikkaan 5

ModelBuilder - esimerkki Tehdään ModelBuilderilla malli joka toteuttaa seuraavan geoprosessin : Muodostetaan pisteiden (esim. pesäpaikat) ympärille bufferit, joiden mukaan sitten leikataan piparimuotin tavoin alueet polygonitasolta (esim. maankäyttötyypit) 6

ModelBuilder ModelBuilder-näkymään voidaan tuoda ArcToolboxin työkaluja hiirellä vetämällä 7

ModelBuilder ModelBuilder-näkymään otetut työkalut voidaan kytkeä toisiinsa Connect toiminnolla, esim. tässä Buffer-työkalun tulos voidaan kytkeä suoraan syötteeksi Clipille Ole tarkkana, että teet kytköksen oikeiden parametrien välille!! Tässä tapauksessa Buffer tuottaa alueita joilla halutaan leikata toisia alueita, joten siksi Buffer-analyysin tulos on kytkettävä nimenomaan Clipin Clip Features -kohtaan Connect 8

ModelBuilder Niistä mallin parametreista, joita käyttäjän halutaan voivan kontrolloida, tehdään mallin muuttujia hiiren oikea Make Variable From Parameter parametrin nimi 9

ModelBuilder Kaikki edellisessä vaiheessa muuttujiksi määritellyt syötteet sekä ne tulosteet, joiden nimen käyttäjä saa määrätä, asetetaan mallin parametreiksi (Model Parameter) Parametriksi määritellyn pallukan viereen tulee tällöin näkyviin P 10

ModelBuilder Valmis malli, jossa parametreina on Buffertyökalun syötteeksi tuleva (piste)taso ja bufferin leveys, leikattava rasteri sekä tuloksena syntyvä bufferitaso Parametrien nimet on myös muutettu (Rename...) selkeämmiksi Muista tallentaa malli! (Save) 11

ModelBuilder Malli voidaan nyt ajaa toolboxinsa alta, jolloin käyttäjä pääsee antamaan mallille parametreiksi määritellyt syötteet Kahden toiminnon ajaminen onnistuu nyt siis yhdellä kertaa Turhat välivaiheet jäävät siten pois 12

Ohjelmointi ja skriptaus ArcGIS:iä voi ohjelmoida mm..net:llä, C++:lla ja Javalla, mutta tämä menee jo hyvin edistyneelle tasolle Yleisimmin ohjelmointitarpeet täyttää Python-kielinen skriptaus Python on yleinen ohjelmointikieli, joka ei itsessään ole mitenkään sidoksissa ArcGIS:in Python on suhteellisen yksinkertainen kieli, mutta ilman mitään ohjelmointikokemusta on vaikeaa lähteä toteuttamaan skriptausta Mainittakoon, että Python-skriptaus toimii myös ilmaisessa QGISohjelmistossa, mutta ArcGIS:lle ja QGIS:lle tehdyt skriptit eivät ole keskenään vaihdettavissa 13

Python Python-skripti on sinänsä tavallinen tekstitiedosto (tosin.pypäätteinen) jota voi kirjoittaa millä tahansa tekstieditorilla Kannattaa kuitenkin hyödyntää jotain koodieditoria, esim. IDLE 14

Python Esim. skripti, joka sanoo Huomenta jos kello vähemmän kuin 12, ja muussa tapauksessa Päivää Tuodaan (import) tarvittavat ohjelmistokirjastot: arcpy tarjoaa ArcGIS:n toiminnot käyttöön Pythonissa datetime puolestaan sisältää aikaan liittyviä toimintoja Selvitetään tämänhetkinen tunti ja tallennetaan se muuttujaan nykyinen_tunti If-else ehtorakenne, jossa tulostetaan arcpy:n AddMessagefunktiota käyttäen joko Huomenta! tai Päivää! riippuen nykyinen_tunti-muuttujan arvosta. Huomaa sisennykset! Pythonissa eri koodilohkot määritellään aina sisennysten avulla! 15

Python Esimerkkiskriptin tuottama tulostus ArcMapin Results-näkymässä: 16

ModelBuilder-esimerkki Python-skriptinä ModelBuilder-mallin voi eksportoida Python-skriptiksi Tätä skriptiä tosin editoitu eksporttauksen jälkeen 17

Python (+ ohjelmointi ylipäätään) ja GIS Pythonia (ja myös oikeaa ohjelmointia) käytetty monissa GIStutkimusryhmän hankkeissa Joissakin tutkimushankkeissa työ on jopa 90%:sti pelkkää skriptausta/ohjelmointia Omassa GIS-työssä olen tähän mennessä tehnyt ~ 40 ohjelmaa ~ 100 skriptiä Geoinformatiikassa ja GIS:ssä pärjää myös ilman ohjelmointitaitoa, mutta tällöin mahdollisuudet tehdä asioita ovat hyvin rajalliset Ohjelmointi ainakin jollakin tasolla on siten erittäin suositeltava taito! 18

Esimerkkiä tämänhetkisestä tutkimuksesta Hanke Kelan kanssa, 700.000 Kelan korvaamaa taksimatkaa sisältävä aineisto Tampereen alueelta Kuinka paljon säästetty matkoja yhdistämällä, kuinka paljon matkoja olisi voinut yhdistää vielä lisää? Skriptaamalla tehtyä (Python): Taksimatkan laskennallisen hinnan määrittäminen Jos yhdistetty kuljetus olisi ajettu erillinä kuljetuksina, mitä reitejä olisi silloin ajettu (ja kuinka paljon ne olisivat maksaneet)? Millaisia reittiyhdistelmiä yhdistelemättömistä taksimatkoista on löydettävissä (siten että lopputuloksena olisi ollut rahallinen säästö)? 19