---
suivi: 1920
date: 2026-10-15
sujet: Carte des parcelles, simplification Lambert 93
chantier: module-foncier
type: correctif
statut: poussé
hash: 955daf8c4
fichiers:
  - app/Services/Foncier/ParcelleCarteEnsemble.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - resources/js/Components/Foncier/ParcellesCarte.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/ParcelleCarteSimplify1920Test.php
  - public/build/manifest.json
  - docs/suivi/SUIVI_1920_carte_simplify_lambert.md
---

# SUIVI #1920 — carte, simplification en Lambert 93

## PROMPT ENVOYÉ

MySQL 8 refuse ST_Simplify sur un contour en SRID 4326 (erreur 3618). Simplifier en Lambert 93 puis revenir en 4326. Vérifier les centroïdes et l'ordre des axes. Journaliser une erreur de carte sans changer le message. Déplacer le sélecteur de fond, caché sous le zoom.

## Fiches lues

- #1917 : la carte reprend la requête filtrée de la liste. Les contours passaient par ST_Simplify en degrés sur la géométrie stockée.
- #1913 : ST_Transform vers 2154 est déjà utilisé en production pour la surface. Le contour reste stocké en 4326.

## SYNTHÈSE

Contours, au plus 400 parcelles, zoom 13 ou plus :

ST_AsGeoJSON(ST_Transform(ST_Simplify(ST_Transform(g.geom, 2154), ?), 4326), 6)

Tolérance en mètres : 1 m à partir du zoom 17, 2 m à partir du zoom 15, 5 m en dessous. Vers 44° N, un pixel fait environ 1 m au zoom 17 et environ 14 m au zoom 13. La tolérance reste sous le pixel : le dessin ne bouge pas, le nombre de sommets baisse. Le plafond de 400 parcelles borne le coût des deux transformations.

ST_AsGeoJSON produit du GeoJSON en longitude puis latitude. L'option 2 de cette fonction ajoute seulement un identifiant de projection, elle ne change pas l'ordre. Elle n'est pas utilisée. L'enregistrement des contours utilise déjà l'option 2 de ST_GeomFromGeoJSON, qui lit la longitude d'abord.

ST_Centroid sur un SRS géographique lève la même erreur 3618. Les points passent par le même aller-retour Lambert 93, puis ST_Latitude et ST_Longitude. Ce n'est pas un calcul cartésien sur 4326.

Une erreur de l'endpoint est journalisée avec la trace. La réponse est en erreur et l'écran garde « La carte n’a pas pu charger les parcelles. ». Le sélecteur de fond, le message et le lien des parcelles sans contour sont en haut à droite, au-dessus des contrôles. Le zoom reste en haut à gauche.

La requête filtrée et les droits ne changent pas. Aucune géométrie n'est réécrite.

MySQL local 127.0.0.1:3306 a refusé la connexion. La requête n'a pas pu être exécutée sur une parcelle de Vendargues.

## DÉPLOIEMENT-TEST

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

Pas de migration. Pas de route nouvelle.

1. Carte, zoom communal : les contours s'affichent, une parcelle de l'Hérault tombe vers longitude 4 et latitude 43,7.
2. Zoom France : des points, pas l'erreur 3618.
3. Couper la requête : le message ambre s'affiche, le fond de carte reste.
4. Plan IGN et photographies : boutons en haut à droite, lisibles au-dessus du zoom.

## LEÇON

ST_Simplify et ST_Centroid ne sont pas implémentés sur un SRS géographique. Le contour reste en 4326 ; seule la mesure ou la simplification passe en 2154. ST_AsGeoJSON est déjà en longitude, latitude : ne pas lui passer l'option 2 en croyant inverser les axes.
