Sto provando a creare un set di poligoni dalle posizioni dei vertici, salvati in formato X, Y. Per favore nuda con me come sono nuovo a R e ho passato un bel po 'di tempo a cercare altri post oggi.SpatialPolygons - Creazione di un set di poligoni in R dalle coordinate
Ecco un esempio dei miei dati: ogni riga rappresenta i vertici per un poligono. i poligoni sono piazze
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")'
Sto usando SpatialPolygons
, quindi i miei dati devono essere in un elenco. così ho creato un ciclo per tentare di ottenere i miei dati in un formato elenco da una matrice.
Ho creato un loop seguendo il codice che ho trovato in alcune altre domande su questo sito. Ho fatto fuori ogni passo per cercare di capire perché sto ottenendo solo un poligono come output anche se ho 2 set di punti.
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)
Potete per favore aiutarmi a capire come aggiusto il codice per scrivere due poligoni invece di uno solo? E anche, come assegno l'ID a ogni poligono dato che sto usando una matrice (quadrato) come set di dati di partenza e se assegno un id di carattere, trasforma tutti i miei dati in un personaggio.
Il mio obiettivo finale è di due poligoni nell'oggetto SpatialPolygons
, la prima con l'ID SJER1
e la seconda con l'ID SJER2
memorizzato nell'oggetto SpatialPolygons
.
Quindi scriverò su uno shapefile.
Grazie per qualsiasi consiglio e per la vostra pazienza. leah
vi ringrazio molto. penso di capirlo meglio comunque, puoi dirmi perché questo: 'for (i in 1: 2) { polys <- SpatialPolygons (list ( Polygons (list (Polygon (matrix (square [i, ], ncol = 2, byrow = TRUE))), ID [i]) )) } ' O ' un <- vettore ('list', la lunghezza (2)) per (i in 1 : 2) { a [[i]] <- elenco ( poligoni (elenco (poligono (matrice (quadrato [i,], ncol = 2, byrow = TRUE))), ID [i]) ) } Paziali spaziali (a) ' non funzionano? ho bisogno di eseguire questo su molti punti quindi ho bisogno di una sorta di ciclo. il tuo tempo e la tua spiegazione sono molto apprezzati. Ho anche revisionato la documentazione. –
@LWasser Il primo sovrascrive 'polys' ogni volta attraverso il ciclo, quindi si finisce con un oggetto' SpatialPolygons' che contiene solo l'ultimo poly. Il secondo funzionerà se si rimuove la 'lista() più esterna, vale a dire solo' a [[i]] <- Poligoni (lista (Poligono (matrice (quadrato [i,], ncol = 2, byrow = TRUE))), ID [i]) '. Questo perché 'a' è già una lista. – jbaums
@LWasser, vedere la mia modifica per un approccio che può essere utilizzato per automatizzare il processo se si dispone di più righe. (Inoltre, mi scuso, in qualche modo ho dimenticato di includere il codice che crea il SPDF.) – jbaums