Rでのマップのプロットに関する問題


8

gadmでロシアの地図をプロットしてRいるときに、180度の子午線で問題が発生しました。ロシア地域の一部が個別にプロットされています。次のコードを使用して、プロット上でそれを見ることができます(それは左端であり、部分は右です)。誰でもこの問題を回避する方法を提案できますか?

これが私の質問のコードの短いバージョンです:

require(sp)

rus<-url("http://www.gadm.org/data/rda/RUS_adm1.RData")
print(load(rus))
gadm$regions = as.factor(1:88)
spplot(gadm,"regions")

地図

回答:


5

データを投影します。 この例では、ロシアの中央付近(東経105度)を中心とした極地ステレオ投影を使用しています。

require(rgdal)
proj4.str <- CRS("+init=epsg:3413 +lon_0=105")
gadm.prj <- spTransform(gadm, proj4.str)
spplot(gadm.prj, "regions")

地図

問題領域は右上にあります。この領域が2つの部分に分割されており、投影によって隣接する領域に再構成されていることがわかります。共通の境界が表示されています。 これは、データ内での方法です。2つの別個の特徴として明示的に表されます。表示されている分割を削除するには、2つの部分をマージする必要があります(操作は、GISを使用するよりもGISを使用する方がはるかに簡単Rです)。


もう1つの馬鹿げた質問をお願いします。よろしければ、たとえばモスクワだけのように、地図から1つのポリゴンだけをプロットするにはどうすればよいのでしょうか
Ruvin Rafailov

2
spこのクラスが「print / show、plot、subset、[、[[、\ $、names、dim、summary、...」などのメソッドをサポートすることについて言及しているヘルプページののヘルプページsubsetは、その構文を示しています。秘訣は、モスクワを見つけるために使用するフィールドを知ることです!すべてのフィールドのユニークな値を見て、最終的にに降りて、それを見つけました levels(gadm$NAME_1)。これによりspplot(subset(gadm.prj, subset=(NAME_1=="Moskva")),"regions")、トリックが実行されます。
whuber

とった!本当にありがとうございました。本当に助かりました。サブセット構文について知らなかったので問題が発生しました
Ruvin Rafailov

7

私はwhuberがすでに私を打ち負かしているのを見ますが、私はとにかく私の答えを投稿します。

longlatプロジェクションでデータを保持する場合は、Proj4文字列に「Longitudinal Wrapping」パラメーターを追加できます。

library(rgdal)

p4 <- projection(gadm)
p4_new <- paste(p4, "+lon_wrap=105")

gadm_new <- spTransform(gadm, CRS(p4_new))
spplot(gadm_new, "regions")

これにより、東経105度で地図が中央に配置されます。 ここに画像の説明を入力してください


1
+1このオプションがで利用できるのを見ると便利ですspTransform
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.