2016-04-15 131 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