2017-08-18 2 views
0

Ich verwende das Pysal-Werkzeug zur Analyse mehrerer Shapefiles (Typ Polygon), die die Ergebnisse von Segmentierungen in QGIS enthalten.Pysal erkennt einige Polygon-Nachbarn nicht

I lädt die Shape-Datei

segshp = pysal.weights.Queen.from_shapefile(vect)

wobei vect den Namen der entsprechenden Formdatei verwenden.

Das Problem ist, dass, wenn ich in das Nachbarwörterbuch schaue, wenn ein Polygon weniger als 2 Pixel teilt, es nicht als Nachbar betrachtet wird. Lassen Sie mich etwas besser zeigen:

Mit ArcGIS, ich berechne die Polygon-Nachbarn (Analyse-Tools -> Nähe ---> Polygon-Nachbarn), und zum Beispiel hat Polygon 1227 4 Nachbarn wie im Bild gezeigt.

Neighbors calculated with ArcGIS

Aber wenn in Python mit Pysal Laden, Polygon 1227 hat nur 3 Nachbarn und das eine fehlt, ist 3307, die nur eine 2 Pixel Grenze teilt. Das Gleiche passiert mit anderen Polygonen, die nur 1 oder 2 Pixel teilen. Diese "Schwelle" von 2 Pixeln ist genau das, was ich beim Analysieren einiger Polygone gesehen habe.

Neighbors calculated with Pysal

Gibt es trotzdem, dass „Schwelle“, um alle Nachbarn zu berücksichtigen zu ändern? Ich habe in der Pysal Dokumentation gesehen und dachte, vielleicht ist es mit dem Befehl verwendet ist

pysal.weights.user.min_threshold_dist_from_shapefile

oder etwas ähnliches, aber ehrlich gesagt habe ich keine Ahnung.

Ich habe auch versucht mit der Option pysal.weights.Rook ..., aber es erkennt weniger Nachbarn und findet mehr Inseln.

Vielen Dank

+0

Können Sie überprüfen, ob Ihr Shapefile gültig ist und das Polygon 3307 mit dem Polygon 1227 2 Scheitelpunkte gemeinsam hat? Versuchen Sie, die Geometrie in QGIS zu bearbeiten, sehen Sie sich die Scheitelpunkte von 3307 an. Versuchen Sie auch, die Geometrie in QGIS oder ArcGIS zu reparieren. – Charles

Antwort

0

Dank @Charles.

In der Tat scheint das das Problem zu sein. Obwohl die Polygone 1227 und 3307 eine gemeinsame Grenze haben, teilen sie sich keine Scheitelpunkte. Sobald ich sie manuell bearbeitet habe und einen kleinen Unterschied in den Koordinaten der neuen Scheitelpunkte korrigiert habe, erkennt das Pysal-Werkzeug sie als Nachbarn. Das Überprüfen der Geometrie des Shapefiles generiert keine ungültigen Geometrien, weder in ArcGIS noch in QGIS.

Ich werde versuchen, eine Möglichkeit zu finden, die "fehlenden" Scheitelpunkte in diesen Fällen zu erstellen, damit ich die Geometrie vor der Pysal-Linie "reparieren" kann (irgendwelche Ideen für diese Angelegenheit sind willkommen).

Wie auch immer, jetzt und unter Berücksichtigung der ursprünglichen Frage wurde das Problem gelöst.