---
suivi: 1913
date: 2026-10-15
sujet: Rattrapage des contours cadastraux manquants
chantier: module-foncier
type: evolution
statut: poussé
hash: 330cd7c49
fichiers:
  - app/Models/ParcelleGeometrie.php
  - app/Models/Parcelle.php
  - app/Services/Foncier/ParcelleGeometrieImportService.php
  - app/Services/Foncier/IgnCadastreParcelleService.php
  - app/Services/Foncier/ParcelleContourRattrapage.php
  - app/Support/Foncier/SurfaceLambert93.php
  - app/Console/Commands/ParcellesRecupererContoursCommand.php
  - database/migrations/2026_10_15_160000_add_ign_contour_tentative_to_parcelles.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/ParcelleContourRattrapage1913Test.php
  - docs/suivi/SUIVI_1913_rattrapage_contours_ign.md
---

# SUIVI #1913 — rattrapage des contours cadastraux

## PROMPT ENVOYÉ

Rattrapage en masse des parcelles sans contour. Corriger d'abord la surface du contour en Lambert 93. Prouver l'appel IGN depuis la ligne de commande OVH par `--tester`. Commande `parcelles:recuperer-contours` : aperçu, lots, reprise, mémoire trouvé / introuvable / erreur. Ne pas écraser la surface cadastrale. Écart aberrant : contour gardé et listé. Pas d'écran, sauf si la ligne de commande ne joint pas l'IGN.

## Fiches lues

- #1852 : `ST_Area` sur le contour 4326 n'est pas la mesure à comparer au cadastre. La mesure attendue est `ST_Area(ST_Transform(geom, 2154))`. Ce lot-là ne l'avait pas changée.
- #1109 : l'alerte d'écart (facteur 10) ne bloque pas l'enregistrement. La parcelle 2669 a 5 314 m² calculés pour 493 m² cadastraux.
- #1911 : Paris, Lyon et Marseille s'interrogent avec la commune mère, puis le contour dont l'identifiant commence par l'arrondissement. Ne pas prendre le premier contour renvoyé.
- #1346 / #1355 : le HTTPS sortant de la ligne de commande OVH est ouvert, sauf `*.powerplatform.com`. `apicarto.ign.fr` n'est pas dans ce blocage. Le bouton web n'est donc pas livré : `--tester` le prouve.
- #1558 : le bouton de fiche récupère un contour à la fois. Ce lot ne le remplace pas.
- #1912 : l'entrée journal `parcelle_liste` est déjà à 240 mots. Une ligne nouvelle reste sous 250 avec le compteur du projet.

## SYNTHÈSE

La fiche lit la surface du contour en Lambert 93. Le contour reste stocké en WGS84. L'ancienne mesure n'était pas enregistrée : `--surfaces` compare les deux lectures et ne réécrit ni le contour ni la surface cadastrale. Si le polygone de la parcelle 2669 fait vraiment dix fois la surface cadastrale, l'alerte reste après le changement de projection.

`parcelles:recuperer-contours` sans option compte les parcelles sans contour, par département et par source. `--appliquer --limite=200` en traite un lot, avec 0,4 s entre deux appels. Une parcelle déjà contournée n'est pas reprise. Une introuvable n'est reprise qu'avec `--reessayer`. Une erreur (réseau, réponse autre que 400 ou 404) est reprise au lot suivant. Le bilan compte récupérés, introuvables, erreurs, restant, et liste les écarts aberrants.

## DÉPLOIEMENT-TEST

```
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan migrate --force
php artisan journal:sync
php artisan parcelles:recuperer-contours --tester
php artisan parcelles:recuperer-contours --surfaces
php artisan parcelles:recuperer-contours
php artisan parcelles:recuperer-contours --appliquer --limite=20
php artisan parcelles:recuperer-contours --appliquer --limite=20
php artisan parcelles:recuperer-contours --appliquer --limite=200 --source="DGFiP 2025"
```

Si `--tester` affiche une erreur de connexion, ne pas lancer `--appliquer`. Le bouton web n'est pas dans ce lot.

## LEÇON

Une réponse vide ou 400/404 est une introuvable, mémorisée, et le lot passe à la suivante. Une coupure réseau est une erreur : elle ne doit pas être marquée introuvable, sinon le lot ne la reprend plus. Le premier contour renvoyé pour Paris n'est pas le bon arrondissement : le rattrapage passe par l'import existant, qui filtre l'identifiant.
