---
suivi: 1914
date: 2026-10-15
sujet: Refus des contours ambigus ou aberrants
chantier: module-foncier
type: correctif
statut: poussé
hash: 50b765130
fichiers:
  - app/Services/Foncier/IgnCadastreParcelleService.php
  - app/Services/Foncier/ParcelleGeometrieImportService.php
  - app/Services/Foncier/ParcelleContourRattrapage.php
  - app/Support/Foncier/SurfaceLambert93.php
  - app/Console/Commands/ParcellesRecupererContoursCommand.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Http/Controllers/Foncier/DossierFoncierController.php
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/ParcelleContourChoix1914Test.php
  - tests/Unit/ParcelleContourRattrapage1913Test.php
  - tests/Unit/ParcelleImportDgfip1911Test.php
  - public/build/manifest.json
  - public/build/assets/Show-Dj7CnSWN.js
  - public/build/assets/app-Dr9hAhbp.js
  - docs/suivi/SUIVI_1914_contours_ambigus_aberrants.md
---

# SUIVI #1914 — contours ambigus ou aberrants

## PROMPT ENVOYÉ

Correctif du rattrapage #1913, avant le lot complet. Ne pas garder le premier contour quand l'IGN en renvoie plusieurs. Ne pas enregistrer un contour dont la surface Lambert sort de [0,5 ; 2] fois la surface cadastrale. Nettoyer les contours déjà aberrants. Documenter les quatre introuvables.

## Fiches lues

- #1913 : le rattrapage enregistrait le contour puis signalait l'écart. La surface cadastrale n'est jamais réécrite. `ign_contour_resultat` tient dans 16 caractères.
- #1911 : l'idu d'arrondissement (132xx, 751xx, 6938x) filtre la réponse de la commune mère. Sans ce code, plusieurs arrondissements restent en lice.
- #1852 : une section d'une seule lettre renvoie HTTP 400. Ce n'est pas le cas des quatre introuvables (sections à deux lettres, HTTP 200, zéro parcelle).

## SYNTHÈSE

Le lot d'essai a deux causes distinctes.

Marseille 2186 (13055 0C 0155, cadastrale 1 350 m², contour 2,16 m²) et 2185 (13055 0C 0107, 1 208 m², contour 14,48 m²) : l'IGN renvoie une parcelle par arrondissement. La première retenue était 13207… contenance 2, puis 13205… contenance 13. Sans arrondissement enregistré, aucun idu `13055000…` ni préfixe `000` ne départage. Résultat « ambigu », rien n'est écrit.

Fontanès 2669 (34102 0C 0581) : une seule parcelle IGN, idu `341020000C0581`, contenance 4 614, surface Lambert 5 331 m², cadastrale 493 m². Les Pennes-Mirabeau 2168 (13071 CE 0311) : une seule parcelle, contenance IGN 33 qui colle à la cadastrale, mais le polygone mesure 0,52 m². La bande [0,5 ; 2] refuse les deux. Un couple réel cadastral / contour IGN reste à quelques pourcents ; les quatre ratios constatés sont environ 0,0016, 0,012, 10,8 et 0,016. L'ancien facteur 10 ne faisait que journaliser et enregistrait quand même.

Une seule parcelle renvoyée est gardée. Plusieurs : idu exact `{commune}000{section}{numero}`, sinon le seul préfixe `000` de cette commune, sinon « ambigu ». L'arrondissement #1911 est appliqué avant. « ambigu » et « aberrant » ne sont pas repris sans `--reessayer`. La surface cadastrale n'est pas modifiée.

Le bouton de la fiche peut forcer un « aberrant » après confirmation. Un « ambigu » n'a pas de géométrie choisie : pas de forçage.

Les quatre introuvables ont répondu HTTP 200, `numberReturned=0` (pas une coupure, pas un 400). La commune existe. Le numéro demandé n'existe pas sur cette section : 13026 BE 0001 existe, pas BE 0042 ; 34246 AM 0001 existe, pas AM 0198 ; 34194 AC 0001 existe, pas AC 1370. Pour 34249 Saint-Drézéry, AI 0001 est déjà vide : la section AI n'est pas servie.

`--tester --parcelle=ID` affiche la réponse brute (coordonnées remplacées par `omises`). `--nettoyer` liste, `--nettoyer --appliquer` retire le contour, note « aberrant » et vide le centroïde. Aucune migration.

## DÉPLOIEMENT-TEST

git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync

Pas de migration.

1. php artisan parcelles:recuperer-contours --nettoyer
2. php artisan parcelles:recuperer-contours --nettoyer --appliquer
3. php artisan parcelles:recuperer-contours --tester --parcelle=2253
   puis 2115, 2132, 2242
4. php artisan parcelles:recuperer-contours
5. php artisan parcelles:recuperer-contours --appliquer --limite=20

## LEÇON

Ne jamais prendre `features[0]`. Plusieurs parcelles sans idu exact ni préfixe 000 : ne rien enregistrer. La bande [0,5 ; 2] se juge avant l'écriture. Introuvable veut dire corps IGN vide, pas une erreur de connexion : celle-ci reste « erreur » et sera retentée.
