Den Wert eines Slots für S4-Objekte erhalten?

8

Also habe ich ein spatialpolygons Objekt in R; aber ich bin mir nicht sicher, warum ich nicht in der Lage bin, den Bereich "Bereich" von ihm abzurufen.

Hier ist meine R-Sitzung:

%Vor%     
Calvin Cheng 03.01.2012, 06:26
quelle

2 Antworten

16

Zunächst sollten Sie sich darüber im Klaren sein, dass der @area -Slot keine zuverlässige Quelle für Informationen über den tatsächlichen Bereich eines SpatialPolygons* -Objekts ist. Wie in ?"Polygons-class" angegeben, wird der Slot @area nur als Ergänzung zum Plotten verwendet (verhindert, dass kleinere Polygone von größeren Polygonen überstrichen werden) und berücksichtigt die Projektion nicht und berücksichtigt nicht richtig Löcher in Polygonen.

Um genaue Bereiche zu erhalten, sollten Sie stattdessen rgeos::gArea() für Layer mit projizierten Koordinatenreferenzsystemen oder geosphere::areaPolygon() für diejenigen in Koordinatensystemen mit relativ langen Koordinaten (d. h. CRS(+proj=longlat) ) verwenden.

Wenn diese Einschränkungen aus dem Weg geräumt sind, zeigt das folgende Beispiel, wie Sie den Inhalt der @area Slots erhalten können, wenn Sie sie wirklich wollen.

Die Hauptkomplikation besteht darin, dass der Bereichssteckplatz zum Objekt Polygon gehört und nicht zum Objekt SpatialPolygons (das Objekt Polygon ) ein Element). Sie müssen also zuerst das SpatialPolygons -Objekt durchsuchen, um es zu den einzelnen Polygon -Objekten zu extrahieren.

Wenn Sie das getan haben, können Sie einfach den Operator @ verwenden, um den Inhalt des Bereichs-Slots zu extrahieren.

Im folgenden Beispiel wird das SpatialPolygons -Objekt verwendet, das in Abschnitt 7 von sp Paketvignette (Warnung, pdf) :

%Vor%     
Josh O'Brien 03.01.2012, 06:45
quelle
6

Sie können einen Bereich mit Funktionen im Paket rgeos berechnen, Beispiele unten mit Joshs Beispieldaten. Dies könnte sinnvoller sein, da der Slot area nur zum Plotten dient.

%Vor%

Alles auf einmal:

%Vor%

Das verwendete Koordinatensystem sollte berücksichtigt werden, dies ist nur ein roher geometrischer Bereich.

Die Hilfeseiten diskutieren den Slot area .

%Vor%
  

Beachten Sie, dass sich dieser Wert möglicherweise von den Werten unterscheidet       Bereich "Bereich" der Klasse "Polygone", da dieser Wert nicht       subtrahieren Sie den Bereich von Löchern in der Geometrie.

%Vor%
  

'Bereich': Objekt der Klasse '' numerisch ''; die Brutto-Gesamtfläche            der Polygonliste, aber nicht doppelt zählende Löcher (geändert            von 0.9-58 - Inseln werden summiert, Löcher werden eher ignoriert            als subtrahiert); Diese Werte werden verwendet, um sicherzustellen, dass            Polygone einer kleineren Fläche werden nach Polygonen von a dargestellt            größere Fläche, nicht die Projektion als Objekte davon respektieren            Klasse hat keine Projektion definiert

    
mdsumner 03.01.2012 08:09
quelle

Tags und Links