Usiłuję przeciąć dwa SpatialPolygonsDataFrames i uzyskać wynik SpatialPolygonsDataFrame. Niestety, używając gIntersection
funkcji z rgeos
(która działa imponująco szybko, aby przeciąć wielokąty), nie mogę pobrać powiązanych ramek danych. Rozważ następujący przykład:
> fracPoly <- gIntersection( toSingle, fromSingle )
> class(toSingle)
[1] "SpatialPolygonsDataFrame"
> class(fromSingle)
[1] "SpatialPolygonsDataFrame"
> class(fracPoly)
[1] "SpatialPolygons"
Mogę napisać funkcję otoki, która obsługuje przenoszenie data.frames
, ale poprawność wszystkich sprawdzeń będzie niewielka, a zanim to zrobiłem, miałem nadzieję, że ktoś może potwierdzić, że nie ma lepszego sposobu lub skierować mnie w stronę innej funkcji (lub opcji) dla gIntersection
), co pozwoliłoby mi zachować powiązane data.frames
.
Aktualizacja
Po dalszej refleksji może to być bardzo celowe zachowanie gIntersection
. W końcu z dwóch SPDF, których ramkę danych przekazujesz? Więc może będę musiał napisać opakowanie, które połączy oba.
źródło
Odpowiedzi:
W przypadku niektórych projektów miałem taką samą potrzebę. Znacznie więcej niż utrzymanie
data.frame
, musieliśmy wprowadzić dodatkowy kod, aby zarządzać wyjściowym typem geometrii, i przejść do czyszczenia (np. Czyste zbiory geometrii), aby uzyskać kompletny geoproces przecięcia. Jeśli nadal musisz wykonać takie zadanie w R, możesz wypróbować pakiet RFigisGeo :źródło
Zachowaniem gIntersection nie jest przekazywanie żadnych przecinanych danych według projektu:
Ku mojemu zdziwieniu, pakiet rastrowy ma funkcję przecięcia , która po prostu przecina i przekazuje również dane.
Pełne informacje na ten temat: http://r-sig-geo.2731867.n2.nabble.com/Intended-usage-of-gIntersection-td7587120.html
źródło
Dla tych (jak ja), dla których powyższe odpowiedzi nie zadziałały, link tutaj wyjaśnia, że możesz to zrobić dokładnie za pomocą przecięcia rastra.
Jak zachować wszystkie dane atrybutów podczas obcinania dwóch wielokątów w R?
Użyłem tego do kadrowania SpatialPointsDataFrame za pomocą pliku kształtu SpatialPolygons; tworzy przyciętą / przyciętą wersję SpatialPointsDataFrame, zachowując oryginalne dane.
źródło