Ich versuche, einen MULTIPOLYGON-Datensatz von PostGIS (v2.2.2) über QGIS (v2.18.9) in das Shapefile zu konvertieren, aber die Quellgeometrie und das resultierende Shapefile stimmen nicht mit den in den folgenden Bildern gezeigten überein (die rote Ebene ist die Quelle) und die grüne Schicht ist das resultierende Shapefile). Ich erhalte das gleiche Ergebnis, wenn ich die Konvertierung über ogr2ogr von GDAL v2.0.0 durchführe. Diese Konvertierung dauert ca. 40 Minuten.
Wenn ich die Quellgeometrie in POLYGON speichere und die Konvertierung durchführe, ist das resultierende Shapefile korrekt und die Konvertierung ist viel schneller (7 Sekunden + 17 Sekunden für Dump). Aber statt 5 Funktionen habe ich jetzt 305188.
Die Quell-MULTIPOLYGON-Datensätze werden von ST_Union in den benachbarten Zellen erstellt, wenn dies wichtig ist.
Vermisse ich etwas Gibt es eine Möglichkeit, die richtige Konvertierung durchzuführen? Kann jemand erklären, warum das passiert?
Exportiertes Shapefile mit gefüllten Löchern, die durch Pfeile markiert sind
Ich habe mehr Details:
pgsql2shp erzeugt das gleiche resultierende Shapefile wie QGIS oder ogr2ogr.
@dbaston - Ich habe die meisten Daten ausgeschnitten und den Teil um den Bereich herum belassen, der auf den obigen Bildern dargestellt ist (ungefähr ('POINT (-89.45 29.99)', 4326)). Ich habe diese kleine Stichprobe konvertiert und das gleiche Ergebnis erzielt. Wenn Sie oder jemand die Konvertierung für dasselbe Beispiel versuchen möchte, können Sie den Speicherauszug hier herunterladen:
Beispieldatensicherung von PostgreSQL v9.5
Nach 31 Stunden gab ST_IsValid für alle Geometrien aus dem gesamten Datensatz true zurück. Ich habe das gleiche Ergebnis für die kleinere Stichprobe erhalten, die über den obigen Link verfügbar ist. Überprüfen Sie jedoch die Gültigkeit in QGIS für denselben kleineren zurückgegebenen Datensatz:
ring 1 of polygon 712 not in exterior ring
ring 2 of polygon 712 not in exterior ring
ring 3 of polygon 712 not in exterior...
Wie kommt es, dass sich die Gültigkeitsprüfung in PostGIS und QGIS unterscheidet?
Um dies weiter zu überprüfen, habe ich alle Polygonteile mit Ausnahme des im obigen Bild blau markierten entfernt. Ich habe das WKT-Format überprüft und es sieht gut aus. Und jetzt war die Konvertierung in Shapefile mit nur dieser Funktion korrekt.
Ist das sinnvoll? Ich habe mehr von ST_Union erstellte Datensätze in den benachbarten Zellen überprüft und festgestellt, dass das gleiche Problem auch dort beim Konvertieren in Shapefile besteht. Dieselben in GeoJSON konvertierten Daten liefern das richtige Ergebnis.
MULTIPOLYGON wurde aus der POLYGON-Geometrie mit dem folgenden Ausdruck erstellt:
st_multi(st_union(st_buffer(geom,0)))
ogr2ogr
und pgsql2shp
unterschiedlich gehandhabt werden , aber ich habe Fälle gesehen, die jeden von ihnen stumpf machen. Wenn Sie das Problem auf eine kleinere Eingabe reduzieren können, ist dies als Fehlerbericht hilfreich.