2016-04-15 130 views
0

我需要将形状文件转换为栅格,并且完全不知道哪里开始。将SpatialPointsDataFrame和SpatialLinesDataFrame添加到栅格图

如果有人能帮助我,我会非常感激!

更新:我已经发现了关于“readOGR'功能,但每次我用它,我得到以下信息:

Warning messages: 
1: In readOGR(dsn = "C:/Users/Giaco/Dropbox/Random Walk/Waterbodies", : 
    Dropping null geometries: 308, 309 
2: In readOGR(dsn = "C:/Users/Giaco/Dropbox/Random Walk/Waterbodies", : 
    Z-dimension discarded 

有人可以告诉我这是什么意思?

编辑:

altdata <- raster("altitude.tif")   
plot(altdata) 
Lotic <- readOGR(dsn="C:/Users/Giaco/Dropbox/Random Walk/Waterbodies",layer="Lotic") 
Lentic <- readOGR(dsn="C:/Users/Giaco/Dropbox/Random Walk/Waterbodies",layer="Lentic") 

我如何可以绘制栅格 “altdata”,该SpatialPointsDataFrame “在Lentic” 和SpatialLinesDataFrame “激流” 都在同一个阴谋?

编辑:

altdata 
class  : RasterLayer 
dimensions : 1286, 963, 1238418 (nrow, ncol, ncell) 
resolution : 15, 15 (x, y) 
extent  : 90938.29, 105383.3, 190000, 209290 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +pm=-9.131906111111112 +units=m +no_defs 
data source : C:\Users\Giaco\Dropbox\Random Walk\altitude.tif 
names  : altitude 
values  : -32768, 32767 (min, max) 

> Lentic 
class  : SpatialPointsDataFrame 
features : 182 
extent  : -108473.2, -95455.86, -107870.9, -91344.22 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs 
variables : 3 
names  : Presence,  Type, Accessible 
min values :  0, Fountain,   0 
max values :  1,  Well,   2 
> Lotic 
class  : SpatialLinesDataFrame 
features : 317 
extent  : -108956.5, -93832.44, -108979.5, -90747.34 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs 
variables : 1 
names  : Presence 
min values :  0 
max values :  1 
+0

您需要提供更多信息并需要查看代码,以便排除语法错误。你想表达什么样的光栅,你的数据多边形或点,数值或分类的值,是否有连续的覆盖范围?从gdal错误看起来您在数据中具有空的几何形状,并且shapefile具有z值。我不相信这些警告中的任何一个都是灾难性的,你仍然应该得到一个sp对象。因为你没有提供代码,我不能让你检查输出。 –

+0

感谢您的回答。这是我第一次使用形状文件,所以请原谅我的问题是否看起来有点愚蠢。我有两个形状文件一个包含点和另一个线。我已经成功地将它们加载到R中并绘制它们。现在我想将它们添加到栅格图。我会编辑我的问题,以便更好地理解。提前致谢。 – snoops

回答

1

使用基本情节,也有重叠在一个栅格矢量数据双向的。首先绘制栅格,然后您可以使用add = TRUE参数为每个要素类调用plot。或者,您可以使用将添加到当前绘图的点和线功能。

创建一些示例数据

library(raster) 
library(sp) 

r <- raster(nrows=180, ncols=360, xmn=571823.6, xmx=616763.6, ymn=4423540, 
      ymx=4453690, resolution=270, crs = CRS("+proj=utm +zone=12 +datum=NAD83 
      +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0")) 
r[] <- runif(ncell(r)) 
pts <- sampleRandom(r, 10, na.rm = TRUE, sp = TRUE) 

故事情节则光栅再次拨打情节,与附加= TRUE,加点。

plot(r) 
    plot(pts, pch=20, cex=2, col="red", add=TRUE) 

或者,绘制栅格并使用点来添加点要素类。

plot(r) 
    points(pts, pch=20, cex=2, col="red") 

编辑:您的光栅和矢量要素类之间的范围不重叠。

我们可以使用对象的范围和示例栅格(统一值为1)来创建SpatialPolygons。

library(raster) 
proj <- sp::CRS("+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 
       +ellps=intl +pm=-9.131906111111112 +units=m +no_defs") 
r.ext <- as(extent(90938.29, 105383.3, 190000, 209290), "SpatialPolygons") 
    proj4string(r.ext) <- proj 
pt.ext <- as(extent(-108473.2, -95455.86, -107870.9, -91344.22), "SpatialPolygons") 
    proj4string(pt.ext) <- proj 
line.ext <- as(extent(-108956.5, -93832.44, -108979.5, -90747.34), "SpatialPolygons") 
    proj4string(line.ext) <- proj 
r <- raster(r.ext, resolution = c(15,15), crs = proj) 
    r[] <- rep(1, ncell(r)) 

这里我们看到,如果我们绘制栅格,然后绘制点和线范围多边形,则看不到它们。

plot(r) 
    plot(pt.ext, add=TRUE) 
    plot(line.ext, add=TRUE) 

但是,如果我们绘制线条和点的多边形,他们覆盖就好了。

plot(line.ext) 
    plot(pt.ext,add=TRUE) 

如果我们将栅格范围限制在线对象范围内,则应该看到栅格子区域,但不要。而且,如果您尝试裁剪光栅,您将收到“.local(x,y,...)中的错误:范围不重叠”错误。

plot(line.ext) 
    plot(r, add=TRUE) 
+0

谢谢!不幸的是,没有人为我工作。可能这是因为我没有使用矢量数据,而是像上面提到的那样使用了空间数据...您有任何其他想法吗? – snoops

+0

在这种情况下,矢量和空间是可以互换的。术语“矢量”仅指代被表示为点,多边形或线条的空间对象。既然你没有提供任何有关错误的信息,我真的无法帮助你。然而,我可以推测你的数据在不同的坐标空间中,因此不会叠加。查看每个对象的proj4字符串以查看它们是否匹配。你是否通过我的例子工作,它们是空间对象(栅格和点)。 –

+0

是的,我看了你的例子,它工作得很好。如果我相同但我没有得到任何结果。坐标空间似乎相匹配,但我不是专家。我将编辑我的quuestion以便您可以自己查看(altdata是我需要添加其他两个对象的栅格)。有什么方法可以上传我正在使用的文档,以便您可以尝试自己?无论如何,再次感谢您的时间和答案,我真的很感激! – snoops