2016-04-15 3 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") 

どのように私は1つのプロット内のすべてのラスタ "altdata"、SpatialPointsDataFrame "Lentic" とSpatialLinesDataFrame "ロティック" をプロットすることができますか?

Edit:

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エラーから、データにヌルジオメトリがあり、シェイプファイルにz値があるようです。私は、これらの警告のいずれかが壊滅的であるとは思わないし、あなたはまだspオブジェクトを取得しているはずです。あなたはコードを提供していないので、出力をチェックすることはできません。 –

+0

あなたの答えをありがとう。シェイプファイルを扱うのは初めてのことなので、私の質問がちょっとばかげているように思ってください。私は1つのポイントと他の1つのラインを含む2つの形状ファイルを持っています。私はそれらをRにロードしてプロットすることにも成功しました。今私はそれらをラスタプロットに追加したいと思います。私はあなたがよりよく理解できるように私の質問を編集します。前もって感謝します。 – snoops

答えて

1

baseのplotを使用は、raster上vectorのdataをoverlayする2 way thereある。最初にラスタをプロットし、次にadd = TRUE引数を使用して各フィーチャクラスのplotを呼び出すことができます。あるいは、現在のプロットに追加するポイントとラインの関数を使用することもできます。

ラスタはその後、ポイントを追加するには、アドオン= TRUEで、再びプロットを呼び出すいくつかの例のデータ

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) 

プロットを作成します。

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

あるいは、ポイントフィーチャクラスを追加するために、ラスタと使用のポイントをプロットします。

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

編集:ラスタとベクタフィーチャクラス間のあなたのエクステントが重複していません。

オブジェクトの範囲とサンプルラスタ(一様な値が1)を使用してSpatialPolygonを作成できます。ここで

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

この場合、ベクトルと空間は互換性があります。用語「ベクトル」は、ポイント、ポリゴンまたはラインとして表される空間オブジェクトを単に参照することである。あなたは何がうまくいかないのかに関する情報を提供しないので、私は本当にあなたを助けません。しかし、私はあなたのデータが異なる座標空間にあり、オーバーレイしていないと推測することができます。各オブジェクトのproj4stringを見て、一致するかどうかを確認します。空間オブジェクト(ラスタとポイント)である私の例を使って作業しましたか? –

+0

はい私はあなたの例を見て、それは完璧にうまくいった。もし私が同じことをしたら、結果は得られません。座標空間は一致するようですが、私は専門家ではありません。私はあなたがあなた自身を見ることができるように私のquuestionを編集します(altdataは2つの他のオブジェクトを追加する必要があるラスタです)。私が使用している文書をアップロードして自分で試してみる方法はありますか?いずれにしても、あなたの時間と答えに感謝しています。私は本当に感謝しています! – snoops

関連する問題