2012-06-17 11 views
5

Sądzę, że musiałem przeformułować moje okropnie sformułowane poprzednie pytanie (skasowałem). Oto kolejna próba. Chcę dołączyć do sąsiednich regionów w taki sposób, że ich wspólna granica znika i widać tylko ich zewnętrzną linię.Scal sąsiednie regiony w R (zagregowane dane przestrzenne)?

Oto powtarzalne przykład:

require(shapefiles) 
require(sp) 

xx <- readShapeSpatial(system.file("shapes/sids.shp", package="maptools")[1], 
        IDvar="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66")) 

# show all the subregions 
plot(xx) 

enter image description here

Teraz rozważmy tylko regiony regiony 3 i 5

plot(xx[c(3,5),]) 

Jak mogę tylko agregacji tych regionów. W praktyce to, co chcę zrobić, to mieć mapę całego kontynentu pokazującą wszystkie kraje i stworzyć mapę pokazującą Amerykę Północną i Południową.

Dla mnie wygląda to dość powszechne zadanie, ale nie mogę znaleźć odpowiedniej funkcji, aby to zrobić do tej pory. Czy po prostu tęsknię za funkcją lub mogę po prostu ręcznie?

enter image description here

+2

Użyj 'unionSpatialPolygons()' z pakietu 'maptools': http://gis.stackexchange.com/questions/21360/merging-2-polygon-adays-to-each-other-using-r –

+0

Wiem, że twoje pytanie mówi w R, ale par excellence biblioteka manipulacji przestrzennych jest postgres/postgis. Możesz również napisać procedury przechowywane R w postgresie, zobacz http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgresql_plr_tut01, co oznacza, że ​​możesz uzyskać korzyści z przestrzennego indeksowania i funkcji postgis oraz statystyki R. funkcja importowania do postgresów również z postgres. –

Odpowiedz

9

Pakiet rgeos oferuje szereg doskonałych narzędzi do obsługi Spatial* danych, które mogą być używane w tym przypadku.

Na przykład:

library(rgeos) 
regionOfInterest <- gUnion(xx[3,], xx[5,]) 

ten ma także taki sam wynik, i mogą być bardziej użyteczne dla wielu wielokątów:

regionOfInterest <- gUnionCascaded(xx[c(3,5), ]) 

Wynik z plot(regionOfInterest):

enter image description here