2016-03-21 13 views
1

私は別のポリゴンのすべての頂点を知っているし、使用してポリゴンを作成する方法を知っているR.にポリゴンのマップを作りたい:このプロットRで検索可能なポリゴンマップを作成するには?

library(sp) 
Polygonoutline1 <- rbind(c(x1,y1),c(x2,y2),c(x3,y3)) 
Polygonshape1 <- Polygon(Polygonoutline1) 
Polygonoutline2 <- rbind(c(x1,y1),c(x2,y2),c(x3,y3)) 
Polygonshape2 <- Polygon(Polygonoutline2) 
Polys1 <- Polygons(list(Polygonshape1),"Shape 1") 
Polys2 <- Polygons(list(Polygonshape2),"Shape 2") 
map <- SpatialPolygons(list(Polys1,Polys2)) 
plot(map) 

今私は(輸出)を保存することができるようにしたいです別のRコードアルゴリズムに読み込んで検索することができます。つまり、ポイント(xy座標)を指定し、そのポイントにあるポリゴンを知りたい(「シェイプ1」または「シェイプ2」)。 ?。これを行う実際には私のマップを検索するための6かそこらのポリゴンを持つことになります

+0

http://www.inside-r.org/packages/cran/sp /docs/point.in.polygon –

答えて

0

最初に定義し、あなたのポリゴンは、例えば:

Kaplanturbineoutline <- rbind(c(0,0),c(60,0),c(950,15),c(170,80),c(10,80),c(0,20)) 
Kaplanturbinepolygon <- Polygon(Kaplanturbineoutline) 

Francisturbineoutline <- rbind(c(4.5,12),c(125,12),c(910,15),c(910,80),c(100,700),c(6,700),c(0,55)) 
Francisturbinepolygon <- Polygon(Francisturbineoutline) 

Crossflowturbineoutline <- rbind(c(0.3,3.5),c(10,3.5),c(10,10),c(0.3,100)) 
Crossflowturbinepolygon <- Polygon(Crossflowturbineoutline) 

そしてポリゴン(追加 's' を注意)定義:

Turbinemap <- SpatialPolygons(list(Kaplanpolys,Francispolys,Crossflowpolys)) 

とデータフレームを定義:

df <- data.frame(c("Kaplan","Francis","Crossflow"),row.names=c("Kaplan","Francis","Crossflow")) 

及び次いで空間ポリゴンマップを定義

Kaplanpolys <- Polygons(list(Kaplanturbinepolygon),"Kaplan") 
Francispolys <- Polygons(list(Francisturbinepolygon),"Francis") 
Crossflowpolys <- Polygons(list(Crossflowturbinepolygon),"Crossflow") 

を空間ポリゴンデータフレームを作成する:

Turbinemapdf <- SpatialPolygonsDataFrame(Turbinemap,df) 

、このマップは、次いで、プロットすることができる。

spplot(Turbinemapdf,xlim=c(0,1000),ylim=c(0,1000),scales=list(draw=T),col=c("blue","orange","magenta","green","red"),fill=FALSE,colorkey=FALSE) 

マップは、その後使用して検索することができる。

Turbineselection <<- over(Turbinemap,Turbinepoint) 
関連する問題