2016-11-22 5 views
-4

Ich möchte eine Teilmenge in meinem Shapefile durchführen, ohne den Namen der ersten Spalte in der DBF-Datei anzugeben. Um genauer zu sein, möchte ich alle Zeilen mit dem Wert 1 in der ersten Spalte der DBF auswählen, aber ich möchte den Namen dieser Spalte nicht angeben.Kann keine Teilmenge Daten in einem Shapefile

Zum Beispiel dieses Skript funktioniert, weil ich den Namen der Spalte (als column) angeben

library(rgdal) # readOGR 

shapeIn <- readOGR(nomeFile) 
shapeOut <- subset(shapeIn, columnName == 1) 

stattdessen ist es nicht funktioniert

shapeOut <- (shapeIn[,1] == 1) 

und ich erhalte eine Fehlermeldung: Vergleich (1) ist nur für Atom- und Listentypen möglich. ShapeOut und shapeIn sind ESRI-Vektordateien.

Dies ist der Header meiner shapeIn

coordinates mask_1000_ 
1 (54000, 1218000)   0 
2 (55000, 1218000)   0 
3 (56000, 1218000)   0 

Können Sie mir helfen? Danke

+0

Sehr geehrte Community, mein Post, mit dem Titel "Nicht in der Lage, Daten in einem Shapefile zu unterteilen" wurde 4 mal downvoted. Trotzdem wurde das Problem am 24. November von LoBu positiv gelöst. Könnten Sie bitte angeben, was ich tun muss, um mein Verbot zu entfernen, weil ich das Forum gerne wieder nutzen möchte? Vielen Dank. – ilFonta

Antwort

2

Diese

shapeOut <- (shapeIn[,1] == 1) 

nicht funktioniert beacuse SpatialPolygonsDataFrames andere Informationen enthalten, die von den Daten. Daher funktioniert die "gemeinsame" data.frame-Unterteilung nicht auf die gleiche Weise. Um es funktioniert, müssen Sie die „logische Prüfung“ für subsetting auf dem @data Slot machen: dies funktionieren soll (entweder mit Teilmenge oder „direkt“ Indizierung):

shapeOut <- subset(shapeIn, [email protected][,1] == 1) 

ODER

shapeOut <- shapeIn[[email protected][,1] == 1,] 

(Nach den jüngsten Erfahrungen ist es jedoch selten eine gute Idee, sich auf Daten nach Spaltennummer zu beziehen ... ;-))

ciao Giacomo !!!

+0

Vielen Dank liebe Lorenzo. Ciao, un abbraccio !!! – ilFonta