Próbuję utworzyć zestaw wielokątów z wierzchołków, zapisanych w formacie X, Y. Proszę o mnie, ponieważ jestem nowy dla R i spędziłem sporo czasu szukając innych postów dzisiaj.SpatialPolygons - Tworzenie zestawu wielokątów w R od współrzędnych
Oto przykład moich danych - każdy wiersz reprezentuje wierzchołki dla jednego wielokąta. wielokąty są kwadratami
square <- rbind(c(255842.4, 4111578, 255862.4, 4111578, 255862.4, 4111558,
255842.4, 4111558, 255842.4, 4111578, 255842.4, 4111578),
c(257397.0, 4111309, 257417.0, 4111309, 257417.0, 4111289,
257397.0, 4111289, 257397.0, 4111309, 257397.0, 4111309))
ID <- c("SJER1", "SJER2")'
Używam SpatialPolygons
, więc moje dane muszą być na liście. więc stworzyłem pętlę, aby spróbować pobrać moje dane do formatu listy z macierzy.
Tworzę pętlę za kodem, który znalazłem w kilku innych pytaniach na tej stronie. Zaczynałem każdy krok, aby spróbować zrozumieć, dlaczego otrzymuję tylko jeden wielokąt jako wynik, nawet jeśli mam 2 zestawy punktów.
for (i in 1:2) {
pts <- rbind(c(square[i,1], square[i,2]), c(square[i,3], square[i,4]),
c(square[i,5],square[i,6]), c(square[i,7],square[i,8]),
c(square[i,9],square[i,10]))
sp1 <- list(Polygon(pts))
sp2 <- list(Polygons(sp1,i))
sp = SpatialPolygons(sp2)
}
plot(sp)
Czy możesz mi pomóc zrozumieć, w jaki sposób dostosowuję kod, aby wypisać dwa wielokąty zamiast jednego? A także, w jaki sposób przypiszę identyfikator do każdego z wielokątów, biorąc pod uwagę, że używam matrycy (kwadratu) jako mojego początkowego zestawu danych i jeśli przypiszę identyfikator postaci, przekształca ona wszystkie moje dane w znak.
Moim ostatecznym celem jest dwa wielokąty w obiekcie SpatialPolygons
, pierwsza z identyfikatorem SJER1
a drugi z identyfikatorem SJER2
przechowywane w obiekcie SpatialPolygons
.
Potem zapiszę to do shapefile.
Dziękujemy za wskazówki i cierpliwość. Leah
bardzo dziękuję. Myślę, że rozumiem to lepiej, czy możesz mi powiedzieć dlaczego tak: 'for (i in 1: 2) { polys <- SpatialPolygons (lista ( Wielokąty (lista (wielokąt (macierz (kwadrat [i, ] Ncol = 2, byrow = PRAWDA))), identyfikator [i]) )) } ' lub 'a <- wektor ('lista', długość (2)) do (I, 1 : 2) { a [[i]] <- lista ( Wieloboki (lista (wielokąt (macierz (kwadrat [i,], ncol = 2, byrow = PRAWDA))), ID [i]) ) } SpatialPolygons (a) ' nie działają? Muszę uruchomić to w wielu punktach, więc potrzebuję jakiejś pętli. Twój czas i wyjaśnienie są doceniane. Sprawdziłem również dokumentację. –
@LWasser Pierwszy zastępuje 'polys' za każdym razem przez pętlę, więc kończysz z obiektem' SpatialPolygons', który zawiera tylko ostatni poli. Drugi zadziała, jeśli usuniesz najbardziej zewnętrzną 'list()', tj. Po prostu wykonaj 'a [[i]] <- Wielokąty (lista (wielokąt (macierz (kwadrat [i,], ncol = 2, byrow = PRAWDA))), ID [i]) '. Dzieje się tak, ponieważ 'a' jest już listą. – jbaums
@LWasser, zobacz moją edycję dla podejścia, które może być użyte do zautomatyzowania procesu, jeśli masz wiele wierszy. (Również, przepraszam, jakoś zapomniałem dołączyć kod, który tworzy SPDF.) – jbaums