将栅格从纬度/经度重新投影到R中的UTM?


13

我必须将其转换为UTM才能使缓冲区正常工作。

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)

在缓冲区创建过程中(这是代码的最后一行),它给出以下警告:

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

这是信息

  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

我必须更改对象才能做缓冲。


您的数据是在投影坐标系中还是在地理CS中?
亚伦

我认为初始矢量数据在投影坐标系中。
gsa 2015年

投影(例如UTM)还是地理位置(经纬度)?
亚伦

我不知道该如何检查,我认为我不确定UTM
gsa 2015年

您的座标是什么?您在哪个区域(州,城市)?
ed.hank

Answers:


16

这是您可以使用栅格数据包在R中重新投影栅格的方法。在此示例中,输入的地理坐标位于NAD83地理坐标系中,我将其重新投影到NAD 83 UTM 15投影坐标系中。RGDAL使用的Proj4格式投影的一个很好的参考可以在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)

感谢您的回答,尽管如此,它还是返回了:projectExtent(from,projto)中的错误:无法执行此转换另外:警告消息:在rgdal :: rawTransform(projfrom,projto,nrow(xy),xy [,1], xy [,:218个投影点不确定
gsa

您使用的是单波段栅格还是多波段栅格?本示例适用于单波段栅格。
亚伦

它来自矢量(湿地)的栅格化过程,而不是卫星图像,因此我将使用单个波段。
gsa 2015年

尝试更新您的光栅/ rgal包:r-sig-geo.2731867.n2.nabble.com/...
亚伦

@gsa,如果可行,建议您投票并接受答案!否则,请编辑并澄清您的原始问题。
Simbamangu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.