Créer un raster avec des informations géoréférencées dans R


9

En me référant à ma question précédente , comment «géocoder» / convertir - à l'aide de R - une image raster générée en un format qui peut être affiché en tant que couche sur une carte? En bref, je vise à recréer les résultats du logiciel commercial SpatialKey ( capture d'écran ).

J'utilise une instance GeoServer pour héberger les données des cartes, mais comment puis-je incorporer la projection requise et les informations de coordonnées dans l'image afin qu'elle s'aligne correctement avec sa véritable position géographique. La carte thermique de densité a été produite à l'aide de données spatiales.


Comme il s'agit uniquement d'une question de programmation, ce n'est pas vraiment un sujet. Avez-vous regardé les informations sur le paquet spatstat et le pdf du cours pour voir s'il y est couvert? Je suis sûr que cela est déjà arrivé, et une recherche rapide sur Google fait apparaître cette réponse R-help pertinente . Je ne serais pas surpris si des solutions plus directes existent aussi avec des recherches plus poussées.
Andy W

Comment avez-vous créé l'image raster générée? Provient-elle d'une autre application, ou est-elle faite dans R?
Simbamangu

Il est généré dans R à l'aide de la fonction image ().
Mimo

x a des résolutions horizontales et verticales inégales. Ces données ne peuvent pas être stockées au format arc-ascii My x a une dimension 4684, 1950, il se plaint de la résolution. Je l'ai fait la même chose cependant. Buggy

Réponses:


15

Le package raster vous permet de créer des rasters arbitraires (taille, projection) ou d'utiliser des objets existants, comme des matrices; vous pouvez ensuite affecter des projections et des étendues. Votre image()fonction prend un argument matriciel qui peut être utilisé directement:

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)

Vous pouvez ensuite utiliser writeRaster()avec n'importe quel nombre de formats, par exemple

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

2

Il existe un certain nombre de façons différentes, mais en essayant d'utiliser des outils open-source sur Windows, je peux suggérer 3 options:

  1. Utilisez l'outil gdal_translate dans GDAL (bibliothèque de manipulation de géo-raster open source). Vous avez probablement besoin du -gcp pixel line easting northing elevationparamètre où le pixel et la ligne sont x / y sur le raster ( http://www.gdal.org/gdal_datamodel.html ) et en ordonnant / ordonnant les coordonnées géographiques. Vous devrez également spécifier une projection avec-a_srs srs_def
  2. Utilisez les liaisons r vers GDAL et faites la même chose
  3. Un moyen plus "GUI" pourrait être de suivre ce tutoriel et d'utiliser QGIS avec GDAL. L'inconvénient est que vous devez configurer QGIS et GDAL si vous ne l'avez pas déjà fait.

J'examinerais attentivement les dépendances de chaque logiciel dont vous avez besoin avant de choisir la route que vous choisissez.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.