2016-03-21 13 views
1

Ich möchte eine Karte von Polygonen in R. machen ich alle Ecken der verschiedenen Polygone kennen und wissen, wie Polygone erstellen mit:Wie man eine durchsuchbare Polygonkarte in R erstellt?

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) 

nun diese Handlung zu speichern (Export) Ich möchte in der Lage, und lese es in einen anderen R-Code-Algorithmus ein, wo es gesucht werden kann, dh ich möchte einen Punkt (xy-Koordinate) angeben und wissen, welches Polygon sich an diesem Punkt befindet (dh "Shape 1" oder "Shape 2". Wie mache ich ?. tun dies in der Realität wird meine Karte 6 oder so Polygone suchen

+0

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

Antwort

0

Zuerst definieren Sie Ihre Polygonen zB:

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) 

Dann definieren Polygonen (beachten Sie die hinzugefügte 's'):

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

Dann eine Spatial Polygonen Karte definieren:

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

und einen Datenrahmen definieren:

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

und dann Erstellen Sie einen räumlichen Polygon-Datenrahmen:

und diese Karte kann dann aufgetragen werden:

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) 

Die Karte dann durchsucht werden können:

Turbineselection <<- over(Turbinemap,Turbinepoint)