# Données cartographiques de Bouzy

Ce dossier contient les données statiques utilisées par la carte Leaflet de Bouzy (`51079`). Les fichiers sont des `FeatureCollection` GeoJSON compactes, encodées en UTF-8 et exprimées en WGS 84 (`EPSG:4326`). L’orthophotographie IGN reste, elle, chargée à distance par WMTS et n’est pas copiée dans ce dossier.

## Fichiers

| Fichier | Contenu | Propriétés conservées ou ajoutées |
| --- | --- | --- |
| `commune.geojson` | Limite communale de Bouzy | `id`, `nom` |
| `parcelles.geojson` | Parcelles cadastrales | `id`, `commune`, `prefixe`, `section`, `numero`, `contenance`, `arpente`, `lieu_dit` |
| `lieux-dits.geojson` | Polygones des lieux-dits cadastraux | `commune`, `nom` |
| `vignes-bdtopo.geojson` | Zones de végétation BD TOPO® qualifiées `Vigne` et intersectant Bouzy | identifiant `cleabs`, dates, méthode et précision d’acquisition, sources |
| `parcelles-vignes.geojson` | Sous-ensemble cadastral retenu comme fond des parcelles de vigne | mêmes propriétés que `parcelles.geojson` |
| `parcelles-voisines.geojson` | Quatre parcelles cadastrales de Tours-sur-Marne et Louvois chargées en complément du cadastre de Bouzy | mêmes propriétés cadastrales, `commune_nom` et `lieu_dit` |
| `parcelles-bandock.geojson` | Surfaces mises en avant et cépages déclarés par la Maison Bandock | `source_parcel_id`, référence, lieu-dit, `cepage`, `coverage`, contenances et provenance |
| `*.geojson.gz` | Sidecars gzip des sept GeoJSON précédents | contenu identique après décompression |
| `manifest.json` | Sources, millésimes, date d’extraction, emprise, comptes, tailles et empreintes SHA-256 | — |

Les noms cadastraux sont laissés tels qu’ils sont publiés par la DGFiP. Ils ne doivent pas être normalisés ni corrigés silencieusement. La couche publiée des lieux-dits n’expose pas d’identifiant propre et un même nom peut désigner plusieurs géométries ; `nom` ne doit donc pas être utilisé comme clé unique.

La contenance cadastrale est exprimée en mètres carrés. Elle peut différer légèrement de la surface calculée à partir de la géométrie. Les couches officielles ne contiennent ni propriétaires, ni exploitants, ni cépages. La couche `parcelles-bandock.geojson` ajoute uniquement les indications fournies par la Maison ; elle ne permet pas de déduire une propriété ou une exploitation depuis les données IGN ou cadastrales.

## Enrichissement déterministe des parcelles

Le champ `properties.lieu_dit` de chaque parcelle est ajouté pendant la génération, avant la livraison au navigateur. Le traitement :

1. retient comme candidats les lieux-dits dont la boîte englobante intersecte celle de la parcelle ;
2. teste un point représentatif de la parcelle et les centres d’une grille `7 × 7` qui se trouvent réellement à l’intérieur de sa géométrie ;
3. attribue le nom qui recueille le plus de points ;
4. départage une égalité par ordre alphabétique et écrit `null` si aucun lieu-dit ne correspond.

Il n’y a ni hasard ni dépendance à la position du pointeur : à sources et version de script identiques, l’enrichissement produit le même résultat. Il s’agit d’une jointure cartographique destinée à l’affichage, pas d’une nouvelle information juridique du cadastre.

## Sélection des parcelles de vigne

`parcelles-vignes.geojson` sert de fond cadastral gris allégé. Pour chaque parcelle, le traitement calcule un point représentatif puis les centres d’une grille `7 × 7` qui se trouvent réellement à l’intérieur du contour. La parcelle est retenue lorsqu’au moins `50 %` de ces échantillons sont couverts par une géométrie de `vignes-bdtopo.geojson`.

Avec les millésimes documentés ci-dessous, cette règle conserve `2 467` parcelles sur `3 615`, dont les `17` références déclarées à Bouzy par la Maison Bandock. Quatre références complémentaires à Tours-sur-Marne et Louvois sont chargées séparément dans `parcelles-voisines.geojson`. La méthode est déterministe, mais reste une sélection cartographique indicative : la BD TOPO® n’est pas exhaustive à l’échelle de chaque petite parcelle et le taux échantillonné n’est pas une mesure de surface juridique.

## Parcelles et cépages déclarés par la Maison

La source déclarative maintenue dans le projet est `config/maps/bouzy-bandock-parcels.json`. Le script `scripts/generate-bouzy-bandock-parcels.py` réalise une jointure exacte sur la section et le numéro avec `parcelles.geojson`. Il échoue si une référence est absente, dupliquée ou ambiguë. La référence `AP 50`, citée deux fois dans la saisie initiale, n’apparaît ainsi qu’une fois dans la configuration.

La couche produite contient `22` surfaces issues de `21` références cadastrales : `19` surfaces `pinot_noir` et `3` surfaces `chardonnay`. Les codes `cepage` et `coverage` (`full`, `north`, `south`, `custom`) sont stables et volontairement non traduits ; les libellés visibles relèvent du front.

Deux cas sont découpés par une ligne orientée d’ouest en est :

- `AR 24` : nord en `pinot_noir`, sud en `chardonnay`, selon la ligne `[4.1289874, 49.0868717]` → `[4.1291345, 49.0868901]` ;
- `AK 150` à `AK 153` : seule la portion nord en `pinot_noir` est émise, selon la ligne commune `[4.1424488, 49.0856118]` → `[4.1442501, 49.0854845]`. Les portions sud restent absentes de la couche Bandock.

À Tours-sur-Marne, la forme déclarée en `pinot_noir` sur `ZB 90`, `ZB 67` et `ZB 68` est reproduite depuis la capture fournie par la Maison, géoréférencée sur les sommets du cadastre puis découpée par référence cadastrale. À Louvois, la parcelle `AD 39` est déclarée entièrement en `pinot_noir`.

Le découpage est géométrique, pas surfacique. Une surface partielle a donc `contenance: null` : aucune demi-contenance n’est inventée. `contenance_parcelle_complete` conserve uniquement la contenance cadastrale du contour source complet.

## Sources, millésimes et licence

### Cadastre

- Producteur : DGFiP ; redistribution : DINUM / data.gouv.fr.
- Jeu : [Cadastre Etalab](https://cadastre.data.gouv.fr/datasets/cadastre-etalab).
- Millésime figé : `2026-06-01`.
- Ressources communales : `https://cadastre.data.gouv.fr/data/etalab-cadastre/2026-06-01/geojson/communes/51/51079/`.
- Ressources complémentaires : Tours-sur-Marne `51576` et Val de Livre/Louvois `51564`, même millésime.
- Licence : [Licence Ouverte 2.0](https://www.etalab.gouv.fr/licence-ouverte-open-licence/).

### Zones de vigne

- Producteur : IGN.
- Jeu : BD TOPO®, classe `Zone de végétation`, valeur `nature = Vigne`.
- Millésime annoncé par le service lors de cette génération : `2026-06-15`.
- Service : WFS Géoplateforme `https://data.geopf.fr/wfs/ows`, couche `BDTOPO_V3:zone_de_vegetation`.
- Documentation : [mise à jour des vignes et vergers dans la BD TOPO](https://cartes.gouv.fr/aide/fr/partenaires/ign/generalites-ign/actualites/2026-01-vignes-et-vergers/).
- Licence : [Licence Ouverte 2.0](https://www.etalab.gouv.fr/licence-ouverte-open-licence/).

### Orthophotographie

- Producteur : IGN.
- Jeu : BD ORTHO®, couche WMTS `HR.ORTHOIMAGERY.ORTHOPHOTOS`, pyramide `PM_6_19`.
- Prise de vue de référence pour la Marne : millésime `2022`, résolution `20 cm`.
- Service : `https://data.geopf.fr/wmts`.
- Licence : [Licence Ouverte 2.0](https://www.etalab.gouv.fr/licence-ouverte-open-licence/).

Attribution complète conseillée : `© IGN — BD ORTHO® (Marne, prise de vue 2022) / BD TOPO® (millésime 2026-06-15) — Licence Ouverte 2.0 · © DGFiP, redistribution DINUM — Cadastre Etalab (millésime 2026-06-01) — Licence Ouverte 2.0`.

## Limites de la représentation des vignes

Le WFS effectue d’abord une présélection sur la boîte englobante de Bouzy. Le traitement local retire ensuite les objets dont la géométrie n’intersecte pas la commune. Les objets qui franchissent la limite communale sont toutefois conservés entiers : ils sont filtrés par intersection, mais ne sont pas découpés exactement sur cette limite.

Le masque communal du front est volontairement semi-transparent. Il **atténue** l’orthophotographie et les portions de polygones situées hors de Bouzy ; il ne les supprime pas et ne réalise aucun clipping géométrique.

La BD TOPO® décrit des zones surfaciques détectées et consolidées à des fins topographiques. Sa documentation annonce une exhaustivité pour les vignes de plus de `1 000 m²`, avec la présence possible d’objets entre `500` et `1 000 m²`. La couche ne doit donc pas être présentée comme un inventaire cadastral exhaustif de toutes les parcelles plantées.

Enfin, ces polygones ne décrivent ni les rangs de vigne ni leur orientation. Les rangs éventuellement visibles sur la carte proviennent uniquement des pixels de l’orthophotographie 2022 ; aucune ligne de rang n’est déduite ou publiée dans les GeoJSON.

## Sidecars gzip

Le script produit, pour chacun des six fichiers `.geojson`, un sidecar homonyme `.geojson.gz` avec `gzip --best --no-name`. L’option `--no-name` exclut le nom et l’horodatage du fichier source afin de rendre l’archive reproductible. Le manifeste conserve la taille et l’empreinte SHA-256 de la version brute et de son sidecar.

Le code front continue de demander l’URL `.geojson`. En production, le serveur HTTP doit sélectionner le sidecar pour les clients qui annoncent `Accept-Encoding: gzip` et répondre avec `Content-Encoding: gzip` ainsi qu’un type adapté, par exemple `application/geo+json`. Servir directement un fichier `.gz` sans cet en-tête provoquerait une réponse incorrecte pour `response.json()`.

## Reproduction

Prérequis : Bash, Python 3, `curl`, `gzip`, `jq`, ainsi que `sha256sum` ou `shasum`.

Depuis la racine du projet :

```bash
./scripts/build-bouzy-map-data.sh
```

Le script télécharge les sources, ne conserve que les attributs utiles, valide la structure des GeoJSON, vérifie que la réponse WFS n’est pas tronquée, enrichit les parcelles, filtre les vignes par intersection communale, sélectionne le fond cadastral viticole, joint la déclaration Bandock, génère les sidecars gzip puis met à jour `manifest.json`. Le présent README n’est pas modifié par le script.

La seule couche Bandock peut aussi être régénérée sans téléchargement ni modification des quatre fichiers officiels dérivés déjà présents :

```bash
python3 scripts/generate-bouzy-bandock-parcels.py
```

Validation rapide :

```bash
jq -e '.type == "FeatureCollection" and (.features | type == "array")' public/maps/bouzy/*.geojson
for file in public/maps/bouzy/*.geojson.gz; do gzip --test "$file"; done
jq '{generated_at, commune, sources, clipping, selection_parcelles_vignes, files}' public/maps/bouzy/manifest.json
```
