Memproyeksikan ulang raster dari lat / lon ke UTM dalam R?

12

saya harus mengubahnya menjadi UTM untuk membuat buffer berfungsi.

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)

Selama pembuatan buffer yang merupakan baris kode terakhir, ia memberikan peringatan ini:

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

inilah informasinya

  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

Saya harus mengubah proyeksi agar memungkinkan untuk melakukan buffer.

ya
sumber
Apakah Anda data dalam sistem koordinat yang diproyeksikan atau CS geografis?
Aaron
Data vektor awal dalam sistem koordinat diproyeksikan saya pikir.
gsa
Diproyeksikan (mis. UTM) atau Geografis (lat / lon)?
Aaron
Saya tidak tahu bagaimana cara memeriksa ini saya pikir UTM tetapi saya tidak yakin
gsa
di mana koordinat dan area (negara bagian, kota) Anda?
ed. Terima kasih

Jawaban:

15

Ini adalah bagaimana Anda dapat memproyeksikan ulang raster di R menggunakan paket raster . Dalam contoh ini, input geotiff berada dalam sistem koordinat geografis NAD83 dan saya memproyeksikan kembali ke sistem koordinat yang diproyeksikan NAD 83 UTM 15. Referensi yang baik untuk proyeksi format Proj4, yang digunakan oleh RGDAL, dapat ditemukan di 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)
Harun
sumber
Terima kasih atas jawabannya, ia mengembalikan ini: Kesalahan dalam projectExtent (from, projto): tidak dapat melakukan transformasi ini Selain itu: Pesan peringatan: Dalam rgdal :: rawTransform (projfrom, projto, nrow (xy), xy [, 1], xy [,: 218 titik yang diproyeksikan tidak terbatas
gsa
Apakah Anda menggunakan raster band tunggal atau multiband? Contoh ini untuk raster band tunggal.
Aaron
Itu berasal dari proses rasterize dari vektor (lahan basah) bukan gambar satelit jadi saya akan pergi dengan pita tunggal.
gsa
Coba perbarui paket raster / rgal Anda: r-sig-geo.2731867.n2.nabble.com/…
Aaron
@ gsa, jika ini berhasil, ide yang bagus untuk mengangkat dan menerima jawabannya! Kalau tidak, edit dan klarifikasi pertanyaan awal Anda.
Simbamangu