【问题标题】:Clipping rasters in R在 R 中裁剪栅格
【发布时间】:2013-05-20 00:56:33
【问题描述】:

我正在为美国东北部制作地图。 地图背景需要是海拔图或年平均温度图。我有两个来自 Worldclim.org 的栅格,它们为我提供了这些变量,但我需要将它们剪辑到我感兴趣的状态范围内。有关如何执行此操作的任何建议。 这是我目前所拥有的:

   #load libraries
library (sp)
library (rgdal)
library (raster)
library (maps)
library (mapproj)


#load data
state<- data (stateMapEnv)
elevation<-raster("alt.bil")
meantemp<-raster ("bio_1.asc")

#build the raw map
nestates<- c("maine", "vermont", "massachusetts", "new hampshire" ,"connecticut",
  "rhode island","new york","pennsylvania", "new jersey",
  "maryland", "delaware", "virginia", "west virginia")

map(database="state", regions = nestates, interior=T,  lwd=2)
map.axes()

#add site localities
sites<-read.csv("sites.csv", header=T)
lat<-sites$Latitude
lon<-sites$Longitude

map(database="state", regions = nestates, interior=T, lwd=2)
points (x=lon, y=lat, pch=17, cex=1.5, col="black")
map.axes()
library(maps)                                                                  #Add axes to  main map
map.scale(x=-73,y=38, relwidth=0.15, metric=T,  ratio=F)

#create an inset map

 # Next, we create a new graphics space in the lower-right hand corner.  The numbers are proportional distances within the graphics window (xmin,xmax,ymin,ymax) on a scale of 0 to 1.
  # "plt" is the key parameter to adjust
    par(plt = c(0.1, 0.53, 0.57, 0.90), new = TRUE)

  # I think this is the key command from http://www.stat.auckland.ac.nz/~paul/RGraphics/examples-map.R
    plot.window(xlim=c(-127, -66),ylim=c(23,53))

  # fill the box with white
    polygon(c(0,360,360,0),c(0,0,90,90),col="white")

  # draw the map
    map(database="state", interior=T, add=TRUE, fill=FALSE)
    map(database="state", regions=nestates, interior=TRUE, add=TRUE, fill=TRUE, col="grey")

elevationmeantemp 对象是需要裁剪到nestates 对象的区域范围的对象。任何输入都会有所帮助

【问题讨论】:

  • 查看overMapGAM 包。一个将帮助您自己构建它。另一个已经具有这样的功能,您可以进行逆向工程。
  • 有没有办法使用'maps'来填充栅格?甚至在栅格中使用叠加功能?
  • @mnel:你对解决这个问题有什么意见吗?

标签: r maps raster clip


【解决方案1】:

raster 包中的crop 函数允许您使用一个Extent 对象或一个可以计算Extent 的对象来切割(子集)另一个对象。包装示例:

r <- raster(nrow=45, ncol=90)
r[] <- 1:ncell(r)
e <- extent(-160, 10, 30, 60)
rc <- crop(r, e)

如果您想以更详细的方式进行切割,也许您可​​以使用状态的 SHP 和 sp 包中的 over 函数。

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 2017-05-22
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多