2016-04-27 5 views
0

ohneSymmetric Differenz zwischen zwei Polygon ohne Loch

Loch zwei geschlossene Kurven Betrachten

Kurve 1:

x=c(0.01813766,0.021240708, 0.006101686, -0.01813648, -0.021246640,-0.006100095,0.01813766) 
y=c(-0.01795111,0.002401427, 0.027535572, 0.01795129, -0.002396452, -0.027526064,-0.01795111) 

Kurve 2

x=c(0.006476347, 0.027730840, 0.01291382, -0.006475285, -0.027740463,-0.01291557,0.006476347) 
y=c(-0.023862392, -0.008557378, 0.01629330, 0.023863672, 0.008560437, -0.01628554, -0.023862392) 

Hier ist die Parzelle: enter image description here Wollen die berechnen Bereich des nicht überlappenden Bereichs.

Beachten Sie, dass: In unserem Fall, wenn wir drehen den roten ploygon (zum Beispiel) der Bereich des nicht-überlappenden Bereichs anders als im Fall ändern, wo man die den Unterschied zwischen dem Bereich der beiden ploygon als symmetrischem betrachten Unterschied.

Frage: Ich bin auf der Suche nach einem Paket/Code in R, die verwendet werden kann, um den Bereich der nicht überlappenden Bereich zwischen den beiden oben genannten Polygon zu berechnen und diese nicht überlappende Fläche ist sinnvoll für die Rotation von jedem Polygon.

Irgendwelche hilft. Danke im Voraus.

+1

etwas Popcorn und beobachten Simpsonsche: http: // Stackoverflow .com/questions/7868382/berechnen-Bereich zwischen 2-Kurven –

+0

@ColonBeauvel. Ich schaute in den Verweis verwiesen. Und das gefundene Distanzmaß unterscheidet sich von meinem Distanzmaß. Ich suche nach einer Entfernung, die für die Orientierung der Polygone empfindlich ist. Ich habe diesen Punkt in meiner Frage geklärt. – Janak

Antwort

1

Die Pakete sp und rgeos sind für mit räumlichen Objekten in R. Arbeits

Hier ist ein Beispiel:

library(rgeos) 
library(sp) 

# Polygon 1 

poly1 <- readWKT("POLYGON ((0.01813766 -0.01795111, 0.021240708 0.002401427,0.006101686 0.027535572, -0.01813648 0.01795129, -0.021246640 -0.002396452,-0.006100095 -0.027526064,0.01813766 -0.01795111))") 


# Polygon 2 
poly2 <- readWKT("POLYGON ((0.006476347 -0.023862392, 0.027730840 -0.008557378, 0.01291382 0.01629330, -0.006475285 0.023863672, -0.027740463 0.008560437,-0.01291557 -0.01628554,0.006476347 -0.023862392))") 

d <- gSymdifference(poly1, poly2) 

> gArea(d) 

[1] 0.0003226174 

> plot(d, col = "red") 

enter image description here

+0

Großartig. Das ist was ich suche. Vielen Dank. – Janak

+0

Gern geschehen! Wenn Sie mit der Antwort zufrieden sind, können Sie sie als korrekt markieren, indem Sie auf das grüne Häkchen neben der Antwort klicken. Freue mich zu helfen. –

+0

Wenn wir einen Trick mit 100 Ecken betrachten, dann ist die Koordinate des Polygons 100 \ mal 2 Matrix. Dann wäre das Argument der POLYGON-Funktion eine Matrix. In diesem Fall zeigt es einen Fehler an. Wie geht man mit einem so großen Polygon um? – Janak