Ich habe zwei Klassen, die dasselbe CRS (Latitute und Longitude) teilen:
bolognaQuartieriMap
: aSpatialPolygonDataFrame
enthält Daten eines Stadtbezirks.crashPoints
: aSpatialPointsDataFrame
enthält Daten von Unfällen.
Sie sind gut geplottet mit:
plot(bolognaQuartieriMap)
title("Crash per quartiere")
plot(crashPoints, col="red",add=TRUE)
Was ich brauche, ist die Anzahl der Punkte ( crashPoints
) in jedem Polygon zu erhalten, die bilden bolognaQuartieriMap
. Es wurde mir vorgeschlagen, es zu verwenden, over()
aber es gelang mir nicht.
Ich möchte eine andere Option lassen. Sie können die Aufgabe mit
poly.counts()
imGISTools
Paket erreichen. Mit den Beispieldaten von rcs können Sie Folgendes tun. Wenn Sie sich die Funktion ansehen, werden Sie feststellen, dass die Funktion wie folgt geschrieben istcolSums(gContains(polys, pts, byid = TRUE))
. Sie können also einfachgContains()
imrgeos
Paket und verwendencolSums()
.Oder
Und das Ergebnis ist:
quelle
Sie können das gleiche mit dem
sf
Paket erreichen. Überprüfen Sie den reproduzierbaren und kommentierten Code unten. Das Paketsf
wird verwendet, um räumliche Objekte als einfache Feature-Objekte zu behandeln. In dieser Antwort wird das Paketraster
nur zum Herunterladen von Beispielpolygondaten und das Paketdplyr
für die Datentransformation am Ende verwendet.quelle