2017-08-14 22 views
0

plot()関数を使用して2つの空間オブジェクトをオーバーレイしようとしています。 2つのオブジェクト(SpatialLinesDataFrameクラスとSpatialPolygonsDataFrameクラス)の投影は、同じプロットで視覚化するために同じである必要があることを理解しています。私は同様の質問herehereを見つけましたが、これらのどれもが私が達成したいと思うものを助けることはできません。r - 空間オブジェクトとオーバーレイプロットの空間投影に一致する

ここにSpatialPolygonsDataFrameのコーディングがあります。

map.l<-list() 

for (i in 1:length(v.map)){ 
    ll<-ogrListLayers(paste(loccoor,"/",v.map[i],".kml",sep="")) 
    shp<-readOGR(paste(loccoor,"/",v.map[i],".kml",sep=""),layer=ll) 
    map<-spTransform(shp, CRS("+proj=longlat +datum=WGS84")) 
    map.l[[i]]<-map 
} 
plot(map.l[[1]],xlim=c(min(coor[,3]),max(coor[,3])), 
    ylim=c(min(coor[,2]),max(coor[,2]))) 
for (i in 2:length(v.map)){ 
plot(map.l[[i]],xlim=c(min(coor[,3]),max(coor[,3])), 
    ylim=c(min(coor[,2]),max(coor[,2])),add=T) 
} 

投影SpatialPolygonsDataFrame "マップ":"+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"

投影SpatialLinesDataFrame "輪郭"(v.mapは.kmlファイルのファイルとloccoorのリストは、位置と対応するx座標とy座標を格納するオブジェクトです) :"+proj=aeqd +ellps=WGS84 +lon_0=-XX.XXXXX +lat_0=XX.XXXXX"

「マップ」オブジェクトの投影を「輪郭」の投影に合わせて変換したいと考えています。 "地図"オブジェクトの"CRS("+proj=longlat +datum=WGS84")"を単に "輪郭"オブジェクトの投影に置き換えるだけでは、ポリゴンがもはやプロット(可視)されないため、動作していないようです。

これについてのご意見は大変ありがとうございます。

+0

マップと輪郭はどちらも独立してプロットされますか? –

+0

はい、そうです。 – FlyingDutch

答えて

1

ここではあまり意味がありません:座標は方向に似ていて、方向はどの言語で表示されているのかを教えてくれるので、CRを変更しても座標をそのまま残すと、スペイン語の辞書でドイツ語の指示を読もうとするようなものです。

sp::spTransform()を使用して、あるcrsから別のcrsへの方向を変換できます。 この関数は、空間オブジェクトとcrsの2つの引数をとります。

raster::crs()を使用すると、別の空間オブジェクトからcrsを取得できます。したがって、マップの座標(およびcrs)を輪郭のcrsに変換するには:

map <- spTransform(map, crs(contours)) 
+0

それでは、最初に等高線オブジェクトをプロットするとうまくいきますが、それ以外の方法では動作しません。ズームアウトする方法はありますか? 2つのオブジェクトは、異なる空間スケール上にあり、その結果、ポリゴンオブジェクトが部分的にフィットします。 – FlyingDutch

+0

Hmm ..地図の塗りつぶしが輪郭を覆っている可能性があります。 –

+1

これはズームが輪郭の空間スケールに依存していることに気付きました。それは自動的に調整されて素晴らしいです。助けてくれてありがとう! – FlyingDutch

関連する問題