.DTM con risoluzione a 5 metri per tutti i Calabresi!

Un articolo veloce come lo script che allego. Se vi siete imbattuti nel Geoportale della Regione Calabria avrete notato sicuramente la sezione OpenData. Tutti i dati sono scaricabili liberamente e si trovano all’interno di un server FTP. Non è complicato scaricare tutto il necessario utilizzando un client FTP, ma mi piaceva condividere un piccolo script scritto in R che consente di scaricare ed unire (mosaic) in un colpo solo tutti gli elementi del DTM a livello comunale.

Come funziona? Lo script crea una funzione nella sessione di lavoro di R, alla funzione vanno specificati due argomenti: il nome del Comune ed il percorso al quadro di unione. Una volta eseguita viene creata una cartella ‘download’ nella directory corrente all’interno della quale saranno scaricati i file *.img relativi agli elementi del DTM. Gli elementi vengono selezionati sulla base di un’intersezione spaziali tra il limite amministrativo del Comune scelto ed il quadro di unione (link sotto) degli elementi del DTM. Una volta terminato il processo di scarico, gli elementi vengono “mosaicati” per ottenere un unico file in formato GeoTIFF.

Di seguito un esempio di utilizzo della funzione per scaricare ed ottenere un unico file georeferenziato in formato GeoTiff del comune di Badolato (CZ):

> download.dtm.calabria('BADOLATO', "/Users/slarosa/Downloads/Q_UNIONE_05.shp")

semplice vero?

Ecco lo script:


download.dtm.calabria <- function(comune, qu) {
require("RCurl", quietly = TRUE)
require(downloader, quietly = TRUE)
require(rgdal, quietly = TRUE)
require(gdalUtils, quietly = TRUE)
if (missing(comune))
stop("Error: the 'comune' argument is mandatory.")
if (missing(qu))
stop("Error: the 'qu' argument is mandatory.")
dir.out <- paste0('download/')
dir.create(dir.out, showWarnings = FALSE)
url <- "ftp://ftpopendata:OPENDATA2013@geoportale.regione.calabria.it/DTM5X5/"
wfs.url <- 'WFS:http://wms.pcn.minambiente.it/ogc?map=/ms_ogc/wfs/LimitiAmministrativi_2011.map&version=1.0.0&request=GetFeature&typeName=UA.UNITAAMMINISTRATIVE.COMUNI'
wfs.filter <- paste0(
'&filter=<Filter><PropertyIsEqualTo><PropertyName>comune</PropertyName><Literal>',
comune,
'</Literal></PropertyIsEqualTo></Filter>'
)
grid <- readOGR(qu)
proj4string(grid) <- CRS('+init=epsg:32633')
ogr2ogr(
paste0(wfs.url, wfs.filter),
file.path(getwd(), dir.out),
"UA.UNITAAMMINISTRATIVE.COMUNI",
f = "ESRI Shapefile"
)
shp <- readOGR(paste0(dir.out, "UA.UNITAAMMINISTRATIVE.COMUNI.shp"), stringsAsFactors = FALSE)
shp <- spTransform(shp, CRS('+init=epsg:32633'))
grid.intersection <- gIntersection(grid, shp, byid = TRUE)
grid <- grid[grid.intersection, ]
cnt <- 1
for (i in seq(dim(grid@data)[1])) {
res <- try(download(paste0(url,
"grid", grid@data$elemento[i], '.img'),
paste0(dir.out, "grid", grid@data$elemento[i], '.img'),
mode = "wb"))
if (class(res) == 'try-error') {
print('ERROR')
}
print(paste0(cnt, ' of ', dim(grid@data)[1]))
cnt <- cnt + 1
}
raster.files <- list.files(
path = dir.out,
full.names = TRUE,
pattern = "^grid",
all.files = FALSE
)
mosaic_rasters(
gdalfile = raster.files,
dst_dataset = paste0(dir.out, "DTM5M.tif"),
of = "GTiff",
a_srs = '+init=epsg:32633 +proj=utm +zone=33 +datum=WGS84 +units=m +no_defs +ellps=WGS84 '
)
tmp.file <-
list.files(path = dir.out,
pattern = "UA.UNITAAMMINISTRATIVE.COMUNI|.img",
full.names = T)
file.remove(tmp.file)
}

ed un piccolo video:

ed anche lo shapefile relativo al quadro di unione: link

Advertisement

.una notte a guardare Geoportali: non è un belvedere

NdR: questo post è una reazione chimica generata da 4 elementi: la rosa, la tempesta, il Pi greco e l’aborruso

Introduzione

Il web consente di fare partire effetti domino inaspettati. Per fortuna delle volte sono proprio belli. L’onda di oggi l’ha sollevata Totò, segnalando che il Geoportale della Regione Siciliana (anzi uno dei due geoportali) fosse in manutenzione. Continue reading “.una notte a guardare Geoportali: non è un belvedere”

.R come l’Inferno di Dante

Quando in un libro leggi frasi del tipo:

The author thanks D. Alighieri for useful comments.

sei costretto a leggerlo fino alla fine (non è una lettura facile, almeno per me). Ero alla ricerca di qualcosa che mi aiutasse a risolvere un dubbio su uno script scritto in R, mi sono tuffato su internet, strumento indispensabile, e sono sprofondato in un mondo infinito di manoscritti che raccontano vita morte e miracoli di questo linguaggio ormai ampiamente riconosciuto dal mondo scientifico a livello internazionale. Continue reading “.R come l’Inferno di Dante”

.downdem script: un modo alternativo per scaricare il DTM (20m) del Geoportale Nazionale

Per lavoro utilizzo abbastanza frequentemente alcuni script (procedure automatizzate e personalizzate) per velocizzare le attività che svolgo quotidianamente, i quali si rivelano molto utili quando il tempo a disposizione è veramente poco. Tra questi ce n’è uno in particolare che mi piacerebbe condividere e riguarda uno script per scaricare il DTM del Geoportale Nazionale. Continue reading “.downdem script: un modo alternativo per scaricare il DTM (20m) del Geoportale Nazionale”

.tutte le schede monografiche dei punti fiduciali in un Bot Telegram

Nell’attesa che l’Agenzia delle Entrate metta a disposizione di chiunque i suoi dati, attraverso dei servizi aperti e liberamente accessibili a tutti, ho creato un Bot Telegram per ricercare e scaricare le schede monografiche dei punti fiduciali per l’intero territorio nazionale. E che sia di buon auspicio per rendere i servizi catastali dell’Agenzia delle Entrate sempre più open. Continue reading “.tutte le schede monografiche dei punti fiduciali in un Bot Telegram”

.quanti Sistemi di Riferimento conosci? Io almeno 6000!

Sono incappato in questo sito epsg.io nei giorni scorsi e l’ho trovato molto interessante oltre che utile. Si tratta di un progetto libero e a codice aperto disponibile anche su Github, che consente di recuperare molte informazioni sulla quasi totalità dei sitemi di riferimento spaziali (CRS – Coordinate Reference System) esistenti utilizzati in tutto il mondo, sia globali che locali. Il numero di CRS presenti attualmente è quello dell’archivio EPSG (European Petroleum Survey Group), divenuto ormai uno standard internazionale per la codifica dei sistemi geodetici. Continue reading “.quanti Sistemi di Riferimento conosci? Io almeno 6000!”