Crear un ráster con información georreferenciada en R

9

Refiriéndome a mi pregunta anterior , ¿cómo puedo "geocodificar" / convertir, usando R, una imagen ráster generada a un formato que pueda mostrarse como una capa en un mapa? En resumen, mi objetivo es recrear los resultados del software comercial SpatialKey ( captura de pantalla ).

Estoy usando una instancia de GeoServer para alojar los datos de los mapas, pero ¿cómo puedo incorporar la proyección requerida y coordinar la información en la imagen para que se alinee correctamente con su posición geográfica real? El mapa de calor de densidad se produjo utilizando datos espaciales.

Mimo
fuente
Como esta es solo una pregunta de programación, este no es realmente un tema. ¿Has mirado la información del paquete de SPATSTAT y el breve PDF del curso para ver si está cubierto allí? Estoy seguro de que esto ha aparecido antes, y una búsqueda rápida en Google muestra esta respuesta relevante de R-help . No me sorprendería si existen soluciones más directas con algunas búsquedas más.
Andy W
¿Cómo ha creado la imagen ráster generada? ¿Proviene de otra aplicación, o está hecho dentro de R?
Simbamangu
Se genera dentro de R usando la función image ().
Mimo
x tiene resoluciones horizontales y verticales desiguales. Dichos datos no pueden almacenarse en formato de arco-ascii. Mi x tiene una dimensión 4684, 1950, se queja de la resolución. Aunque hice lo mismo. Buggy

Respuestas:

15

El paquete ráster le permite crear rásteres arbitrarios (tamaño, proyección) o usar objetos existentes, como matrices; entonces puede asignar proyecciones y extensiones. Su image()función toma un argumento de matriz que se puede usar directamente:

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)

Luego puede usarlo writeRaster()con cualquier cantidad de formatos, por ej.

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

Hay varias maneras diferentes, pero tomando una puñalada de que desea utilizar herramientas de código abierto en Windows, puedo sugerir 3 opciones:

  1. Use la herramienta gdal_translate en GDAL (biblioteca de manipulación de geo-raster de código abierto). Probablemente necesite el -gcp pixel line easting northing elevationparámetro donde el píxel y la línea son x / y en el ráster ( http://www.gdal.org/gdal_datamodel.html ) y al este / norte de las coordenadas geográficas. También deberá especificar una proyección con-a_srs srs_def
  2. Use los enlaces r para GDAL y haga lo mismo
  3. Una forma más fácil de "GUI" podría ser seguir este tutorial y usar QGIS con GDAL. La desventaja de esto es que debe configurar QGIS y GDAL si aún no lo ha hecho.

Examinaría detenidamente las dependencias de cada bit de software que necesita antes de elegir la ruta que elija.

Stev_k
fuente