Einfache Möglichkeit, Rahmenpolygone eines Shapefiles zu erkennen / auszuwählen

8

Ich suche nach einer einfachen Möglichkeit, Randpolygone eines Shapefiles zu erkennen / auszuwählen. Randpolygone sind hier Polygone, die nicht vollständig von anderen Polygonen umgeben sind, dh Polygonen, die sich am Rand des Shapefiles befinden (die Ausdehnung des Shapefiles wird vollständig von Polygonen bedeckt). Im folgenden Beispiel sind die gewünschten Polygone schattiert:

Randpolygone

Lösungen mit Arcgis, QGIS, R, Python sind sehr willkommen.

DJack
quelle
1
Ist der Rand immer eine schöne regelmäßige Form wie dieses Rechteck? Übrigens: Dieser letzte Satz wirkt etwas anspruchsvoll.
BradHards
Nee. Die Grenze ist unregelmäßig. Ein solcher Extrakt mit Maske oder etw wäre meiner Meinung nach nicht ideal. NB: Der letzte Satz wurde geändert, Sie hatten Recht.
DJack

Antworten:

7

Erstellen Sie eine neue Polygonebene, zeichnen Sie ein einzelnes Polygon, das alle Ihre aktuellen Polygone abdeckt, schneiden Sie das neu gezeichnete Polygon basierend auf allen vorhandenen Polygonen aus und wählen Sie dann mit select alle Polygone aus Ihrem aktuellen Satz aus, die ein Liniensegment mit dem neu gezeichneten Polygon teilen nach Ort und Sie sind fertig


--- Bearbeitete Version viel effizienter, basierend auf Kommentar ----

Lösen Sie alle Polygone in einem auf und wählen Sie dann alle Polygone aus Ihrem aktuellen Satz aus, die ein Liniensegment mit dem neu aufgelösten Polygon teilen. Verwenden Sie dazu die Option Nach Position auswählen, und fertig

Hedinn
quelle
2
OK richtig. Aber anstatt das Polygon zu zeichnen, werde ich alle meine Polygone auflösen, um nur eines zu erhalten. Viel effizienter als das Zeichnen. Danke.
DJack
1
Ja, Sie haben
Recht
2

Mit R:

ShapeFile.Dissolved<-rgeos::gUnionCascaded(ShapeFile)
x<-rgeos::gRelate(ShapeFile, ShapeFile.Dissolved, byid= TRUE)

Ich bekomme 3 DE-9IM- Fälle:

table(x)
2FF10F212 2FF11F212 2FF1FF212 
       63      2470    174495  

Der resultierende DE-9IM-Zeichenfolgencode kann wie folgt interpretiert werden:

1) 2FF1FF212: Stellen Sie Polygone aus dem ersten Shapefile dar, die den Rand des Polygons des zweiten Shapefiles nicht schneiden

2) 2FF11F212: Stellen Sie Polygone aus dem ersten Shapefile dar, die den Rand des Polygons des zweiten Shapefiles mit einer Linie schneiden

3) 2FF10F212: Stellen Sie Polygone aus dem ersten Shapefile dar, die den Rand des Polygons des zweiten Shapefiles mit einem Punkt schneiden

Die beiden letzten Fälle sind meine gesuchten Randpolygone. Ich habe ihren Ausweis mit:

poly.border<-which(x %in% c("2FF10F212","2FF11F212"))

Mit Arcmap:

1) Auflösen (Datenverwaltung) ohne Auswahl von "Dissolve_Field"

2) Wählen Sie nach Ort. Wählen Sie Features aus "Original-Shapefile", Quellenebene: "Shapefile aufgelöst", Räumliche Auswahlmethode für Target-Layer-Features: Berühren Sie die Grenze des Source-Layer-Features.

3) Starten Sie die Bearbeitung und löschen Sie ausgewählte Funktionen

DJack
quelle