Ohessa minunkin puolestani otteita esityksestäni laivaseminaarissa 2018. Esittelin siellä pariakin avointa dataa. Toinen niistä koski sellaisia tieliikenneonnnettomuuksia (ja rautatieliikenneonnettomuuksia), joihin on virka-apupyyntönä kutsuttu riistakeskusten henkilöitä hoitelemaan "eläinuhreja" - käytännössä siis hirvi- ja peurakolaritapauksia. Aineisto on saatavana avoimena datana esimerkiksi vuodelta 2017 seuraavasta linkistä: https://oma.riista.fi/api/v1/anon/srva?calendarYear=2017 Jostain syystä survo GET komento ei tuohon linkkiin pure, vaan aineisto pitää hakea selaimen avulla, josta sen sitten voi tallentaa tekstitiedostoksi. Tiedoston rakenne on vain sikäli hankala, että se ei näy esim SHOW-komennolla, vaan edellyttää vähän TXTCONVia ennen kuin siitä saa Survo-kelpoista: * *TXTCONV koe.txt tmp2.txt *show tmp2.txt * * *CONVERSIONS: *D " * * *TXTCONV tmp2.txt tmp3.txt - vasta edellisen txtconvin jälkeen näkyy SHOWlla - oleellista siinä tuo rivinvaihtojen (char(13)char(10)) tuottaminen tiedostoon *SHOW TMP3.txt * *CONVERSIONS: *t "},{id" "char(13)char(10)id" *D [ *D ] *D { *D } *END * *.................... * *TXTCONV tmp3.txt tmp4.txt *SHOW tmp4.txt *CONVERSIONS: *t "id:" "" *t "rev:" "" *t "pointOfTime:" "" *t "eventName:" "" *t "eventType:" "" *t "gameSpeciesCode:" "" *t "geoLocation:latitude:" "" *t "longitude:" "" *t "totalSpecimenAmount:" "" *t "specimens:gender:" "" *t "age:" "" *t "gender:" "" *t "age:" "" *END * * *.................. Sitten aineiston voikin siirtää survo-tiedostoksi * *FILE SAVE tmp4.txt TO new tmp / DELIMITER=, REMOVE_QUOTES=1 SKIP_ERRORS=2 NAMES=- *file show tmp *............................................................................................................ * Aineistoa kannattaa muokkailla kuvaavammaksi nimeämällä muuttujia ja antamalla muutamille muuttujien arvoille selkokielisempiä arvoja classifyilla * *FILE UPDATE TMP * Copied from text file tmp4.txt *FIELDS: (active) * 1 NA_ 8 ID X1 (#####) * 2 NA_ 1 REV X2 (##) * 3 SA_ 29 T X3 * 4 SA_ 8 ENAME X4 * 5 SA_ 16 ETYPE X5 * 6 NA_ 8 LAJI X6 (######) * 7 NA_ 8 Y X7 (#######) * 8 NA_ 8 X X8 (######) * 9 NA_ 1 LKM X9 (##) * 10 SA_ 7 KN1 X10 * 11 SA_ 7 IK1 X11 * 12 SA_ 7 KN2 X12 * 13 SA_ 7 IK2 X13 *END * * * * *VAR ELAJI:S15=MISSING TO TMP * * *CLASSIFY TMP ELUKAT LAJI ELAJI * *CLASSIFICATION ELUKAT * 47484: kuusipeura * 47503: hirvi * 47507: metsäkauris * 47629: valkohäntäpeura * 47926: villisika *200556: metsäpeura *OTHERS: mikämikä * Saaliina on sitten aineisto, jossa n. 10 000 riviä, ja oleellisempana tietona karttasijainti onnettomuuspaikasta. Kartalle pisteet saa R:n paketin plotGoogleMapsin avulla. install.packages("plotGoogleMaps") R>library(plotGoogleMaps) * *VARS=ELAJI,T,ETYPE,X,Y,LKM * *FILE COPY TMP TO R>tmp / * * *R cur+1,x-1 *tm35fin <- CRS("+init=epsg:3067 +proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs") *coordinates(tmp) <- ~X+Y *proj4string(tmp) <- tm35fin *m <- plotGoogleMaps(tmp,filename="elut17.htm", mapTypeId='ROADMAP', streetViewControl= 'TRUE', control.width="0%") x *GOTO x */OPEN elut17.htm GoogleMapsi avautuminen kestää jonnin aikaa, onhan n 10 tuhannessa pisteessä plottaamista. Edellä oleva on toki kiva ominaisuus - mutta haluaisin tästä paljon enemmän. Tiedän, että R:ssa on rutkasti SpatialDatan käsittelyyn ominaisuuksia, mutta omat R-taitoni eivät toistaiseksi ole riittäneet seuraavaan: Eli tavoitteena olisi luokitella karttapisteet esimerkiksi kunnittain / tai maakunnittain. Eli esimerkiksi MML avoimen taustakartta-aineiston (jonka olen kyllä onnistunut siirtämään Survoon), tai muun vastaavan tiedon avulla, tutkimaan kunkin pisteen sijainti, minkä kunnan/maakunnan rajapisteiden polygonin sisällä piste sijaitsee - ja antamaan pisteelle vastaavan arvon, jolloin datan voi sitten aggrekoida kunnittain/maakunnittain. Jos joku tietää apuja tähän, niin otan tietoa mielelläni vastaan. :JVa |
Free forum by Nabble | Edit this page |