Saison

Comment cette carte est fabriquée

Cette carte n'est pas une photo retouchée : c'est une illustration 3D de la Martinique entière, modélisée et rendue dans Blender à partir de données publiques, vue de dessus, puis découpée en ~100 000 tuiles d'image (zooms 10 à 18). Tout est produit par des scripts, sans retouche à la main.

1. La grille : de l'île aux blocs
  • Emprise : 61,245° O – 60,8° O, 14,38° N – 14,885° N, en projection Web Mercator (EPSG:3857), celle des cartes web.
  • Tuiles de 256 px au standard XYZ ; au zoom 18, un pixel vaut 0,6 m Mercator (≈ 0,58 m au sol à cette latitude).
  • Rendu par blocs de 8 × 8 tuiles (2 048 px, ≈ 1,2 km), regroupés en sections de 2 × 2 blocs : ni les données ni la scène 3D de l'île ne tiennent en un seul morceau.
  • Un relief grossier (pixels de 25 m) désigne les blocs utiles : la terre, les hauts-fonds et une couronne de mer d'un bloc autour des côtes, soit 1 211 blocs en 334 sections. Le large n'est pas rendu : c'est la couleur de fond de la carte.
2. Les données et leurs sources

Tout vient de services ouverts, interrogés directement en Web Mercator, par requêtes de 2 048 px au plus :

Relief et bathymétrie — IGN, RGE ALTI
Service WMS de la Géoplateforme (data.geopf.fr), couche ELEVATION.ELEVATIONGRIDCOVERAGE.HIGHRES, altitudes en float 32 bits. La Martinique n'a pas de LiDAR HD : la grille native est de 5 m, lissée pour effacer les marches. Le RGE ALTI inclut la bathymétrie côtière (Litto3D, jusqu'à −50 m environ).
Orthophotographie — IGN, BD ORTHO 20 cm
Couche WMS ORTHOIMAGERY.ORTHOPHOTOS, téléchargée à ≈ 0,3 m par pixel : elle guide les couleurs du sol et la végétation, et une version à 1 m débarrassée des bateaux donne les motifs des fonds marins (récifs, herbiers, sable).
Vecteurs — IGN, BD TOPO V3
Service WFS, en GeoJSON : bâtiments (emprise, hauteur, altitude du toit), tronçons de route (nature, largeur), zones de végétation (forêt, mangrove…), cours d'eau et plans d'eau, estran (plages de sable), terrains de sport, cimetières.
Cultures — IGN / ASP, Registre parcellaire graphique
Couche WFS RPG.LATEST:parcelles_graphiques : type de culture de chaque parcelle déclarée (bananeraies, canne à sucre, vergers, prairies, maraîchage…).
Occupation du sol — ESA WorldCover 2021
Carte mondiale à 10 m de l'Agence spatiale européenne (tuiles GeoTIFF sur AWS S3) : distingue forêts, arbustes, prairies, cultures, sols nus et eau, là où l'orthophoto seule confond forêt et prairie.
Libellés — OpenStreetMap
API Overpass : communes, lieux-dits et rues nommées.

Toutes les coordonnées sont ramenées en mètres Mercator locaux. Comme Mercator dilate les distances horizontales de 1/cos(latitude), altitudes et hauteurs sont multipliées par ce même facteur (≈ 1,03 ici) pour garder les proportions et des ombres justes.

3. Le relief et la mer
  • Au large, le levé n'a plus de mesures (valeurs aberrantes) : les trous sont comblés une fois pour toute l'île en prolongeant les fonds voisins, avec une plongée progressive jusqu'à −60 m sur 800 m, puis lissés et fondus sur 60 m avec les fonds mesurés. Comblés section par section, chaque morceau aurait inventé sa propre mer.
  • Le levé bathymétrique a enregistré les bateaux au mouillage comme des hauts-fonds : ils sont effacés par une ouverture morphologique (filtre minimum puis maximum).
4. La végétation : 1 arbre = 1 objet 3D

Sans LiDAR de hauteur de végétation, les arbres sont plantés par programme :

  • Un candidat tous les ~4,5 m (grille légèrement aléatoire), gardé selon un score : verdeur et ton sombre de l'orthophoto (vert moins rouge, car la brume tropicale bleuit la forêt), part d'arbres WorldCover, zones boisées BD TOPO.
  • Jamais d'arbres sur les bâtiments, routes, stades, cimetières et plans d'eau ; seulement des arbres isolés dans les champs et prairies du RPG ; les ombres profondes des ravines restent boisées.
  • Espèces selon le lieu : cocotiers près des plages et dans les bourgs, palétuviers dans la mangrove, deux silhouettes de feuillus ailleurs, petits fruitiers dans les vergers.
  • Bananeraies : bananiers en rangs de 3,5 × 2,4 m, orientés d'après les rayures visibles sur l'orthophoto (tenseur de structure) et calés sur un bord de la parcelle. La canne à sucre est un couvert dense au sol.
  • La plantation suit les coordonnées absolues : deux sections voisines plantent exactement les mêmes arbres dans leur recouvrement, sans raccord visible.
5. La modélisation dans Blender

Un script Python (bpy) construit la scène de chaque section dans Blender 5.2, sans interface :

  • Terrain : maillage tiré du relief (un sommet tous les ~2 m), sous la terre comme sous la mer.
  • Sol : matériau procédural. L'orthophoto floutée ne donne que les grandes teintes (≈ 30 %) ; le détail est généré (touffes, grain, micro-relief). Des masques ajoutent plages, champs de canne, galets des rivières et roche sur les à-pics.
  • Mer : couleur selon la profondeur, motifs du fond repris de l'orthophoto, écume au rivage ; au-delà de 25 à 55 m de fond, un bleu uni (#0b3f78) identique au fond de la carte.
  • Arbres : modèles low-poly (feuillus, cocotier, palétuvier, bananier, fruitier) instanciés par Geometry Nodes sur les points de plantation, à leur hauteur, avec une rotation aléatoire.
  • Bâtiments : emprises BD TOPO extrudées jusqu'à l'altitude du toit, toits plats aux couleurs des tôles.
  • Routes et cours d'eau : rubans drapés sur le relief, largeur selon la nature (9 m pour une route à 2 chaussées, 5 m à 1 chaussée, 2,5 m un chemin, 1,2 m un sentier) ; tunnels et liaisons maritimes ignorés. Bassins et étangs en plans d'eau plats.
  • Lumière : un soleil unique venant du nord-ouest (convention cartographique), 45° au-dessus de l'horizon, plus la lumière du ciel : les ombres portées sont les mêmes partout.
6. Le rendu des images
  • Moteur Eevee : 32 échantillons, ombres, lancer de rayons et illumination globale rapide (occlusion ambiante), transformée de couleurs Standard, filtre de reconstruction réduit à 1 px pour la netteté.
  • Caméra orthographique verticale, nord en haut : aucune perspective, chaque pixel tombe exactement sur la grille des tuiles.
  • Chaque bloc est rendu avec une marge de 64 px (image de 2 176 px, ≈ 1,3 km) recadrée ensuite : les ombres des arbres et bâtiments voisins ne sont pas coupées aux bords.
  • Une section à la fois (Blender monte à ~7 Go de mémoire) : ≈ 1 minute par section, environ 5 h 30 pour l'île entière ; données et rendus de chaque section sont effacés une fois découpés.
7. Le découpage en tuiles
  • Avec la bibliothèque sharp (Node.js), chaque bloc rendu est recadré puis découpé en 64 tuiles de 256 px au zoom 18, en WebP.
  • Les zooms 17 à 10 sont construits en assemblant 4 tuiles filles et en réduisant le résultat de moitié.
  • Environ 100 000 tuiles (≈ 1,8 Go), hébergées sur Cloudflare R2.
8. Les libellés et la visionneuse
  • Les noms ne sont pas peints dans l'image : communes, lieux-dits et rues d'OpenStreetMap forment une couche vectorielle à part, qui reste lisible à toutes les échelles.
  • Affichage avec MapLibre GL (source raster XYZ + couches de texte), application compilée avec Vite.
Licences
  • Relief, orthophotographie, BD TOPO, RPG : © IGN, licence ouverte Etalab 2.0.
  • Occupation du sol : ESA WorldCover 2021, CC BY 4.0.
  • Libellés : © contributeurs OpenStreetMap, licence ODbL.