Biorąc pod uwagę obiekt przestrzenny w R, w jaki sposób mogę przyciąć wszystkie jego elementy, aby leżały w obwiedni?
Są dwie rzeczy, które chciałbym zrobić (najlepiej wiedziałbym, jak to zrobić, ale jedno lub drugie jest akceptowalnym rozwiązaniem mojego obecnego problemu - ograniczenie kształtu pliku wielokąta do kontynentalnych Stanów Zjednoczonych).
Upuść każdy element nie do końca w obwiedni. Wydaje się, że
bbox()<-
byłby to logiczny sposób, ale taka metoda nie istnieje.Wykonaj prawdziwą operację przycinania, tak aby elementy nieskończenie małe (np. Wielokąty, linie) zostały odcięte na granicy .
sp::bbox
nie ma metody przypisania, więc jedynym sposobem, jaki wymyśliłem, byłoby użycieover
lubgContains
/gCrosses
w połączeniu z obiektem SpatialPolygons zawierającym pole ze współrzędnymi nowego obwiedni. Następnie, gdy wycinasz obiekt wielokąta, musisz dowiedzieć się, które są zawarte w stosunku do krzyża, i zmienić współrzędne tych wielokątów, aby nie przekraczały pola. Lub coś w tym rodzajugIntersection
. Ale z pewnością istnieje prostszy sposób?
Chociaż wiem, że istnieje wiele problemów z ramkami ograniczającymi i że przestrzenna nakładka na wielokąt, który określa region będący przedmiotem zainteresowania, jest zwykle lepsza, w wielu sytuacjach ramki ograniczające działają dobrze i są prostsze.
gIntersection
i wymyśliłemError in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") : TopologyException: no outgoing dirEdge found at 3 2.5
Nie ma czasu na debugowanie dzisiaj; napisałem niechlujną wersję i naprawię ją w przyszłości.Odpowiedzi:
W tym celu stworzyłem małą funkcję, która była używana przez innych z dobrymi recenzjami!
To powinno rozwiązać twój problem. Dalsze wyjaśnienia znajdują się tutaj: http://robinlovelace.net/r/2014/07/29/clipping-with-r.html
Tworzony fikcyjny wielokąt
b_poly
nie ma łańcucha proj4, co powoduje „ Ostrzeżenie: spgeom1 i spgeom2 mają różne łańcuchy proj4 ”, ale jest to nieszkodliwe.źródło
sp
,maptools
,rgdal
, irgeos
załadowany. UzyskaćError in .class1(object) : could not find function "extent"
wersji R / Pakiet problem może?library(raster)
w moim tutorialu: robinlovelace.net/r/2014/07/29/clipping-with-r.html daj nam znać, jak się masz! Twoje zdrowie.Oto niechlujna wersja brzegowa (wystarczająca, aby zaspokoić moje potrzeby na jutrzejszy mini-termin :-)):
Jeśli potrzebujesz projektu ramki granicznej do projektu, tutaj wersja dodaje
interpolate
argument, dzięki czemu powstałe pole rzutowania jest zakrzywione.źródło