datagouv / cadastre

Scripts de préparation des données cadastrales diffusées par Etalab
68 stars 11 forks source link

Polygones incorrects #19

Closed jdesboeufs closed 6 years ago

jdesboeufs commented 6 years ago

Remontée beta-testeur :

J’ai 53 ID pour lesquels j’ai eu des rejets d’intégration dans la géométrie : Multipolygon avec une ligne fermée (3 sommets) à la place du 2ème polygone :

aducos commented 6 years ago

Il y en a dans le fichier des parcelles et des polygones des batiments du cadastre

Il y a aussi des erreurs de "Self-intersection " et de "Ring Self-intersection" vu avec l'import postgis

Si ça peut intéresser j'ai un algo postgis pour réparer ce qu'il est possible de réparer ou mettre null quand ce n'est pas possible de réparer.

J'importe en premier les json dans postgis avec la commande:

ogr2ogr -f "PostgreSQL" PG:"host=${HOST} user=${USER} dbname=${DATABASE} password=${PASSWORD}" file.json --config PG_USE_COPY YES -nln ma_table

puis

SELECT *, case when st_isvalid(st_multi(wkb_geometry)) THEN st_multi(wkb_geometry) when ST_IsValidReason(st_multi(wkb_geometry)) like 'IllegalArgumentException: Invalid number of points in LinearRing found%' THEN cast(null as geometry) when st_isvalid(st_multi(st_buffer(wkb_geometry,0))) THEN st_multi(st_buffer(wkb_geometry,0)) when not st_isvalid(st_makevalid(st_multi(wkb_geometry))) then cast(null as geometry) when ST_GeometryType(st_makevalid(st_multi(wkb_geometry))) <> 'ST_MultiPolygon' then cast(null as geometry) else st_makevalid(st_multi(wkb_geometry)) end AS corrected_geometry FROM ma_table

jdesboeufs commented 6 years ago

Merci mais l'essentiel des erreurs est lié au driver GDAL, et les corrections via PostGIS ne seraient que des rustines. Par ailleurs nous n'utilisons pas PostGIS à ce stade de la chaîne de production ;)

jdesboeufs commented 6 years ago

Je travaille sur une nouvelle version du parsing des fichiers EDIGÉO. Celle-ci ne s'appuie pas sur GDAL.

En fait il semble que l'essentiel des problèmes vienne de cas de topologie incorrecte, lorsque plusieurs arcs entre deux noeuds sont présents dans le fichier.

jdesboeufs commented 6 years ago

La nouvelle version corrige au moins les 5 premières anomalies (vérification manuelle). À suivre.

jdesboeufs commented 6 years ago

Corrigé.

NikAub4 commented 2 years ago

Bonjour @jdesboeufs .

Votre post date un peu, mais j'ai toujours des problèmes avec le cadastre et peut-être pourrez-vous m'aider. Je réalise des fusions sous format Sqlite, à partir des fichiers Edigeo et Majic III, avec l'extension Cadastre de QGIS (dernière version), mais lors de cette fusion, il manque des parcelles au fichier de sortie. Après quelques recherches avec le CRIGE PACA, j'ai mis en évidence que les parcelles manquantes présentaient une ou plusieurs des invalidités suivantes (erreurs de géométrie) :

Je n'ai pas réussi à trouver d'outil permettant de réparer les fichiers source (EDIGEO), de manière à obtenir des fichiers de sortie Sqlite complets. Le problème a été signalé aussi bien aux développeurs de l'outil Cadastre, qu'à l'IGN et à la DGFIP, mais rien n'a changé...

Auriez-vous une solution?

Merci à vous.

Nikolas