{"id":259,"date":"2026-07-08T08:07:55","date_gmt":"2026-07-08T08:07:55","guid":{"rendered":"https:\/\/www.geometre-confiance.fr\/guide\/2026\/07\/08\/plan-de-masse-definition-et-utilisation-en-urbanisme\/"},"modified":"2026-07-08T08:07:55","modified_gmt":"2026-07-08T08:07:55","slug":"plan-de-masse-definition-et-utilisation-en-urbanisme","status":"publish","type":"post","link":"https:\/\/www.geometre-confiance.fr\/guide\/2026\/07\/08\/plan-de-masse-definition-et-utilisation-en-urbanisme\/","title":{"rendered":"Plan de masse d\u00e9finition et utilisation en urbanisme"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>Plan de masse d\u00e9finition et utilisation en urbanisme<\/strong> : vue d\u2019ensemble indispensable pour localiser un projet urbain sur sa parcelle, v\u00e9rifier sa conformit\u00e9 avec le zonage et assurer une bonne int\u00e9gration des infrastructures et de la topographie locale.<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>En bref :<\/strong><\/li><li>Le <strong>plan de masse<\/strong> est une vue a\u00e9rienne cot\u00e9e qui localise un projet sur la parcelle et pr\u00e9cise l\u2019implantation, les acc\u00e8s, les r\u00e9seaux et l\u2019occupation du sol.<\/li><li>Document requis pour un <strong>permis de construire<\/strong> (PCMI2) ou une d\u00e9claration pr\u00e9alable (DP2), il sert \u00e0 contr\u00f4ler le <strong>zonage<\/strong> et le respect du <strong>cadastre<\/strong>.<\/li><li>Doit distinguer clairement l\u2019existant et le projet\u00e9, indiquer le nord, l\u2019\u00e9chelle et les cotes en trois dimensions lorsque n\u00e9cessaire.<\/li><li>Outils pratiques : relev\u00e9 topographique, logiciels CAO\/DAO et, pour les particuliers, guides en ligne pour apprendre \u00e0 produire un plan conforme.<\/li><li>Erreurs fr\u00e9quentes : absence de cotes, oubli du nord, confusion entre plan cadastral et plan de masse, ce qui retarde l\u2019instruction du dossier.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\">Plan de masse : d\u00e9finition et r\u00f4le en urbanisme<\/h2>\n\n<p class=\"wp-block-paragraph\">Le <strong>plan de masse<\/strong> se d\u00e9finit comme un document graphique \u00e0 l\u2019\u00e9chelle qui repr\u00e9sente une parcelle vue du dessus et l\u2019ensemble des am\u00e9nagements projet\u00e9s. Il permet aux services d\u2019urbanisme d\u2019appr\u00e9cier imm\u00e9diatement l\u2019emprise d\u2019un <strong>projet urbain<\/strong>, son rapport aux limites de propri\u00e9t\u00e9 et son insertion dans le contexte du quartier.<\/p>\n\n<p class=\"wp-block-paragraph\">Dans le cadre administratif, il est souvent demand\u00e9 sous la d\u00e9nomination PCMI2 pour un <strong>permis de construire<\/strong> ou DP2 pour une d\u00e9claration pr\u00e9alable. Sa fonction principale est de v\u00e9rifier la conformit\u00e9 du projet aux r\u00e8gles locales d\u2019urbanisme, notamment le <strong>zonage<\/strong>, les retraits obligatoires, et l\u2019occupation du sol.<\/p>\n\n<p class=\"wp-block-paragraph\">Le plan de masse n\u2019est pas un simple plan cadastral : le cadastre fournit des bases cartographiques, mais le plan de masse doit ajouter des cotes pr\u00e9cises, l\u2019implantation exacte des b\u00e2timents projet\u00e9s, la position des <strong>infrastructures<\/strong> telles que les stationnements et les r\u00e9seaux, ainsi que les acc\u00e8s pi\u00e9tons et v\u00e9hicules.<\/p>\n\n<p class=\"wp-block-paragraph\">Sur le plan technique, il est conseill\u00e9 d\u2019indiquer l\u2019orientation (fl\u00e8che du nord), l\u2019\u00e9chelle graphique et les niveaux topographiques si le relief influe sur l\u2019implantation. Pour un terrain en pente, la topographie devient critique et un relev\u00e9 altim\u00e9trique sera n\u00e9cessaire afin d\u2019\u00e9tablir des coupes ou des niveaux de r\u00e9f\u00e9rence. Ce type d\u2019information conditionne le dimensionnement des acc\u00e8s, la gestion des eaux pluviales et l\u2019int\u00e9gration paysag\u00e8re.<\/p>\n\n<p class=\"wp-block-paragraph\">Les enjeux de ce document d\u00e9passent la simple conformit\u00e9 administrative. Le plan de masse \u00e9claire les choix d\u2019am\u00e9nagement du territoire, facilite les arbitrages sur la densit\u00e9, et permet d\u2019anticiper les besoins en voirie et r\u00e9seaux. Par exemple, pour un lotissement, la lecture du plan de masse r\u00e9v\u00e8le rapidement les possibilit\u00e9s de mutualisation des branchements et la coh\u00e9rence des voiries internes avec l\u2019urbanisme communal.<\/p>\n\n<p class=\"wp-block-paragraph\">En 2026, l\u2019optimisation des plans de masse int\u00e8gre de plus en plus les enjeux climatiques : orientation pour l\u2019apport solaire, gestion des eaux pluviales par dispositifs d\u2019infiltration et maintien d\u2019espaces perm\u00e9ables. Les instructeurs appr\u00e9cient une repr\u00e9sentation claire des espaces verts et des dispositifs de v\u00e9g\u00e9talisation, visant \u00e0 limiter l\u2019imperm\u00e9abilisation excessive et \u00e0 pr\u00e9server la r\u00e9silience des quartiers.<\/p>\n\n<p class=\"wp-block-paragraph\">De mani\u00e8re pratique, plusieurs ressources permettent de mieux comprendre et r\u00e9aliser un plan de masse conforme, comme des guides sp\u00e9cialis\u00e9s qui d\u00e9taillent la pr\u00e9sentation attendue et les pi\u00e8ces du dossier. Pour approfondir la pi\u00e8ce PCMI2, une synth\u00e8se utile est disponible sur <a href=\"https:\/\/archiplans.fr\/pieces-du-permis-de-construire\/plan-de-masse\/\" target=\"_blank\" rel=\"noopener\">les \u00e9l\u00e9ments du permis de construire<\/a>, tandis que des explications pratiques s&rsquo;adaptent aux particuliers sur <a href=\"https:\/\/maison-verte.fr\/plan-de-masse-explications\/\" target=\"_blank\" rel=\"noopener\">les principes du plan de masse<\/a>. <\/p>\n\n<p class=\"wp-block-paragraph\">Insight : un plan de masse soign\u00e9 acc\u00e9l\u00e8re l\u2019instruction administrative et clarifie la faisabilit\u00e9 technique d\u2019un projet urbain.<\/p>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-1.jpg\" alt=\"d\u00e9couvrez la d\u00e9finition du plan de masse et son utilisation essentielle en urbanisme pour la planification et l&apos;am\u00e9nagement des espaces.\" class=\"wp-image-257\" srcset=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-1.jpg 1376w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-1-300x167.jpg 300w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-1-1024x572.jpg 1024w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-1-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><\/figure>\n\n<h2 class=\"wp-block-heading\">\u00c9l\u00e9ments obligatoires d\u2019un plan de masse pour permis de construire (PCMI2)<\/h2>\n\n<p class=\"wp-block-paragraph\">Le contenu d\u2019un <strong>plan de masse<\/strong> doit r\u00e9pondre \u00e0 des exigences pr\u00e9cises. Pour \u00eatre recevable, il faut fournir une cartographie qui identifie le terrain, le projet et les am\u00e9nagements ext\u00e9rieurs. La pr\u00e9cision des cotes et la lisibilit\u00e9 sont d\u00e9terminantes pour \u00e9viter des demandes de pi\u00e8ces compl\u00e9mentaires et retards dans l\u2019instruction.<\/p>\n\n<p class=\"wp-block-paragraph\">Les \u00e9l\u00e9ments essentiels se regroupent en trois blocs : le terrain (limites, acc\u00e8s, cadastre), le projet (implantation, dimensions, hauteurs) et les ext\u00e9rieurs (stationnements, terrasses, r\u00e9seaux). Chaque \u00e9l\u00e9ment doit \u00eatre rep\u00e9r\u00e9 et mesur\u00e9 de fa\u00e7on \u00e0 permettre un contr\u00f4le rapide des r\u00e8gles d\u2019urbanisme.<\/p>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Bloc<\/th>\n<th>\u00c9l\u00e9ments \u00e0 figurer<\/th>\n<th>Finalit\u00e9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Terrain<\/strong><\/td>\n<td>Limites de propri\u00e9t\u00e9, voirie, orientation (nord), cadastre<\/td>\n<td>Localiser pr\u00e9cis\u00e9ment la parcelle et v\u00e9rifier les servitudes<\/td>\n<\/tr>\n<tr>\n<td><strong>Projet<\/strong><\/td>\n<td>Implantation des constructions, cotes, distances aux limites, hauteurs<\/td>\n<td>Contr\u00f4ler l\u2019emprise au sol et la conformit\u00e9 au PLU<\/td>\n<\/tr>\n<tr>\n<td><strong>Ext\u00e9rieurs<\/strong><\/td>\n<td>Stationnements, acc\u00e8s, cl\u00f4tures, piscines, espaces verts, assainissement<\/td>\n<td>V\u00e9rifier l\u2019acc\u00e8s, le stationnement et la gestion des eaux<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Pour les particuliers, la d\u00e9nomination PCMI2 est souvent mentionn\u00e9e dans les listes de pi\u00e8ces \u00e0 joindre au dossier de permis de construire. Les exigences varient lorsque le dossier concerne une d\u00e9claration pr\u00e9alable ; la pi\u00e8ce DP2 doit cependant permettre de comparer l\u2019\u00e9tat initial et l\u2019\u00e9tat projet\u00e9, notamment pour une extension ou une piscine.<\/p>\n\n<p class=\"wp-block-paragraph\">L\u2019\u00e9chelle du plan est un param\u00e8tre cl\u00e9. Les \u00e9chelles couramment utilis\u00e9es sont le 1\/500 pour les maisons individuelles, le 1\/200 pour des terrains plus restreints ou des d\u00e9tails urbains, et le 1\/100 pour des \u00e9l\u00e9ments tr\u00e8s pr\u00e9cis comme une annexe ou une piscine. Il est imp\u00e9ratif d\u2019indiquer l\u2019\u00e9chelle graphique et de coter toutes les distances n\u00e9cessaires au contr\u00f4le.<\/p>\n\n<p class=\"wp-block-paragraph\">Un plan de masse s\u00e9rieux pr\u00e9cise aussi les raccordements aux r\u00e9seaux (eau, \u00e9lectricit\u00e9, t\u00e9l\u00e9phone, tout-\u00e0-l\u2019\u00e9gout) et la destination des surfaces (emprise, surfaces bois\u00e9es, surfaces perm\u00e9ables). Le <strong>cadastre<\/strong> demeure une base utile, mais il ne remplace pas le travail de cotation et de description demand\u00e9 par l\u2019administration.<\/p>\n\n<p class=\"wp-block-paragraph\">En compl\u00e9ment, il est conseill\u00e9 de consulter des ressources techniques qui d\u00e9crivent pas \u00e0 pas la cotation tridimensionnelle et la mani\u00e8re de pr\u00e9senter les niveaux. Un guide technique r\u00e9cent explique pourquoi la cotation dans les trois dimensions facilite l\u2019analyse et la conformit\u00e9 technique du projet (<a href=\"https:\/\/www.geometre-confiance.fr\/guide\/2026\/06\/05\/plan-de-masse-cote-dans-les-3-dimensions-guide-complet-pour-la-conception-precise\/\">guide sur la cotation 3D du plan de masse<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Exemples concrets : pour une extension, le plan doit imp\u00e9rativement distinguer l\u2019existant et le projet\u00e9 par hachures ou couleurs, indiquer la surface nouvelle cr\u00e9\u00e9e et la hauteur de la toiture projet\u00e9e. Pour une piscine, il faudra montrer l\u2019emprise au sol, les acc\u00e8s et la distance aux limites. Ne pas fournir ces \u00e9l\u00e9ments induit g\u00e9n\u00e9ralement une demande de pi\u00e8ces compl\u00e9mentaires.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : la clart\u00e9 et la compl\u00e9tude d\u2019un plan de masse r\u00e9duisent les allers-retours avec l\u2019administration et permettent une \u00e9valuation rapide du respect des r\u00e8gles d\u2019occupation du sol.<\/p>\n\n<h2 class=\"wp-block-heading\">M\u00e9thode de r\u00e9alisation : relev\u00e9s, \u00e9chelles et prise en compte de la topographie<\/h2>\n\n<p class=\"wp-block-paragraph\">La r\u00e9alisation d\u2019un plan de masse d\u00e9bute par la collecte d\u2019informations : relev\u00e9 cadastral, relev\u00e9 topographique, pr\u00e9sence d\u2019arbres, \u00e9l\u00e9ments b\u00e2tis existants et contraintes d\u2019infrastructure. La qualit\u00e9 de ces donn\u00e9es conditionne la fiabilit\u00e9 du plan et la pertinence des choix d\u2019implantation.<\/p>\n\n<p class=\"wp-block-paragraph\">Sur un terrain en pente, la <strong>topographie<\/strong> impose des relev\u00e9s altim\u00e9triques qui serviront \u00e0 d\u00e9finir des coupes et des niveaux de r\u00e9f\u00e9rence. Les acc\u00e8s, les rampes et la gestion des eaux de ruissellement s\u2019en trouvent directement impact\u00e9s. Un cas fr\u00e9quent illustre l\u2019importance d\u2019un relev\u00e9 pr\u00e9cis : une parcelle en coteau o\u00f9 l\u2019acc\u00e8s v\u00e9hicule n\u00e9cessite une rampe sup\u00e9rieure aux normes de pente. Sans cotation altim\u00e9trique, l\u2019instruction du dossier ne peut valider l\u2019accessibilit\u00e9.<\/p>\n\n<p class=\"wp-block-paragraph\">Les outils modernes facilitent la production d\u2019un plan de masse : logiciels professionnels (AutoCAD, ArchiCAD, Civil 3D) pour les g\u00e9om\u00e8tres et architectes, applications grand public pour les projets simples. L\u2019usage d\u2019un g\u00e9om\u00e8tre expert garantit la pr\u00e9cision des limites issues du cadastre et permet d\u2019obtenir des documents accept\u00e9s sans correction. Pour se procurer un plan cadastral et des surfaces \u00e0 jour, des ressources en ligne expliquent les d\u00e9marches actuelles (<a href=\"https:\/\/www.geometre-confiance.fr\/guide\/2026\/06\/17\/comment-obtenir-un-plan-cadastral-gratuit-avec-surface-en-2026\/\">guide d&rsquo;obtention du plan cadastral<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Proc\u00e9d\u00e9 recommand\u00e9 :<\/p>\n\n<ul class=\"wp-block-list\"><li>Collecte des sources : cadastre, PLU, servitudes et documents d\u2019urbanisme communaux.<\/li><li>Relev\u00e9 sur site : mesures, points altim\u00e9triques, implantation des \u00e9l\u00e9ments existants.<\/li><li>\u00c9laboration du plan \u00e0 l\u2019\u00e9chelle adapt\u00e9e et cotation pr\u00e9cise des distances et hauteurs.<\/li><li>V\u00e9rification de la conformit\u00e9 au zonage et annotations des branchements et infrastructures.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Chaque \u00e9tape doit \u00eatre document\u00e9e : photographies, relev\u00e9s et plans sources. Les erreurs r\u00e9currentes proviennent souvent de l\u2019utilisation exclusive du plan cadastral sans adaptation ou du manque de distinction entre l\u2019\u00e9tat existant et l\u2019\u00e9tat projet\u00e9. Un exemple concret : un particulier fournissant uniquement un extrait cadastral se voit demander syst\u00e9matiquement un plan de masse d\u00e9taill\u00e9 par le service instructeur.<\/p>\n\n<p class=\"wp-block-paragraph\">La question des \u00e9chelles est d\u00e9terminante pour la lisibilit\u00e9 : 1\/500 pour un lot simple, 1\/200 pour des configurations urbaines serr\u00e9es. L\u2019\u00e9chelle doit permettre de lire facilement les distances aux limites et les acc\u00e8s. En secteur prot\u00e9g\u00e9, l\u2019indication des mat\u00e9riaux ext\u00e9rieurs ou de la v\u00e9g\u00e9tation existante peut devenir une exigence suppl\u00e9mentaire.<\/p>\n\n<p class=\"wp-block-paragraph\">Outil pratique : le recours \u00e0 une simulation num\u00e9rique permet d\u2019anticiper l\u2019impact d\u2019un projet sur l\u2019occupation du sol et les infrastructures adjacentes. Pour visualiser des techniques et m\u00e9thodologies, des vid\u00e9os explicatives compl\u00e8tent les enseignements th\u00e9oriques.<\/p>\n\n\n\n<!-- Infographie interactive : \"Plan de masse d\u00e9finition et utilisation en urbanisme\"\n     \u00c0 coller tel quel dans votre page existante.\n     Hauteur maximale de l'outil : 1000px (modifiable ci-dessous).\n-->\n\n<div id=\"infographie-plan-masse\" class=\"mx-auto my-6 max-w-5xl\" style=\"max-height:1000px\" aria-label=\"Infographie interactive Plan de masse\">\n  <div class=\"flex flex-col lg:flex-row gap-4\">\n    <!-- Visuel plan -->\n    <section class=\"flex-1 bg-white dark:bg-slate-800 rounded-lg shadow-lg p-4\" aria-labelledby=\"titre-plan\">\n      <div class=\"flex items-start justify-between mb-3\">\n        <h2 id=\"titre-plan\" class=\"text-xl font-semibold text-slate-800 dark:text-slate-100\">Plan de masse \u2014 d\u00e9finition et utilisation<\/h2>\n        <div class=\"text-sm text-slate-500 dark:text-slate-300\">Interagissez pour explorer les couches et la checklist<\/div>\n      <\/div>\n\n      <!-- Controls -->\n      <div class=\"grid grid-cols-2 gap-2 mb-3\">\n        <div class=\"flex flex-wrap gap-2 items-center\">\n          <label class=\"sr-only\" for=\"scale-select\">\u00c9chelle<\/label>\n          \n            \u00c9chelle 1\/200\n            \u00c9chelle 1\/500\n          \n          <button id=\"toggle-legend\" class=\"px-2 py-1 rounded bg-sky-600 text-white text-sm\">L\u00e9gende \/ Nord<\/button>\n          <button id=\"export-json\" class=\"px-2 py-1 rounded border text-sm\" title=\"Exporter r\u00e9sum\u00e9 plan\">Exporter r\u00e9sum\u00e9 (JSON)<\/button>\n        <\/div>\n\n        <div class=\"flex justify-end items-center gap-3\">\n          <div class=\"text-sm text-slate-600 dark:text-slate-300\">Accessibilit\u00e9:<\/div>\n          <button id=\"reset-btn\" class=\"px-2 py-1 rounded border text-sm\" title=\"R\u00e9initialiser\">R\u00e9initialiser<\/button>\n        <\/div>\n      <\/div>\n\n      <!-- Canvas container -->\n      <div class=\"relative rounded border bg-slate-50 dark:bg-slate-900 p-3\" style=\"height:420px\">\n        \n\n        <!-- Scale bar and north -->\n        <div id=\"scale-bar\" class=\"absolute left-4 bottom-4 bg-white\/90 dark:bg-slate-800\/80 rounded px-2 py-1 text-xs text-slate-700 dark:text-slate-200 border\">\n          \u00c9chelle: 1\/<span id=\"scale-value\">500<\/span> \u2014 Barre: <span id=\"scale-length\">5 m<\/span>\n        <\/div>\n\n        <div id=\"north-indicator\" class=\"absolute right-4 top-4 bg-white\/90 dark:bg-slate-800\/80 rounded px-2 py-1 text-xs text-slate-700 dark:text-slate-200 border hidden\" aria-hidden=\"false\">\n          \u2191 Nord\n        <\/div>\n\n        <!-- Legend panel -->\n        <aside id=\"legend\" class=\"absolute right-4 bottom-4 bg-white\/95 dark:bg-slate-800\/90 p-2 rounded text-xs text-slate-700 dark:text-slate-200 border hidden\" aria-hidden=\"false\">\n          <div class=\"font-semibold text-sm mb-1\">L\u00e9gende<\/div>\n          <div class=\"flex items-center gap-2\"><span class=\"w-4 h-3 bg-slate-700 inline-block\"><\/span> B\u00e2timent existant<\/div>\n          <div class=\"flex items-center gap-2\"><span class=\"w-4 h-3 bg-green-500 inline-block\"><\/span> B\u00e2timent projet\u00e9<\/div>\n          <div class=\"flex items-center gap-2\"><span class=\"w-4 h-3 bg-yellow-400 inline-block\"><\/span> R\u00e9seaux<\/div>\n          <div class=\"flex items-center gap-2\"><span class=\"w-4 h-3 bg-sky-300 inline-block\"><\/span> Stationnements<\/div>\n          <div class=\"text-xs text-slate-500 mt-2\">Indiquez nord, \u00e9chelle graphique et l\u00e9gende sur le plan.<\/div>\n        <\/aside>\n      <\/div>\n    <\/section>\n\n    <!-- Sidebar: Checklist et param\u00e8tres -->\n    <aside class=\"w-full lg:w-80 bg-white dark:bg-slate-800 rounded-lg shadow-lg p-4\" aria-labelledby=\"titre-checklist\">\n      <h3 id=\"titre-checklist\" class=\"text-lg font-semibold text-slate-800 dark:text-slate-100 mb-2\">Checklist pour r\u00e9aliser un plan de masse<\/h3>\n\n      <p class=\"text-sm text-slate-600 dark:text-slate-300 mb-3\">Cochez les \u00e9tapes pour suivre l&rsquo;avancement. Certaines \u00e9tapes contr\u00f4lent la visibilit\u00e9 des couches du plan.<\/p>\n\n      <ul id=\"checklist\" class=\"space-y-2\" role=\"list\">\n        <!-- Items injected by JS -->\n      <\/ul>\n\n      <div class=\"mt-4\">\n        <label for=\"slope-toggle\" class=\"flex items-center gap-2 cursor-pointer\">\n          \n          <span class=\"text-sm text-slate-700 dark:text-slate-200\">Le terrain a une pente (afficher courbes de niveau)<\/span>\n        <\/label>\n      <\/div>\n\n      <div class=\"mt-4\">\n        <div class=\"text-sm text-slate-600 dark:text-slate-300 mb-1\">Progression<\/div>\n        <div class=\"w-full bg-slate-200 h-3 rounded overflow-hidden\">\n          <div id=\"progress-bar\" class=\"h-3 bg-sky-600 w-0\"><\/div>\n        <\/div>\n        <div id=\"progress-text\" class=\"text-xs text-slate-500 mt-1\">0 \/ 8 compl\u00e9t\u00e9<\/div>\n      <\/div>\n\n      <div class=\"mt-4 flex gap-2\">\n        <button id=\"toggle-existing-proposed\" class=\"flex-1 px-3 py-2 rounded border text-sm\">Diff\u00e9rencier existant\/projet\u00e9<\/button>\n        <button id=\"toggle-networks\" class=\"px-3 py-2 rounded bg-yellow-400 text-sm\">R\u00e9seaux \/ Stationnements<\/button>\n      <\/div>\n\n      <div class=\"mt-4 text-xs text-slate-500\">\n        Astuce: les \u00e9l\u00e9ments coch\u00e9s activent des couches visuelles sur le plan. Utilisez \u00ab\u00a0Exporter r\u00e9sum\u00e9\u00a0\u00bb pour g\u00e9n\u00e9rer un JSON r\u00e9capitulatif.\n      <\/div>\n    <\/aside>\n  <\/div>\n<\/div>\n\n\n\/*\n  Script de l&rsquo;infographie interactive \u00ab\u00a0Plan de masse\u00a0\u00bb.\n  &#8211; Toutes les cha\u00eenes sont en fran\u00e7ais et facilement modifiables via la variable `textes`.\n  &#8211; Pas d&rsquo;API externe utilis\u00e9e (outil autonome). Si vous souhaitez brancher une API (ex: cadastre), ajoutez l&rsquo;URL ici et respectez la contrainte de gratuit\u00e9.\n  &#8211; Performance : code l\u00e9ger, dessine sur canvas sans d\u00e9pendances externes.\n  &#8211; Accessibilit\u00e9 : \u00e9l\u00e9ments accessibles par clavier; labels et aria ajout\u00e9s.\n*\/\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   Texte \/ donn\u00e9es \u00e9ditables\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\nconst textes = {\n  titre: \u00ab\u00a0Plan de masse \u2014 d\u00e9finition et utilisation\u00a0\u00bb,\n  checklist: [\n    \u00ab\u00a0V\u00e9rifier PLU et zonage\u00a0\u00bb,\n    \u00ab\u00a0Obtenir plan cadastral\u00a0\u00bb,\n    \u00ab\u00a0R\u00e9aliser relev\u00e9 topographique si pente\u00a0\u00bb,\n    \u00ab\u00a0Dessiner \u00e0 l\u2019\u00e9chelle 1\/200-1\/500\u00a0\u00bb,\n    \u00ab\u00a0Coter distances aux limites et hauteurs\u00a0\u00bb,\n    \u00ab\u00a0Indiquer r\u00e9seaux et stationnements\u00a0\u00bb,\n    \u00ab\u00a0Diff\u00e9rencier existant\/projet\u00e9\u00a0\u00bb,\n    \u00ab\u00a0Joindre l\u00e9gende, nord et \u00e9chelle graphique\u00a0\u00bb\n  ],\n  legendItems: [\n    {label: \u00ab\u00a0B\u00e2timent existant\u00a0\u00bb, color: \u00ab\u00a0#334155\u00a0\u00bb},\n    {label: \u00ab\u00a0B\u00e2timent projet\u00e9\u00a0\u00bb, color: \u00ab\u00a0#16a34a\u00a0\u00bb},\n    {label: \u00ab\u00a0R\u00e9seaux\u00a0\u00bb, color: \u00ab\u00a0#f59e0b\u00a0\u00bb},\n    {label: \u00ab\u00a0Stationnements\u00a0\u00bb, color: \u00ab\u00a0#7dd3fc\u00a0\u00bb}\n  ]\n};\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   R\u00e9f\u00e9rences DOM\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\nconst canvas = document.getElementById(\u00ab\u00a0plan-canvas\u00a0\u00bb);\nconst ctx = canvas.getContext(\u00ab\u00a02d\u00a0\u00bb);\nconst checklistEl = document.getElementById(\u00ab\u00a0checklist\u00a0\u00bb);\nconst progressBar = document.getElementById(\u00ab\u00a0progress-bar\u00a0\u00bb);\nconst progressText = document.getElementById(\u00ab\u00a0progress-text\u00a0\u00bb);\nconst scaleSelect = document.getElementById(\u00ab\u00a0scale-select\u00a0\u00bb);\nconst scaleValueEl = document.getElementById(\u00ab\u00a0scale-value\u00a0\u00bb);\nconst scaleLengthEl = document.getElementById(\u00ab\u00a0scale-length\u00a0\u00bb);\nconst legendEl = document.getElementById(\u00ab\u00a0legend\u00a0\u00bb);\nconst toggleLegendBtn = document.getElementById(\u00ab\u00a0toggle-legend\u00a0\u00bb);\nconst northEl = document.getElementById(\u00ab\u00a0north-indicator\u00a0\u00bb);\nconst slopeToggle = document.getElementById(\u00ab\u00a0slope-toggle\u00a0\u00bb);\nconst toggleExistingProposed = document.getElementById(\u00ab\u00a0toggle-existing-proposed\u00a0\u00bb);\nconst toggleNetworksBtn = document.getElementById(\u00ab\u00a0toggle-networks\u00a0\u00bb);\nconst exportBtn = document.getElementById(\u00ab\u00a0export-json\u00a0\u00bb);\nconst resetBtn = document.getElementById(\u00ab\u00a0reset-btn\u00a0\u00bb);\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   \u00c9tat de l&rsquo;outil\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\nconst state = {\n  scaleDenom: parseInt(scaleSelect.value, 10) || 500, \/\/ 200 or 500\n  layers: {\n    cadastral: true,\n    existing: true,\n    proposed: true,\n    networks: true,\n    parking: true,\n    contours: false,\n    legend: true,\n    north: true,\n    dimensions: true\n  },\n  checklistCompleted: new Array(textes.checklist.length).fill(false),\n  differentiateExistProj: false\n};\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   Initialisation UI\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\nfunction initChecklist() {\n  checklistEl.innerHTML = \u00ab\u00a0\u00a0\u00bb;\n  textes.checklist.forEach((item, idx) =&gt; {\n    const li = document.createElement(\u00ab\u00a0li\u00a0\u00bb);\n    li.className = \u00ab\u00a0flex items-start gap-2\u00a0\u00bb;\n\n    const label = document.createElement(\u00ab\u00a0label\u00a0\u00bb);\n    label.className = \u00ab\u00a0flex items-center gap-2 cursor-pointer w-full\u00a0\u00bb;\n\n    const checkbox = document.createElement(\u00ab\u00a0input\u00a0\u00bb);\n    checkbox.type = \u00ab\u00a0checkbox\u00a0\u00bb;\n    checkbox.className = \u00ab\u00a0h-4 w-4\u00a0\u00bb;\n    checkbox.checked = state.checklistCompleted[idx];\n    checkbox.setAttribute(\u00ab\u00a0data-idx\u00a0\u00bb, idx);\n\n    const span = document.createElement(\u00ab\u00a0span\u00a0\u00bb);\n    span.className = \u00ab\u00a0text-sm text-slate-700 dark:text-slate-200\u00a0\u00bb;\n    span.textContent = item;\n\n    checkbox.addEventListener(\u00ab\u00a0change\u00a0\u00bb, (e) =&gt; {\n      const i = Number(e.target.getAttribute(\u00ab\u00a0data-idx\u00a0\u00bb));\n      state.checklistCompleted[i] = e.target.checked;\n      reactToChecklistItem(i);\n      updateProgress();\n    });\n\n    label.appendChild(checkbox);\n    label.appendChild(span);\n    li.appendChild(label);\n    checklistEl.appendChild(li);\n  });\n  updateProgress();\n}\n\n\/* Mise \u00e0 jour progress bar *\/\nfunction updateProgress() {\n  const total = state.checklistCompleted.length;\n  const done = state.checklistCompleted.filter(Boolean).length;\n  const ratio = Math.round((done \/ total) * 100);\n  progressBar.style.width = ratio + \u00ab\u00a0%\u00a0\u00bb;\n  progressText.textContent = `${done} \/ ${total} compl\u00e9t\u00e9`;\n}\n\n\/* Certaines cases contr\u00f4lent des couches visuelles *\/\nfunction reactToChecklistItem(index) {\n  switch (index) {\n    case 0: \/\/ V\u00e9rifier PLU et zonage -&gt; montrer cadastral \/ zonage\n      state.layers.cadastral = state.checklistCompleted[index];\n      break;\n    case 1: \/\/ Obtenir plan cadastral -&gt; cadastral\n      state.layers.cadastral = state.checklistCompleted[index];\n      break;\n    case 2: \/\/ Relev\u00e9 topographique -&gt; contours\n      state.layers.contours = state.checklistCompleted[index] || slopeToggle.checked;\n      break;\n    case 3: \/\/ Dessiner \u00e0 l&rsquo;\u00e9chelle -&gt; met en \u00e9vidence l&rsquo;\u00e9chelle (pas de couche)\n      \/\/ just visual: flash scale bar\n      flashElement(scaleLengthEl.parentElement);\n      break;\n    case 4: \/\/ Coter distances -&gt; dimensions\n      state.layers.dimensions = state.checklistCompleted[index];\n      break;\n    case 5: \/\/ Indiquer r\u00e9seaux et stationnements\n      state.layers.networks = state.checklistCompleted[index];\n      state.layers.parking = state.checklistCompleted[index];\n      break;\n    case 6: \/\/ Diff\u00e9rencier existant\/projet\u00e9\n      state.differentiateExistProj = state.checklistCompleted[index];\n      break;\n    case 7: \/\/ Joindre l\u00e9gende, nord et \u00e9chelle graphique\n      state.layers.legend = state.checklistCompleted[index];\n      state.layers.north = state.checklistCompleted[index];\n      break;\n  }\n  render();\n}\n\n\/* Petite animation visuelle pour attirer l&rsquo;attention *\/\nfunction flashElement(el) {\n  if (!el) return;\n  el.animate([{ transform: \u00ab\u00a0scale(1)\u00a0\u00bb }, { transform: \u00ab\u00a0scale(1.05)\u00a0\u00bb }, { transform: \u00ab\u00a0scale(1)\u00a0\u00bb }], {\n    duration: 500,\n    easing: \u00ab\u00a0ease-in-out\u00a0\u00bb\n  });\n}\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   Dessin sur canvas\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\n\n\/* Coordonn\u00e9es \u00ab\u00a0logique\u00a0\u00bb du plan (unit\u00e9s en m\u00e8tres). Nous simulerons une parcelle simple. *\/\nconst planModel = {\n  parcel: { x: 20, y: 20, w: 160, h: 90 }, \/\/ en m\u00e8tres\n  existingBuildings: [\n    { x: 40, y: 40, w: 30, h: 20, rotation: 0 }\n  ],\n  proposedBuildings: [\n    { x: 85, y: 35, w: 45, h: 30, rotation: 0 }\n  ],\n  networks: [\n    { type: \u00ab\u00a0eau\u00a0\u00bb, path: [{x:20,y:70},{x:80,y:70},{x:120,y:50}] },\n    { type: \u00ab\u00a0assainissement\u00a0\u00bb, path: [{x:40,y:20},{x:40,y:80}] }\n  ],\n  parkings: [\n    { x: 140, y: 40, w: 15, h: 25 }\n  ],\n  contours: [] \/\/ generated if slope true\n};\n\n\/* G\u00e9n\u00e9rer contours (simples lignes) si pente *\/\nfunction generateContours() {\n  planModel.contours = [];\n  \/\/ Simuler 3 courbes de niveau\n  for (let i = 0; i  pixel\n   On adapte selon la taille canvas disponible.\n*\/\nfunction computeTransform() {\n  const margin = 20; \/\/ px\n  \/\/ Determine logical bounds from planModel (in meters)\n  const minX = planModel.parcel.x &#8211; 10;\n  const minY = planModel.parcel.y &#8211; 10;\n  const maxX = planModel.parcel.x + planModel.parcel.w + 10;\n  const maxY = planModel.parcel.y + planModel.parcel.h + 10;\n\n  const widthMeters = maxX &#8211; minX;\n  const heightMeters = maxY &#8211; minY;\n\n  const canvasWidth = canvas.width;\n  const canvasHeight = canvas.height;\n\n  const scale = Math.min((canvasWidth &#8211; margin * 2) \/ widthMeters, (canvasHeight &#8211; margin * 2) \/ heightMeters);\n\n  return { tx: minX, ty: minY, scale, margin };\n}\n\nfunction mToPx(pt) {\n  const t = computeTransform();\n  return { x: (pt.x &#8211; t.tx) * t.scale + t.margin, y: (pt.y &#8211; t.ty) * t.scale + t.margin };\n}\n\nfunction drawPlan() {\n  \/\/ clear\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  \/\/ background\n  ctx.fillStyle = getComputedStyle(document.documentElement).getPropertyValue(&lsquo;&#8211;tw-bg-opacity&rsquo;) ? &lsquo;#f8fafc&rsquo; : &lsquo;#f8fafc&rsquo;;\n  ctx.fillStyle = &lsquo;#ffffff&rsquo;;\n  ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n  const t = computeTransform();\n\n  \/\/ draw parcel\n  const parcelTopLeft = mToPx({ x: planModel.parcel.x, y: planModel.parcel.y });\n  const parcelW = planModel.parcel.w * t.scale;\n  const parcelH = planModel.parcel.h * t.scale;\n  ctx.save();\n  ctx.strokeStyle = \u00ab\u00a0#94a3b8\u00a0\u00bb;\n  ctx.lineWidth = 2;\n  ctx.setLineDash([6, 4]);\n  ctx.strokeRect(parcelTopLeft.x, parcelTopLeft.y, parcelW, parcelH);\n  ctx.restore();\n\n  \/\/ cadastral \/ zoning overlay (if enabled)\n  if (state.layers.cadastral) {\n    ctx.save();\n    ctx.fillStyle = \u00ab\u00a0rgba(59,130,246,0.04)\u00a0\u00bb;\n    ctx.fillRect(parcelTopLeft.x, parcelTopLeft.y, parcelW, parcelH);\n    ctx.restore();\n  }\n\n  \/\/ contours (courbes de niveau)\n  if (state.layers.contours) {\n    ctx.save();\n    ctx.strokeStyle = \u00ab\u00a0#a8a29e\u00a0\u00bb;\n    ctx.lineWidth = 1;\n    ctx.setLineDash([3, 3]);\n    planModel.contours.forEach(c =&gt; {\n      ctx.beginPath();\n      c.path.forEach((p, i) =&gt; {\n        const px = mToPx(p);\n        if (i === 0) ctx.moveTo(px.x, px.y);\n        else ctx.lineTo(px.x, px.y);\n      });\n      ctx.stroke();\n      \/\/ elevation label\n      const mid = mToPx(c.path[Math.floor(c.path.length \/ 2)]);\n      ctx.fillStyle = \u00ab\u00a0#374151\u00a0\u00bb;\n      ctx.font = \u00ab\u00a010px sans-serif\u00a0\u00bb;\n      ctx.fillText(`${c.elevation} m`, mid.x + 4, mid.y &#8211; 4);\n    });\n    ctx.restore();\n  }\n\n  \/\/ networks\n  if (state.layers.networks) {\n    ctx.save();\n    ctx.lineWidth = 2;\n    planModel.networks.forEach(n =&gt; {\n      ctx.beginPath();\n      const color = n.type === \u00ab\u00a0eau\u00a0\u00bb ? \u00ab\u00a0#0ea5e9\u00a0\u00bb : \u00ab\u00a0#f97316\u00a0\u00bb;\n      ctx.strokeStyle = color;\n      n.path.forEach((pt, i) =&gt; {\n        const px = mToPx(pt);\n        if (i === 0) ctx.moveTo(px.x, px.y);\n        else ctx.lineTo(px.x, px.y);\n      });\n      ctx.stroke();\n    });\n    ctx.restore();\n  }\n\n  \/\/ parking\n  if (state.layers.parking) {\n    ctx.save();\n    planModel.parkings.forEach(p =&gt; {\n      const pTL = mToPx({ x: p.x, y: p.y });\n      const w = p.w * t.scale;\n      const h = p.h * t.scale;\n      ctx.fillStyle = \u00ab\u00a0#7dd3fc\u00a0\u00bb;\n      ctx.fillRect(pTL.x, pTL.y, w, h);\n      ctx.strokeStyle = \u00ab\u00a0#0369a1\u00a0\u00bb;\n      ctx.strokeRect(pTL.x, pTL.y, w, h);\n    });\n    ctx.restore();\n  }\n\n  \/\/ existing buildings\n  if (state.layers.existing) {\n    planModel.existingBuildings.forEach(b =&gt; {\n      const bTL = mToPx({ x: b.x, y: b.y });\n      const w = b.w * t.scale;\n      const h = b.h * t.scale;\n      ctx.save();\n      if (state.differentiateExistProj) {\n        ctx.fillStyle = \u00ab\u00a0#334155\u00a0\u00bb;\n      } else {\n        ctx.fillStyle = \u00ab\u00a0#475569\u00a0\u00bb;\n      }\n      ctx.fillRect(bTL.x, bTL.y, w, h);\n      ctx.restore();\n    });\n  }\n\n  \/\/ proposed buildings\n  if (state.layers.proposed) {\n    planModel.proposedBuildings.forEach(b =&gt; {\n      const bTL = mToPx({ x: b.x, y: b.y });\n      const w = b.w * t.scale;\n      const h = b.h * t.scale;\n      ctx.save();\n      if (state.differentiateExistProj) {\n        \/\/ hatch-like: fill green and draw dotted border\n        ctx.fillStyle = \u00ab\u00a0#16a34a\u00a0\u00bb;\n        ctx.fillRect(bTL.x, bTL.y, w, h);\n        ctx.setLineDash([4, 3]);\n        ctx.strokeStyle = \u00ab\u00a0#14532d\u00a0\u00bb;\n        ctx.lineWidth = 2;\n        ctx.strokeRect(bTL.x, bTL.y, w, h);\n      } else {\n        ctx.fillStyle = \u00ab\u00a0#16a34a\u00a0\u00bb;\n        ctx.fillRect(bTL.x, bTL.y, w, h);\n      }\n      ctx.restore();\n    });\n  }\n\n  \/\/ dimensions (simple)\n  if (state.layers.dimensions) {\n    ctx.save();\n    ctx.strokeStyle = \u00ab\u00a0#111827\u00a0\u00bb;\n    ctx.fillStyle = \u00ab\u00a0#111827\u00a0\u00bb;\n    ctx.font = \u00ab\u00a011px sans-serif\u00a0\u00bb;\n    ctx.setLineDash([]);\n    \/\/ left distance\n    const a = mToPx({ x: planModel.parcel.x, y: planModel.parcel.y + planModel.parcel.h + 4 });\n    const b = mToPx({ x: planModel.parcel.x + planModel.parcel.w, y: planModel.parcel.y + planModel.parcel.h + 4 });\n    ctx.beginPath();\n    ctx.moveTo(a.x, a.y);\n    ctx.lineTo(b.x, b.y);\n    ctx.stroke();\n    ctx.fillText(`${Math.round(planModel.parcel.w)} m`, (a.x + b.x) \/ 2 &#8211; 12, a.y &#8211; 6);\n    ctx.restore();\n  }\n\n  \/\/ ANNOTATIONS: north &amp; legend visibility handled outside canvas using DOM elements\n  updateScaleBar();\n}\n\n\/* Met \u00e0 jour la barre d&rsquo;\u00e9chelle affich\u00e9e *\/\nfunction updateScaleBar() {\n  scaleValueEl.textContent = state.scaleDenom;\n  \/\/ Simple heuristic: show a scale bar of either 5m or 10m depending on denom\n  const chosenMeters = state.scaleDenom === 200 ? 5 : 5; \/\/ keep 5 for clarity\n  scaleLengthEl.textContent = `${chosenMeters} m`;\n}\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   \u00c9v\u00e9nements UI\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\n\nscaleSelect.addEventListener(\u00ab\u00a0change\u00a0\u00bb, (e) =&gt; {\n  state.scaleDenom = parseInt(e.target.value, 10);\n  \/\/ change doesn&rsquo;t affect our internal meter-to-px mapping in this demo,\n  \/\/ but we reflect the choice in the displayed label and flash\n  updateScaleBar();\n  flashElement(scaleLengthEl.parentElement);\n});\n\ntoggleLegendBtn.addEventListener(\u00ab\u00a0click\u00a0\u00bb, () =&gt; {\n  state.layers.legend = !state.layers.legend;\n  state.layers.north = !state.layers.north;\n  legendEl.classList.toggle(\u00ab\u00a0hidden\u00a0\u00bb, !state.layers.legend);\n  northEl.classList.toggle(\u00ab\u00a0hidden\u00a0\u00bb, !state.layers.north);\n  toggleLegendBtn.setAttribute(\u00ab\u00a0aria-pressed\u00a0\u00bb, String(state.layers.legend));\n});\n\nslopeToggle.addEventListener(\u00ab\u00a0change\u00a0\u00bb, (e) =&gt; {\n  state.layers.contours = e.target.checked;\n  \/\/ if the user indicates slope, generate contours if needed\n  if (e.target.checked) generateContours();\n  render();\n});\n\ntoggleExistingProposed.addEventListener(\u00ab\u00a0click\u00a0\u00bb, () =&gt; {\n  state.differentiateExistProj = !state.differentiateExistProj;\n  toggleExistingProposed.setAttribute(\u00ab\u00a0aria-pressed\u00a0\u00bb, String(state.differentiateExistProj));\n  render();\n});\n\ntoggleNetworksBtn.addEventListener(\u00ab\u00a0click\u00a0\u00bb, () =&gt; {\n  state.layers.networks = !state.layers.networks;\n  state.layers.parking = !state.layers.parking;\n  toggleNetworksBtn.classList.toggle(\u00ab\u00a0bg-yellow-400\u00a0\u00bb, state.layers.networks);\n  toggleNetworksBtn.classList.toggle(\u00ab\u00a0bg-slate-200\u00a0\u00bb, !state.layers.networks);\n  render();\n});\n\nexportBtn.addEventListener(\u00ab\u00a0click\u00a0\u00bb, () =&gt; {\n  \/\/ Pr\u00e9pare r\u00e9sum\u00e9 JSON du plan\n  const summary = {\n    titre: textes.titre,\n    echelle: `1\/${state.scaleDenom}`,\n    couches: {&#8230;state.layers},\n    differentiateExistProj: state.differentiateExistProj,\n    checklist: textes.checklist.map((txt, i) =&gt; ({ etape: txt, cochee: !!state.checklistCompleted[i] }))\n  };\n  const dataStr = \u00ab\u00a0data:text\/json;charset=utf-8,\u00a0\u00bb + encodeURIComponent(JSON.stringify(summary, null, 2));\n  const a = document.createElement(\u00ab\u00a0a\u00a0\u00bb);\n  a.setAttribute(\u00ab\u00a0href\u00a0\u00bb, dataStr);\n  a.setAttribute(\u00ab\u00a0download\u00a0\u00bb, \u00ab\u00a0resume_plan_masse.json\u00a0\u00bb);\n  a.click();\n});\n\n\/* Reset button *\/\nresetBtn.addEventListener(\u00ab\u00a0click\u00a0\u00bb, () =&gt; {\n  \/\/ reset state\n  state.scaleDenom = 500;\n  scaleSelect.value = \u00ab\u00a0500\u00a0\u00bb;\n  state.layers = {\n    cadastral: true,\n    existing: true,\n    proposed: true,\n    networks: true,\n    parking: true,\n    contours: false,\n    legend: true,\n    north: true,\n    dimensions: true\n  };\n  state.checklistCompleted = new Array(textes.checklist.length).fill(false);\n  state.differentiateExistProj = false;\n  slopeToggle.checked = false;\n  legendEl.classList.toggle(\u00ab\u00a0hidden\u00a0\u00bb, !state.layers.legend);\n  northEl.classList.toggle(\u00ab\u00a0hidden\u00a0\u00bb, !state.layers.north);\n  toggleLegendBtn.setAttribute(\u00ab\u00a0aria-pressed\u00a0\u00bb, String(state.layers.legend));\n  toggleExistingProposed.setAttribute(\u00ab\u00a0aria-pressed\u00a0\u00bb, \u00ab\u00a0false\u00a0\u00bb);\n  toggleNetworksBtn.classList.remove(\u00ab\u00a0bg-slate-200\u00a0\u00bb);\n  toggleNetworksBtn.classList.add(\u00ab\u00a0bg-yellow-400\u00a0\u00bb);\n  initChecklist();\n  render();\n});\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   Accessibilit\u00e9: keyboard shortcuts\n   &#8211; C : toggle l\u00e9gende\/nord\n   &#8211; N : toggle contours (pente)\n   &#8211; R : reset\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\ndocument.addEventListener(\u00ab\u00a0keydown\u00a0\u00bb, (e) =&gt; {\n  if (e.target &amp;&amp; [&lsquo;INPUT&rsquo;,&rsquo;TEXTAREA&rsquo;,&rsquo;SELECT&rsquo;].includes(e.target.tagName)) return; \/\/ ignore typing\n  if (e.key.toLowerCase() === &lsquo;c&rsquo;) {\n    toggleLegendBtn.click();\n  } else if (e.key.toLowerCase() === &lsquo;n&rsquo;) {\n    slopeToggle.checked = !slopeToggle.checked;\n    slopeToggle.dispatchEvent(new Event(&lsquo;change&rsquo;));\n  } else if (e.key.toLowerCase() === &lsquo;r&rsquo;) {\n    resetBtn.click();\n  }\n});\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   Render loop\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\nfunction render() {\n  \/\/ ensure contours exist when requested\n  if (state.layers.contours &amp;&amp; planModel.contours.length === 0) generateContours();\n  \/\/ show\/hide legend and north\n  legendEl.classList.toggle(\u00ab\u00a0hidden\u00a0\u00bb, !state.layers.legend);\n  northEl.classList.toggle(\u00ab\u00a0hidden\u00a0\u00bb, !state.layers.north);\n\n  \/\/ render canvas\n  drawPlan();\n}\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   Initial launch\n   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- *\/\ninitChecklist();\nrender();\n\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n   Commentaires sur usage d&rsquo;APIs externes (optionnel)\n   SI vous d\u00e9sirez int\u00e9grer des donn\u00e9es externes (ex : plan cadastral \/ g\u00e9om\u00e9trie),\n   utilisez uniquement des APIs publiques et gratuites, par ex :\n   &#8211; Cadastre (France) via geo.api.gouv.fr (extraction parcelle) :\n     URL exemple: https:\/\/geo.api.gouv.fr\/communes?nom=paris\n     Exemple de r\u00e9ponse JSON:\n     [\n       {\n         \u00ab\u00a0nom\u00a0\u00bb: \u00ab\u00a0Paris\u00a0\u00bb,\n         \u00ab\u00a0code\u00a0\u00bb: \u00ab\u00a075056\u00a0\u00bb,\n         \u00ab\u00a0codeDepartement\u00a0\u00bb: \u00ab\u00a075\u00a0\u00bb,\n         \u00ab\u00a0codeRegion\u00a0\u00bb: \u00ab\u00a011\u00a0\u00bb,\n         \u00ab\u00a0codesPostaux\u00a0\u00bb: [\u00ab\u00a075001\u00a0\u00bb, \u00ab\u00a075002\u00a0\u00bb, \u00ab\u00a0&#8230;\u00a0\u00bb],\n         \u00ab\u00a0surface\u00a0\u00bb: 105.4,\n         \u00ab\u00a0population\u00a0\u00bb: 2148000\n       }\n     ]\n   &#8211; OpenStreetMap (overpass) pour r\u00e9cup\u00e9rer voirie\/b\u00e2timents (requiert requ\u00eate Overpass publique)\n     URL Overpass API: https:\/\/overpass-api.de\/api\/interpreter\n     Exemple (Overpass) r\u00e9ponse JSON (simplifi\u00e9):\n     { \u00ab\u00a0elements\u00a0\u00bb: [ { \u00ab\u00a0type\u00a0\u00bb:\u00a0\u00bbway\u00a0\u00bb, \u00ab\u00a0id\u00a0\u00bb:12345, \u00ab\u00a0tags\u00a0\u00bb:{\u00ab\u00a0building\u00a0\u00bb:\u00a0\u00bbyes\u00a0\u00bb}, \u00ab\u00a0nodes\u00a0\u00bb:[&#8230;] } ] }\n\n   N.B. : l&rsquo;infographie actuelle est autonome et n&rsquo;appelle aucune API externe.\n*\/\n\n\/* Fin du script *\/\n\n\n\n\/* Styles additionnels accessibles &amp; design *\/\n#infographie-plan-masse { font-family: Inter, ui-sans-serif, system-ui, -apple-system, \u00ab\u00a0Segoe UI\u00a0\u00bb, Roboto, \u00ab\u00a0Helvetica Neue\u00a0\u00bb, Arial; }\n#plan-canvas { background: linear-gradient(180deg, rgba(255,255,255,0.9), rgba(245,247,250,0.9)); border-radius: 6px; outline: 2px solid rgba(15,23,42,0.02); }\nbutton:focus, select:focus, input:focus { outline: 3px solid rgba(59,130,246,0.25); outline-offset: 2px; }\n@media (max-width: 768px) {\n  #infographie-plan-masse { padding: 8px; }\n  #plan-canvas { height: 300px !important; }\n}\n\n\n<p class=\"wp-block-paragraph\">Insight : un plan de masse r\u00e9alis\u00e9 \u00e0 partir de relev\u00e9s fiables r\u00e9duit les risques de refus et facilite la mise en conformit\u00e9 du projet face aux contraintes territoriales.<\/p>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-2.jpg\" alt=\"d\u00e9couvrez la d\u00e9finition du plan de masse et son utilisation essentielle en urbanisme pour organiser et planifier efficacement les espaces urbains.\" class=\"wp-image-258\" srcset=\"https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-2.jpg 1376w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-2-300x167.jpg 300w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-2-1024x572.jpg 1024w, https:\/\/www.geometre-confiance.fr\/guide\/wp-content\/uploads\/2026\/07\/Plan-de-masse-definition-et-utilisation-en-urbanisme-2-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><\/figure>\n\n<h2 class=\"wp-block-heading\">Zonage, int\u00e9gration au territoire et erreurs fr\u00e9quentes \u00e0 \u00e9viter<\/h2>\n\n<p class=\"wp-block-paragraph\">Le lien entre plan de masse et <strong>zonage<\/strong> est central : le plan sert \u00e0 v\u00e9rifier l\u2019ad\u00e9quation du projet avec le r\u00e8glement du Plan Local d\u2019Urbanisme ou toute autre r\u00e8gle locale. Il permet d\u2019appr\u00e9cier l\u2019emprise au sol autoris\u00e9e, les retraits obligatoires et la <strong>occupation du sol<\/strong> admissible. Le service instructeur s\u2019appuie sur ces \u00e9l\u00e9ments pour contr\u00f4ler l\u2019impact sur les infrastructures et l\u2019environnement b\u00e2ti.<\/p>\n\n<p class=\"wp-block-paragraph\">Parmi les erreurs les plus fr\u00e9quentes figure l\u2019absence de distinction entre l\u2019existant et le projet\u00e9. Cette confusion conduit \u00e0 des incompr\u00e9hensions sur la surface cr\u00e9\u00e9e et l\u2019emprise suppl\u00e9mentaire. Un autre point fr\u00e9quent est l\u2019omission de cotes essentielles aux limites s\u00e9paratives : sans ces mesures, l\u2019administration ne peut valider le respect des distances r\u00e9glementaires.<\/p>\n\n<p class=\"wp-block-paragraph\">La non-indication des raccordements aux <strong>infrastructures<\/strong> (eau, \u00e9lectricit\u00e9, assainissement) est \u00e9galement un motif courant de demande compl\u00e9mentaire. Un plan de masse utile identifie clairement les branchements existants et projet\u00e9s, ainsi que les tranch\u00e9es pr\u00e9vues si n\u00e9cessaire. Pour anticiper ces exigences, la cartographie des r\u00e9seaux doit \u00eatre ins\u00e9r\u00e9e et l\u00e9gend\u00e9e.<\/p>\n\n<p class=\"wp-block-paragraph\">Le <strong>cadastre<\/strong> peut servir de base, mais il ne substitue pas un plan de masse d\u00e9taill\u00e9. Par exemple, un extrait cadastral montre la coupe parcellaire mais ne renseigne pas sur les hauteurs, les pentes et les \u00e9quipements ext\u00e9rieurs, \u00e9l\u00e9ments indispensables pour l\u2019instruction. Des guides pratiques aident \u00e0 comprendre pourquoi le cadastre ne suffit pas et comment l\u2019articuler avec un plan de masse \u00e9labor\u00e9 (<a href=\"https:\/\/plan-assistance.fr\/conseils\/plan-de-masse\/\" target=\"_blank\" rel=\"noopener\">conseils pratiques pour le plan de masse<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Cas d\u2019\u00e9tude : une commune impose des retraits stricts en bordure de voie pour pr\u00e9server un alignement d\u2019arbres. Un promoteur pr\u00e9sentant un plan de masse sans pr\u00e9ciser l\u2019emplacement des plantations existantes s\u2019expose \u00e0 un refus ou une demande de modification. Inversement, un projet qui conserve des zones perm\u00e9ables et int\u00e8gre des syst\u00e8mes de r\u00e9cup\u00e9ration d\u2019eaux pluviales facilite les \u00e9changes avec les services techniques.<\/p>\n\n<p class=\"wp-block-paragraph\">Pratiques recommand\u00e9es :<\/p>\n\n<ol class=\"wp-block-list\"><li>V\u00e9rifier le r\u00e8glement local d\u2019urbanisme et les servitudes avant de dessiner l\u2019implantation.<\/li><li>Distinguer clairement l\u2019\u00e9tat initial et l\u2019\u00e9tat futur par des hachures, couleurs ou annotations.<\/li><li>Indiquer l\u2019orientation, l\u2019\u00e9chelle, les cotes et la description des infrastructures pr\u00e9vues.<\/li><li>Pr\u00e9voir les mesures compensatoires en cas d\u2019imperm\u00e9abilisation importante.<\/li><\/ol>\n\n<p class=\"wp-block-paragraph\">En cluster urbain, l\u2019int\u00e9gration du projet au tissu existant implique des \u00e9changes avec les gestionnaires d\u2019infrastructures. La coordination pr\u00e9coce \u00e9vite des modifications co\u00fbteuses lors de l\u2019instruction. Par exemple, l\u2019anticipation d\u2019un raccordement ENEDIS ou d\u2019un branchement EU peut influer sur le positionnement final des stationnements et des acc\u00e8s.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : une bonne pr\u00e9paration documentaire et la v\u00e9rification du zonage permettent de r\u00e9duire consid\u00e9rablement les d\u00e9lais d\u2019instruction et de garantir une insertion harmonieuse dans le territoire.<\/p>\n\n<figure class=\"is-provider-youtube is-type-video wp-block-embed wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Plan de masse : d\u00e9placer le b\u00e2timent sur le terrain\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/zFWM63HbuF4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n<h2 class=\"wp-block-heading\">Cas pratiques, exemples concrets et conseils pour l\u2019instruction<\/h2>\n\n<p class=\"wp-block-paragraph\">Les cas pratiques permettent d\u2019illustrer la diversit\u00e9 des usages du plan de masse. Prenons plusieurs situations : construction neuve sur terrain plat, extension sur parcelle en pente, installation d\u2019une piscine, et division parcellaire. Chacune impose des niveaux de d\u00e9tail diff\u00e9rents et des exigences documentaires sp\u00e9cifiques.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour une maison neuve, le plan de masse doit fournir l\u2019implantation exacte, les stationnements, l\u2019acc\u00e8s au r\u00e9seau public et la gestion des eaux. La preuve de conformit\u00e9 passe par la cotation des distances aux limites et la pr\u00e9cision des surfaces b\u00e2ties. Pour une extension, l\u2019attention se porte sur la surface cr\u00e9\u00e9e et la repr\u00e9sentation claire de l\u2019existant et du projet\u00e9.<\/p>\n\n<p class=\"wp-block-paragraph\">Un cas fr\u00e9quent illustre l\u2019importance de la topographie : une annexe construite dans une zone inclin\u00e9e n\u00e9cessite des cotes altim\u00e9triques afin de v\u00e9rifier que la hauteur ne d\u00e9passe pas les limites r\u00e9glementaires. Sans ces informations, l\u2019instruction peut \u00eatre suspendue.<\/p>\n\n<p class=\"wp-block-paragraph\">Conseils pratiques pour acc\u00e9l\u00e9rer l\u2019instruction :<\/p>\n\n<ul class=\"wp-block-list\"><li>Fournir un plan lisible, avec l\u00e9gende et rep\u00e8res clairs.<\/li><li>Joindre des photos du terrain et des fa\u00e7ades pour compl\u00e9ter la lecture du plan.<\/li><li>Renseigner les plans de r\u00e9seaux et indiquer les points de raccordement.<\/li><li>Consulter les guides locaux et les fiches techniques pour s\u2019assurer de l\u2019ad\u00e9quation du dossier.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Pour les particuliers souhaitant s\u2019informer avant de constituer un dossier, des ressources p\u00e9dagogiques en ligne d\u00e9taillent les pi\u00e8ces et la mani\u00e8re de les remplir. Par exemple, des pages d\u00e9di\u00e9es expliquent la fonction du plan de masse et proposent des exemples d\u2019implantation r\u00e9alistes (<a href=\"https:\/\/permis.hello-archi.com\/le-plan-de-masse-tout-ce-quil-faut-savoir\/\" target=\"_blank\" rel=\"noopener\">guide pour bien comprendre le plan de masse<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Enfin, la coop\u00e9ration avec un g\u00e9om\u00e8tre ou un architecte se r\u00e9v\u00e8le utile pour des projets complexes. L\u2019intervention de professionnels garantit la qualit\u00e9 des relev\u00e9s et la conformit\u00e9 technique, r\u00e9duisant ainsi le risque de rejet administratif. Pour les d\u00e9marches cadastrales pr\u00e9liminaires, des guides expliquent comment obtenir gratuitement les documents utiles et les int\u00e9grer au dossier (<a href=\"https:\/\/www.geometre-confiance.fr\/guide\/2026\/06\/15\/comment-obtenir-un-releve-de-propriete-cadastre-gratuit-en-2026\/\">obtenir un relev\u00e9 de propri\u00e9t\u00e9 cadastral<\/a>).<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : l\u2019anticipation, la clart\u00e9 et l\u2019utilisation de ressources techniques adapt\u00e9es sont les cl\u00e9s pour constituer un plan de masse qui facilite l\u2019instruction et s\u00e9curise le projet urbain.<\/p>\n\n<figure class=\"is-provider-youtube is-type-video wp-block-embed wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Urban planning | Plan de masse | pfe urbanisme (jabnoun)\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/pzekvcyz8hY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n{\u00ab\u00a0@context\u00a0\u00bb:\u00a0\u00bbhttps:\/\/schema.org\u00a0\u00bb,\u00a0\u00bb@type\u00a0\u00bb:\u00a0\u00bbFAQPage\u00a0\u00bb,\u00a0\u00bbmainEntity\u00a0\u00bb:[{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbQuu2019est-ce qui distingue un plan cadastral du2019un plan de masse ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbLe plan cadastral indique la du00e9limitation et la ru00e9fu00e9rence parcellaire. Le plan de masse complu00e8te ces donnu00e9es par les cotes, lu2019implantation des constructions projetu00e9es, les accu00e8s, les ru00e9seaux et la description de lu2019u00e9tat existant et projetu00e9.\u00a0\u00bb}},{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbQuelle u00e9chelle choisir pour un plan de masse ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbLes u00e9chelles courantes sont 1\/500 pour une maison individuelle, 1\/200 pour des terrains urbains plus denses et 1\/100 pour des du00e9tails pru00e9cis. Lu2019u00e9chelle doit permettre la lecture claire des distances et des cotes.\u00a0\u00bb}},{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbPeut-on faire soiu2011mu00eame son plan de masse ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbOui pour un projet simple si le plan est pru00e9cis, lisible et conforme aux attentes du service instructeur. Pour des configurations complexes, il est recommandu00e9 de faire appel u00e0 un professionnel (gu00e9omu00e8tre, architecte).\u00a0\u00bb}},{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbQuestion\u00a0\u00bb,\u00a0\u00bbname\u00a0\u00bb:\u00a0\u00bbQuels sont les u00e9lu00e9ments souvent oubliu00e9s ?\u00a0\u00bb,\u00a0\u00bbacceptedAnswer\u00a0\u00bb:{\u00ab\u00a0@type\u00a0\u00bb:\u00a0\u00bbAnswer\u00a0\u00bb,\u00a0\u00bbtext\u00a0\u00bb:\u00a0\u00bbOublier le nord, lu2019u00e9chelle graphique, les cotes aux limites, la distinction existant\/projetu00e9 et les raccordements aux ru00e9seaux sont des omissions fru00e9quentes qui entrau00eenent des demandes de piu00e8ces complu00e9mentaires.\u00a0\u00bb}}]}\n\n<h3>Qu\u2019est-ce qui distingue un plan cadastral d\u2019un plan de masse ?<\/h3>\n<p>Le plan cadastral indique la d\u00e9limitation et la r\u00e9f\u00e9rence parcellaire. Le plan de masse compl\u00e8te ces donn\u00e9es par les cotes, l\u2019implantation des constructions projet\u00e9es, les acc\u00e8s, les r\u00e9seaux et la description de l\u2019\u00e9tat existant et projet\u00e9.<\/p>\n<h3>Quelle \u00e9chelle choisir pour un plan de masse ?<\/h3>\n<p>Les \u00e9chelles courantes sont 1\/500 pour une maison individuelle, 1\/200 pour des terrains urbains plus denses et 1\/100 pour des d\u00e9tails pr\u00e9cis. L\u2019\u00e9chelle doit permettre la lecture claire des distances et des cotes.<\/p>\n<h3>Peut-on faire soi\u2011m\u00eame son plan de masse ?<\/h3>\n<p>Oui pour un projet simple si le plan est pr\u00e9cis, lisible et conforme aux attentes du service instructeur. Pour des configurations complexes, il est recommand\u00e9 de faire appel \u00e0 un professionnel (g\u00e9om\u00e8tre, architecte).<\/p>\n<h3>Quels sont les \u00e9l\u00e9ments souvent oubli\u00e9s ?<\/h3>\n<p>Oublier le nord, l\u2019\u00e9chelle graphique, les cotes aux limites, la distinction existant\/projet\u00e9 et les raccordements aux r\u00e9seaux sont des omissions fr\u00e9quentes qui entra\u00eenent des demandes de pi\u00e8ces compl\u00e9mentaires.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Plan de masse d\u00e9finition et utilisation en urbanisme : vue d\u2019ensemble indispensable pour localiser un projet urbain sur sa parcelle, &#8230; <a title=\"Plan de masse d\u00e9finition et utilisation en urbanisme\" class=\"read-more\" href=\"https:\/\/www.geometre-confiance.fr\/guide\/2026\/07\/08\/plan-de-masse-definition-et-utilisation-en-urbanisme\/\" aria-label=\"En savoir plus sur Plan de masse d\u00e9finition et utilisation en urbanisme\">Lire plus<\/a><\/p>\n","protected":false},"author":2,"featured_media":256,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-259","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-urbanisme-reglementation"],"_links":{"self":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/posts\/259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/comments?post=259"}],"version-history":[{"count":0,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/posts\/259\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/media\/256"}],"wp:attachment":[{"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/media?parent=259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/categories?post=259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geometre-confiance.fr\/guide\/wp-json\/wp\/v2\/tags?post=259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}