Reprojeter le raster de lat / lon vers UTM dans R?

13

je dois le transformer en UTM afin de rendre le tampon fonctionnel.

wets<-readOGR(dsn=".",layer="shapefile")
r.raster <- raster()
extent(r.raster) <- extent(wets)
res(r.raster) <- 100 

wets.r <- rasterize(wet,r.raster)
plot(wets.r)
wetsbuf<-buffer(wets.r,width=500)

Lors de la création du tampon qui est la dernière ligne de code, il donne cet avertissement:

Warning message:  
In couldBeLonLat(x) :
  raster has a longitude/latitude CRS, but coordinates do not match that

voici l'info

  summary(wets.r)
          layer
 Min.        1
 1st Qu.     1
 Median      2
 3rd Qu.     9
 Max.       11
 NA's    52629

summary(wets)

  Object of class SpatialPolygonsDataFrame
Coordinates:
      min       max
 x  683705  714088.8
 y 4326266 4343768.0
 Is projected: TRUE 
 proj4string :
 [+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +datum=GGRS87
 +units=m +no_defs +ellps=GRS80 +towgs84=-199.87,74.79,246.62]
 Data attributes:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    0.0     2.5     5.0     5.0     7.5    10.0 






 wets.r

class       : RasterLayer 
dimensions  : 175, 304, 53200  (nrow, ncol, ncell)
resolution  : 100, 100  (x, y)
extent      : 683705, 714105, 4326268, 4343768  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 1, 11  (min, max)
attributes  :
   ID FID
 from:  1   0
 to  : 11  10

Je dois changer la projection afin de pouvoir faire le buffer.

gsa
la source
Vos données sont-elles dans un système de coordonnées projeté ou un CS géographique?
Aaron
Je pense que les données vectorielles initiales sont dans un système de coordonnées projeté.
gsa
Projeté (par exemple UTM) ou géographique (lat / lon)?
Aaron
Je ne sais pas comment vérifier cela, je pense que l'UTM mais je ne suis pas certain
gsa
quelles sont les coordonnées et dans quelle région (état, ville) êtes-vous?
ed.hank

Réponses:

16

C'est ainsi que vous pouvez reprojeter un raster dans R à l'aide du package raster . Dans cet exemple, le géotiff d'entrée était dans un système de coordonnées géographiques NAD83 et je reprojeterais à un système de coordonnées projeté NAD 83 UTM 15. Une bonne référence pour les projections au format Proj4, qui sont utilisées par RGDAL, peut être trouvée sur spatialreference.org .

library(raster)

# Create RasterLayer object
r <- raster('C:/temp/binary_nad83.tif')

# Define the Proj.4 spatial reference 
# http://spatialreference.org/ref/epsg/26915/proj4/
sr <- "+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs" 

# Project Raster
projected_raster <- projectRaster(r, crs = sr)

# Write the RasterLayer to disk (See datatype documentation for other formats)
writeRaster(projected_raster, filename="C:/temp/binary_utm15.tif", datatype='INT1U', overwrite=TRUE)
Aaron
la source
Merci pour la réponse, elle renvoie cependant ceci: Erreur dans projectExtent (from, projto): ne peut pas faire cette transformation En plus: Message d'avertissement: Dans rgdal :: rawTransform (projfrom, projto, nrow (xy), xy [, 1], xy [,: 218 point (s) projeté (s) non fini
gsa
Utilisez-vous un raster mono-bande ou multibande? Cet exemple concerne un raster à bande unique.
Aaron
Il provient d'un processus de pixellisation d'un vecteur (zones humides) et non d'une image satellite, je vais donc opter pour la bande unique.
gsa
Essayez de mettre à jour vos packages raster / rgal
Aaron
@gsa, si cela fonctionne, c'est une bonne idée de voter et d'accepter la réponse! Sinon, modifiez et clarifiez votre question d'origine.
Simbamangu