Crea un raster con informazioni georeferenziate in R


9

Facendo riferimento alla mia domanda precedente , come posso "geocodificare" / convertire - usando R - un'immagine raster generata in un formato che può essere mostrato come un livello su una mappa? In breve, sto mirando a ricreare i risultati del software commerciale SpatialKey ( screenshot ).

Sto usando un'istanza di GeoServer per ospitare i dati per le mappe, ma come posso incorporare la proiezione richiesta e coordinare le informazioni nell'immagine in modo che si allinei correttamente con la sua vera posizione geografica. La heatmap della densità è stata prodotta utilizzando dati spaziali.


Poiché questa è solo una domanda di programmazione, non è proprio sull'argomento. Hai guardato le informazioni sul pacchetto spatstat e il pdf del breve corso per vedere se è coperto lì? Sono sicuro che questo è già emerso e una rapida ricerca su Google fa apparire questa pertinente risposta R-help . Non sarei sorpreso se esistessero anche soluzioni più dirette con qualche ricerca in più.
Andy W,

Come hai creato l'immagine raster generata? Viene da un'altra applicazione o è stato creato in R?
Simbamangu,

Viene generato all'interno di R utilizzando la funzione image ().
Mimo,

x ha risoluzioni orizzontali e verticali disuguali. Tali dati non possono essere archiviati nel formato arc-ascii My x ha 4684, dimensione 1950, si lamenta della risoluzione. L'ho fatto lo stesso però. Buggy

Risposte:


15

Il pacchetto raster consente di creare raster arbitrari (dimensioni, proiezione) o utilizzare oggetti esistenti, come matrici; è quindi possibile assegnare proiezioni ed estensioni. La tua image()funzione accetta un argomento matrix che può essere utilizzato direttamente:

library(raster)    
## Create a matrix with random data & use image()
xy <- matrix(rnorm(400),20,20)
image(xy)

# Turn the matrix into a raster
rast <- raster(xy)
# Give it lat/lon coords for 36-37°E, 3-2°S
extent(rast) <- c(36,37,-3,-2)
# ... and assign a projection
projection(rast) <- CRS("+proj=longlat +datum=WGS84")
plot(rast)

È quindi possibile utilizzare writeRaster()con qualsiasi numero di formati, ad es

writeRaster(rast, "~/myraster.asc", format = "ascii")

2

Esistono diversi modi, ma prendendo in considerazione l'idea di utilizzare strumenti open source su Windows, posso suggerire 3 opzioni:

  1. Utilizzare lo strumento gdal_translate in GDAL (libreria di manipolazione geo-raster open source). Probabilmente avrai bisogno del -gcp pixel line easting northing elevationparametro in cui pixel e linea sono x / y sul raster ( http://www.gdal.org/gdal_datamodel.html ) e est / nord delle coordinate geografiche. Dovrai anche specificare una proiezione con-a_srs srs_def
  2. Usa i collegamenti r per GDAL e fai la stessa cosa
  3. Un modo "GUI" più semplice potrebbe essere quello di seguire questo tutorial e usare QGIS con GDAL. Lo svantaggio di questo è che devi impostare sia QGIS che GDAL se non l'hai già fatto.

Esaminerei attentamente le dipendenze di ogni bit di software necessario prima di percorrere qualsiasi percorso tu scelga.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.