Ich versuche zu erstellen, eine Reihe von Polygonen aus Vertex Standorten im X, Y-Format gespeichert. Entschuldige bitte, denn ich bin neu bei R und habe viel Zeit damit verbracht, andere Beiträge zu durchsuchen.SpatialPolygons - Erstellen einer Reihe von Polygonen in R von Koordinaten
Hier ist ein Beispiel für meine Daten - jede Zeile repräsentiert die Scheitelpunkte für ein Polygon. die Polygone Quadrate
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")'
ich SpatialPolygons
verwende, damit meine Daten in einer Liste sein müssen. Also habe ich eine Schleife erstellt, um zu versuchen, meine Daten aus einer Matrix in ein Listenformat zu bringen.
Ich erstelle eine Schleife folgenden Code, den ich in einigen anderen Fragen auf dieser Website gefunden habe. Ich habe jeden Schritt ausprobiert, um zu verstehen, warum ich nur ein Polygon als Ausgabe bekomme, obwohl ich 2 Sätze Punkte habe.
Können Sie mir bitte helfen zu verstehen, wie ich den Code anpassen, um zwei Polygone anstatt nur eines auszugeben? Und außerdem, wie ich die ID jedem Polygon zuordne, da ich eine Matrix (Quadrat) als mein Start-Dataset verwende und wenn ich eine Character-ID zugebe, transformiere ich alle meine Daten in ein Zeichen.
Mein Ziel ist es zwei Polygone im SpatialPolygons
Objekt, das erste mit der ID SJER1
und die zweite mit der ID SJER2
im SpatialPolygons
Objekt gespeichert.
Dann werde ich dies in ein Shapefile schreiben.
Vielen Dank für jede Anleitung und für Ihre Geduld. leah
vielen Dank. Ich denke, ich verstehe das besser aber, können Sie mir bitte sagen, warum entweder dies: 'für (i in 1: 2) { polys <- SpatialPolygons (Liste ( Polygone (Liste (Polygon (Matrix (Quadrat [i, ], NcoI = 2, byrow = TRUE))), ID [i]) )) } ' OR ' a <- Vektor ('Liste', die Länge (2)) für (i in 1 : 2) { a [[i]] <- Liste ( Polygone (Liste (Polygon (Matrix (Quadrat [i,], ncol = 2, Byrow = TRUE))), ID [i]) ) } SpatialPolygons (a) ' funktionieren nicht? Ich muss dies an vielen Punkten ausführen, so dass ich eine Art Schleife brauche. Ihre Zeit und Erklärung werden sehr geschätzt. Ich habe die Dokumentation auch überprüft. –
@LWasser Das erste überschreibt jedes Mal "Polys" durch die Schleife, sodass Sie am Ende ein 'SpatialPolygons'-Objekt erhalten, das nur das letzte Poly enthält. Die zweite Option funktioniert, wenn Sie die äußerste 'list()' entfernen, dh einfach 'a [[i]] <- Polygone (Liste (Polygon (Matrix (Quadrat [i,], ncol = 2, Byrow = TRUE))), ID [i]) '. Dies liegt daran, dass 'a' bereits eine Liste ist. – jbaums
@LWasser, siehe meine Bearbeitung für einen Ansatz, der verwendet werden kann, um den Prozess zu automatisieren, wenn Sie viele Zeilen haben. (Entschuldigung, ich habe irgendwie vergessen, den Code einzufügen, der das SPDF erzeugt.) – jbaums