-
Notifications
You must be signed in to change notification settings - Fork 0
/
corso-r-sod16.Rmd
100 lines (62 loc) · 2.34 KB
/
corso-r-sod16.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
---
title: "Introduzione al trattamento e analisi dei geodati con R"
author: "Giacomo Gamba , Michele Ferretti, Andrea Zedda "
date: "8 maggio 2016"
output: html_document
---
In R ci sono diverse librerie che consentono il trattamento di geodati, uno dei piu' interessanti e' rgdal che ci permette di utilizzare le potenzialita' di gdal in R.
```{r}
#install.packages('rgdal)
library(rgdal)
```
Per caricare i file si utilizza la funzione readOGR
```{r}
regs <- readOGR("data/regioni", layer="regioni")
plot(regs)
```
Gli oggetti caricati diventano degli SpatialPolygonDataFrame.
Oltre a gli shapefile, e' possibile caricare anche altri formati geografici, ad esempio il geojson:
```{r}
piattaforme <- readOGR("data/piattaforme.geojson", layer = "OGRGeoJSON")
plot(piattaforme)
```
Visualizzare i spatialdataframe e' semplice utilizzando le fuznioni base di R
```{r}
plot(regs)
plot(piattaforme, col='red', pch=20, add=T)
```
Inoltre e' possibile ricavare uno *spatialdataframe* (spatialpointsdataframe) da un semplice csv contentente le informazioni sulle coordinate geografiche.
```{r}
#apro il csv
meteo.stations <- read.csv('data/stazioni.csv', stringsAsFactors = F)
#trasformo il csv in uno spatialdataframe
coordinates(meteo.stations) <- ~lon+lat
#assegno il sistema di riferimento di coordinate
crs.geo <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84") # geographical, datum WGS84
proj4string(meteo.stations) <- crs.geo # define projection system of our data
meteo.stations<-spTransform(meteo.stations, crs.geo)
plot(meteo.stations, pch=20, col='steelblue')
# proj4string(regs) <- crs.geo # define projection system of our data
# summary(coms.coord)
```
lo *spatialdataframe* ha uno slot dal quale e' possibile accedere ai dati delle eventuali variabili relative alle geometrie
```{r}
head(regs@data)
```
e' possibile quindi trattare i dati come un semplice dataframe
```{r}
trent <- subset(regs, cod_reg==4)
plot(trent)
```
dal subset possiamo fare operazioni di geoprocessing
```{r}
trent <- spTransform(trent, crs.geo)
ov<- sp::over( meteo.stations, trent)
meteo.stations@data <- cbind(ov, meteo.stations@data)
meteo.trent <- subset(meteo.stations, cod_reg==4)
plot(meteo.trent, col="red", pch=13)
```
possiamo anche scrivere il file risultante
```{r}
writeOGR(obj = meteo.trent, dsn = "meteo_trent.gjson", driver ="GeoJSON", layer='trent')
```