Wie kann ich bei einem Raumobjekt in R alle seine Elemente so beschneiden, dass sie in einem Begrenzungsrahmen liegen?
Ich möchte zwei Dinge tun (im Idealfall weiß ich, wie man beides macht, aber beides ist eine akzeptable Lösung für mein aktuelles Problem - die Beschränkung eines Polygon-Shapefiles auf die kontinentalen USA).
Legen Sie jedes Element nicht vollständig im Begrenzungsrahmen ab. Dies scheint
bbox()<-
der logische Weg zu sein, aber es gibt keine solche Methode.Führen Sie eine echte Clip-Operation durch, sodass nicht infinitesimale Elemente (z. B. Polygone, Linien) an der Grenze abgeschnitten werden .
sp::bbox
Da mir eine Zuweisungsmethode fehlt, ist die einzige Möglichkeit, die ich mir ausgedacht habe, die Verwendungover
odergContains
/gCrosses
und die Verknüpfung mit einem SpatialPolygons-Objekt, das eine Box mit den Koordinaten der neuen Begrenzungsbox enthält. Wenn Sie dann ein Polygonobjekt beschneiden, müssen Sie herausfinden, welche Polygone im Vergleich zu Kreuz enthalten sind, und die Koordinaten dieser Polygone so ändern, dass sie das Feld nicht überschreiten. Oder so ähnlichgIntersection
. Aber es gibt doch einen einfacheren Weg?
Obwohl ich weiß, dass es viele Probleme mit Begrenzungsrahmen gibt und dass eine räumliche Überlagerung eines Polygons, das den interessierenden Bereich definiert, in der Regel vorzuziehen ist, funktionieren Begrenzungsrahmen in vielen Situationen einwandfrei und sind einfacher.
gIntersection
und hatte Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") : TopologyException: no outgoing dirEdge found at 3 2.5
heute keine Zeit zum Debuggen; schrieb eine schlampige Version und wird in Zukunft beheben.