W QGIS utworzyłem 2 wielokąty. Używając ich w R, wielokąty stają się automatycznie SpatialPolygonsDataFrame (SPDF). Chciałbym połączyć je w pojedynczy SPDF (co jest bardzo łatwe w ArcGis przy użyciu narzędzia Scalanie narzędzi ). Jestem pewien, że powinien istnieć prosty sposób na ukończenie tego w R, ale nie mogę tego znaleźć. seryjnej funkcja wydaje scalić data.frames, Łączna funkcja rozpuścić w jednym z wielu wielokątów SHP, gIntersect (wpisując funkcji przyłączenia) zwraca wartość logiczną, a nie na całej SPDF.
dane są dostępne tutaj: http://ulozto.cz/xpoo5jfL/ab-zip
library(sp)
library(raster)
library(rgeos)
library(spatstat)
library(rgdal)
library(maptools)
setwd("C:/...")
a<-readOGR(dsn=getwd(), layer="pol.a")
b<- readOGR(dsn=getwd(), layer="pol.b")
ab<-merge(a, b) # what tool if not "merge" to use??
r
spatial-analyst
merge
maptools
maycca
źródło
źródło
Odpowiedzi:
Jeśli nie musisz scalać topologii, a jedynie dodać nowe wielokąty, możesz po prostu użyć:
ab <- rbind(a,b)
Jeśli pojawi się błąd „nieunikalne wartości gniazda identyfikatora wielokąta”, oznacza to, że nazwy obiektów są takie same. Aby to naprawić, możesz użyć spChFID do zmiany nazw plików i powiązanych relacji między gniazdami. Ponieważ szczeliny w obiekcie używają nazw plików do powiązania obiektu, nie można po prostu zmienić nazw row.names w szczelinie @data.
Robi to funkcja union (union_sp) w pakiecie rastrowym i wywołuje gIntersects z rgeos, za kulisami i jest bardzo wygodną funkcją pomocniczą.
**** Edytuj 08-06-2018 Istnieje nieudokumentowany argument, którego można użyć do pominięcia problemu duplikatu identyfikatora.
źródło
ab <- bind(a, b)
aby uniknąć tego błęduBardzo łatwe rozwiązanie dostarczone przez @mdsumner:
spowodowało:
źródło
raster::union
działa również dla klasy SpatialLinesDataFrame!źródło