2016-09-15 4 views
1

Ich habe Probleme mit dem Zeichnen von Polygonen und ich kann nicht verstehen warum. Hier ist mein Code:Geom_Polygon und Geom_Path werden Verbindungslinien nicht entfernen

#Load coordinates 
ices <- read.csv("FILE PATH/ices_coord.csv", sep = ",") 
#Reproject to European projection 
coordinates(ices)<-c("long","lat") 
proj4string(ices) <- CRS("+proj=longlat") 
ices_laea<-spTransform(ices, CRS("+proj=laea")) 
#Create dataframe 
ices_laea_df<-data.frame(ices_laea) 

library(ggplot2) 
ggplot()+ 
    geom_polygon(data=ices_laea_df, aes(long,lat,group=group), fill="white", color = "gray70") 

ich die Karte bekommen enter image description here

aber wie kann ich der Verbindungsleitungen loszuwerden (ich habe in rot gefärbt zwei, aber es gibt mehr). Ich war mir ziemlich sicher, dass die Verwendung von "group = group" oder "group = ICES_area" funktionieren würde, aber das ist nicht der Fall. Und ich habe schon verloren die Hälfte meiner Haare :)

Mit geom_path statt geom_polygon gibt das gleiche Ergebnis ...

Haben Sie bereits in dieser Frage laufen? Kennen Sie den Trick, um es zu beheben?

Vielen Dank für Ihre Hilfe,

Fred

PS: you can download the ICES coordinates here

+0

Haben Sie Daten zur Reihenfolge, in der der Punkt gerendert werden soll? Deine CSV scheint das nicht zu haben und das Zeichnen von irgendwelchen Polys scheint etwas unordentlich zu machen. z.B. ices_laea_df <- ices_laea_df%>% filter (group == 14) – pluke

Antwort

3

DIESE KEINE ANTWORT ABER CODE zu erläutern:

ices <- readr::read_csv("ices_coord.csv") 

purrr::map_lgl(unique(ices$ICES_area), function(area) { 
    poly <- dplyr::filter(ices, ICES_area==area) 
    identical(poly[1,], poly[nrow(poly),]) 
}) 

## [1] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE 
## [11] TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE 
## [21] FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE 
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 

alle, TRUE sein müssen für Sie erhalten die hübsch verbundenen Polygone, nach denen Sie fragen (Polygone und Pfade sind geordnete Punktlisten mit dem Polygon mit der Bedingung, dass der Start & Ende gleich sind) und es wird praktisch unmöglich, zu sagen, dass seit:

dplyr::count(ices, ICES_area, long, lat) %>% 
    dplyr::filter(n>1) %>% 
    dplyr::ungroup() %>% 
    dplyr::count(ICES_area) %>% 
    dplyr::select(area=1, duplcated_pts=2) %>% 
    print(n=39) 
## # A tibble: 39 × 2 
##  area duplcated_pts 
## <chr>   <int> 
## 1  Ia    1 
## 2  Ib    2 
## 3 IIa   311 
## 4 IIb   322 
## 5 IIIa    9 
## 6 IIIb    1 
## 7 IIIc    1 
## 8 IIId   76 
## 9 IVa    1 
## 10 IVb    1 
## 11 IVc    1 
## 12 IXa    1 
## 13 IXb   10 
## 14 Va    6 
## 15 Vb   29 
## 16 VIa    1 
## 17 VIb   21 
## 18 VIIa    1 
## 19 VIIb    1 
## 20 VIIc   21 
## 21 VIId    1 
## 22 VIIe    1 
## 23 VIIf    1 
## 24 VIIg    1 
## 25 VIIh    1 
## 26 VIIIa    1 
## 27 VIIIb    1 
## 28 VIIIc    1 
## 29 VIIId   10 
## 30 VIIIe    8 
## 31 VIIj   14 
## 32 VIIk   66 
## 33 Xa   95 
## 34 Xb    1 
## 35 XIIa   106 
## 36 XIIb    1 
## 37 XIIc    1 
## 38 XIVa    1 
## 39 XIVb   65 

Es gibt viele duplizierte Punkte pro Gruppe für einige der Gruppen.

+1

hmmmm ... das sieht böse aus. Also die einfachste Lösung könnte tatsächlich sein, die Polygone in QGIS (oder ähnlichem) zu säubern, um sicherzustellen, dass ich für alle Polygone TRUE bekomme ... Danke für die Illustration! :) –

Verwandte Themen