J'essaie de convertir un enregistrement MULTIPOLYGON de PostGIS (v2.2.2) vers le fichier de formes via QGIS (v2.18.9), mais la géométrie source et le fichier de formes résultant ne correspondent pas comme indiqué sur les images ci-dessous (la couche rouge est la source et la couche verte est le fichier de formes résultant). J'obtiens le même résultat si j'effectue la conversion via ogr2ogr depuis GDAL v2.0.0. Cette conversion dure environ 40 minutes.
Si je transfère la géométrie source vers POLYGON et effectue la conversion, le fichier de formes résultant est correct et la conversion est beaucoup plus rapide (7 secondes + 17 secondes pour le vidage). Mais, au lieu de 5 fonctionnalités, je me retrouve maintenant avec 305188.
Les enregistrements MULTIPOLYGON source sont créés par ST_Union sur les cellules adjacentes si cela est important.
Suis-je en train de manquer quelque chose? Existe-t-il un moyen d'effectuer la conversion correcte? Quelqu'un peut-il expliquer pourquoi cela se produit?
Fichier de formes exporté avec des trous remplis marqués par des flèches
J'ai plus de détails:
pgsql2shp produit le même fichier de formes résultant comme QGIS ou ogr2ogr.
@dbaston - J'ai coupé la plupart des données et laissé la partie autour de la zone présentée sur les images ci-dessus (autour ('POINT (-89.45 29.99)', 4326)). J'ai converti ce petit échantillon et obtenu le même résultat. Si vous ou quelqu'un d'autre veut essayer la conversion sur le même échantillon, vous pouvez obtenir le vidage ici:
Exemple de sauvegarde de données à partir de PostgreSQL v9.5
Au bout de 31 heures, le ST_IsValid a renvoyé true sur toute la géométrie de l'ensemble de données complet. J'ai obtenu le même résultat pour le plus petit échantillon disponible sur le lien ci-dessus. Cependant, vérifiez la validité dans QGIS pour le même ensemble de données plus petit retourné:
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...
Comment se fait-il qu'il y ait une différence dans le contrôle de validité dans PostGIS et QGIS?
Pour vérifier plus loin, j'ai supprimé toutes les parties du polygone sauf celle marquée en bleu sur l'image ci-dessus. J'ai vérifié son format WKT et il a l'air bien. Et maintenant, la conversion en fichier de formes avec uniquement cette fonctionnalité était correcte.
Est-ce que cela a un sens? J'ai vérifié plus de jeux de données créés par ST_Union sur les cellules adjacentes et découvert que le même problème existait également lors de la conversion en fichier de formes. Les mêmes données converties en GeoJSON produisent le résultat correct.
MULTIPOLYGON a été créé à partir de la géométrie POLYGON avec l'expression suivante:
st_multi(st_union(st_buffer(geom,0)))
ogr2ogr
et pgsql2shp
différemment, mais j'ai vu des cas qui déconcertent chacun d'eux. Si vous pouvez réduire le problème à une entrée plus petite, ce serait utile comme rapport de bogue.