TesselyaTesselya
Tesselya /Changelog

Changelog

Nouveautés de Tesselya

Toutes les évolutions du produit, version par version : nouvelles capacités, corrections et effets mesurés. Sectora est en phase alpha ; les versions suivent un versionnage sémantique.

0.13.5-alphasectoramaillage

Maillage : carte propre du bloc principal par défaut

Ajustement du réglage par défaut du générateur Maillage. Auparavant, « Générer des îlots » était coché par défaut : une génération standard incluait d'emblée les moindres groupes de points isolés — dont les erreurs de géocodage lointaines — sous forme de petites taches éparses sans rapport avec l'agglomération.

Modifié

  • Une génération standard donne directement une carte propre. Le maillage se concentre désormais par défaut sur le bloc principal (la composante principale du semis, l'agglomération réelle) : les groupes de points isolés ne sont plus maillés sauf demande explicite. Pour les inclure (cas d'un territoire réellement multipolaire), il suffit de cocher « Générer des îlots » — l'option reste disponible dans tous les modes et n'écarte, elle, aucun point.

Note

Le comportement de calcul n'a pas changé : seul le réglage par défaut est inversé. Les projets existants conservent leur réglage déjà enregistré ; le nouveau défaut s'applique aux nouveaux projets. Le maillage automatique de Sectora (semis de points/lignes auto-dimensionné) n'est pas concerné.

0.13.4-alphasectoramaillagealgorithme

Maillage : fin des mailles vides inutiles et des points perdus

Audit du générateur Maillage (agrégation d'un semis de points sur carroyage régulier) sur un cas urbain réel — Bordeaux, semis de 12 172 points — comportant 4 points aberrants géocodés à 60–96 km de l'agglomération, un artefact de géocodage très courant dans les données ouvertes. Le mode par défaut « couvrir toute la zone » s'étirait jusqu'à ces points et noyait la carte sous des mailles vides.

Corrigé

  • « Couvrir toute la zone » ne couvre plus que la zone réelle. L'emprise maillée épousait auparavant l'enveloppe convexe de l'ensemble du semis : quelques points aberrants suffisaient à générer un immense tapis de mailles vides entre l'agglomération et eux. La grille suit désormais une enveloppe concave fidèle à la morphologie du semis : les creux internes restent comblés par des mailles à zéro (carte de densité complète), mais plus rien n'est maillé dans le vide. Les points isolés forment de petits îlots à part, faciles à repérer ou à écarter.
  • « Sans îlots » ne jette plus la périphérie. En mode « cellules occupées seulement », écarter les îlots supprimait aussi des pans entiers de la périphérie urbaine, séparés du centre par une seule maille vide — une perte de données silencieuse. Seuls les groupes de points réellement isolés du bloc principal sont désormais écartés.
  • Plus aucun point perdu en bordure d'emprise. Un point situé exactement sur la limite du semis pouvait n'être affecté à aucune maille ; tous les points sont désormais comptabilisés.

Effet mesuré (Bordeaux — 12 172 points, tessellation hexagonale 1 km, réglages par défaut)

Mailles générées

268

avant : 2 511

Part de mailles vides

27 %

avant : 92 %

Emprise maillée

696 km²

avant : 6 524 km²

Points de bordure non comptabilisés

0

avant : jusqu'à 4

  • Points écartés à tort par « sans îlots » (mailles de 500 m) : 180 → 36 (les 36 restants sont réellement isolés).

Ajouté

  • Alerte sur les points aberrants. Le journal de génération signale désormais les points anormalement éloignés du reste du semis (effectif, distance, seuil) — dans le générateur Maillage et dans Sectora. Sur le cas d'audit : « 4 points jusqu'à 96 km, seuil 61 km », de quoi diagnostiquer immédiatement un géocodage défectueux.
  • L'option « Générer des îlots » est disponible dans tous les modes. Elle était masquée en mode « couvrir toute la zone », alors que la décocher est précisément le moyen d'écarter les points aberrants et de ne mailler que le bloc principal.

Note

Le maillage automatique de Sectora (mode semis de points/lignes) était déjà sain et reste inchangé : résultats strictement identiques avant/après. Les grilles déjà générées ne changent pas ; le nouveau comportement s'applique à la prochaine génération.

0.13.3-alphasectorafrontièresalgorithme

Barrières : cours d'eau et plans d'eau surfaciques pris en compte

Une barrière définie par une couche surfacique (cours d'eau ou plan d'eau numérisé comme une surface plutôt que comme une polyligne — cas très courant des grands cours d'eau dans les référentiels publics) était silencieusement ignorée : les secteurs pouvaient la traverser comme si elle n'existait pas, alors que l'utilisateur l'avait déclarée infranchissable ou pénalisée.

Corrigé

  • Les barrières surfaciques sont désormais respectées. Une couche surfacique utilisée en barrière infranchissable ou pénalisée agit comme un véritable obstacle : ses berges servent de limite. Aucun secteur ne traverse la surface ni n'y pénètre depuis l'extérieur ; deux zones situées d'une même rive ne sont pas séparées inutilement. Fonctionne aussi bien en mode surfacique (polygones) qu'en mode semis de points/lignes.
  • Plus d'ambiguïté sur le type de couche. Une couche surfacique pouvait auparavant n'avoir d'effet qu'en « emboîtement ». Elle est maintenant utile dans les trois comportements : obstacle (via sa berge) en infranchissable / pénalisé, contenant en emboîtement.

Ajouté

  • Intérieur des surfaces en eau retiré du maillage. En mode semis de points/lignes, avec une barrière infranchissable surfacique, les mailles entièrement à l'intérieur de la surface (le lit du cours d'eau, le plan d'eau) ne sont plus sectorisées : elles ne portent aucune charge utile et sont désormais écartées du découpage, au lieu d'apparaître comme de petites zones « îlots » posées au milieu de l'eau. Les mailles qui ne font que longer la berge sont conservées. Le nombre de mailles retirées est indiqué dans le journal.

Note

Rien à refaire sur les découpages existants. Les barrières déjà définies par une couche linéaire (polylignes) fonctionnent exactement comme avant. En mode surfacique, aucune donnée d'entrée n'est supprimée (seul le maillage interne des points/lignes est concerné par le retrait des mailles internes).

0.13.2-alphasectoraéquilibragealgorithme

Équilibrage : fin des secteurs étirés et surchargés

Sur le mode semis de points, certaines découpes produisaient un secteur très étiré et surchargé pendant qu'un autre restait sous-chargé — sans que la compacité ni le poids d'équilibrage n'y changent quoi que ce soit.

Corrigé

  • Initialisations multiples, la partition la mieux équilibrée est retenue. L'optimisation n'effectuait qu'une seule initialisation et pouvait se figer sur une partition très déséquilibrée. Elle explore désormais plusieurs initialisations (multi-start) et conserve la plus équilibrée, à compacité comparable. Le mode surfacique (polygones) conserve, lui, une initialisation unique (adaptée aux gros volumes).

Effet mesuré (Lyon — semis de 112 000 points, réseau hydrographique en barrière, 20 secteurs, charge portée par un attribut quantitatif)

Rapport entre secteur le plus et le moins chargé

1,5×

avant : 3,1×

Dispersion des charges (coefficient de variation)

0,09

avant : 0,21

Le secteur le plus chargé repasse dans la tolérance ; il subsiste au plus un secteur périphérique sous-chargé (zone peu dense dont l'étendue est imposée par l'équilibrage).

Conseil de réglage

Une finesse plus fine et une distance de fusion plus serrée (plutôt que « moyen » / « large ») produisent un maillage plus détaillé et un équilibrage encore meilleur, au prix d'un temps de calcul un peu plus long.

0.13.1-alphasectorarendufrontières

Secteurs sans lacunes internes

Correctifs de qualité de rendu sur le mode semis de points combiné à une barrière, observés sur un cas réel dense (métropole lyonnaise).

Corrigé

  • Plus de lacunes ni d'entailles à l'intérieur des secteurs. Au milieu de certains secteurs apparaissaient de petits vides (mailles sans points) et de fines entailles le long des limites — perçues comme des « arêtes qui reviennent à l'intérieur » du secteur. Ces lacunes sont désormais comblées et les entailles supprimées. Les grands vides légitimes (plans d'eau, emprises non couvertes) restent préservés. Découpage et charges inchangés (correctif purement cartographique).
  • Barrières fragmentées mieux suivies. Une couche-barrière composée de nombreux tronçons (réseau hydrographique) est raccordée topologiquement en polylignes continues avant la découpe, réduisant les cas où un secteur déborde de l'autre côté.

Effet mesuré (Lyon — semis de 112 000 points, réseau hydrographique en barrière, 20 secteurs)

  • Lacunes internes des secteurs : ~18 → 0.
  • Mailles débordant de la barrière : légèrement réduites.

Limitations connues

  • Là où un tronçon de barrière se termine réellement à l'intérieur du territoire (source, affluent isolé), la maille contenant cette extrémité ne peut pas être coupée et peut encore chevaucher la barrière : quelques débordements subsistent.
  • Une barrière infranchissable isole parfois de petits secteurs d'un côté qui restent sous-chargés : la charge ne pouvant pas franchir la barrière, ce déséquilibre est intrinsèque à la séparation demandée (et non un défaut de répartition).
0.13.0-alphasectoraapplicationproduit

Sectora unifié : surfacique et semis de points dans un seul outil

Jusqu'ici, sectoriser une couche surfacique (polygones) et sectoriser un semis de points (ou un réseau linéaire) passaient par deux entrées distinctes, avec des réglages présentés différemment. Les deux ne forment plus qu'un seul outil « Sectora » : on choisit sa couche — surfacique, ponctuelle ou linéaire — et le formulaire s'adapte automatiquement au type de géométrie.

Modifié

  • Un seul outil pour tous les types de géométrie. Plus besoin de choisir entre deux variantes : « Sectora » accepte indifféremment une couche surfacique (polygones), ponctuelle (semis de points) ou linéaire (réseau). Les réglages communs (nombre de secteurs, compacité, tolérance, équilibrage, centralités, frontières…) sont identiques quel que soit le type de couche.
  • La charge se définit de la même façon partout. L'éditeur de charge — qui permet de composer la grandeur à équilibrer à partir des attributs — est désormais utilisé aussi bien pour le surfacique que pour les points/lignes. Pour un semis de points, ne rien définir revient à équilibrer le nombre de points ; composer une formule équilibre la grandeur correspondante (population, capacité…). Les anciens sélecteurs rapides « nombre / somme d'un attribut » sont remplacés par cet éditeur unique.
  • Formulaire qui s'adapte à la couche choisie. Les réglages propres au maillage interne (finesse, distance de fusion, forçage de la configuration de maillage) n'apparaissent que pour les points/lignes ; l'enrichissement d'une couche de points distincte n'apparaît que pour le surfacique. Tout le reste est commun.

Ajouté

  • Report d'attributs disponible aussi pour les points et lignes. On peut désormais reporter sur chaque secteur des attributs agrégés (dénombrement, somme, moyenne) à partir d'un semis de points, comme c'était déjà possible pour le surfacique.

Note

Aucune action requise : les découpages existants continuent de fonctionner à l'identique.

0.12.3-alphasectoramaillagefrontièreséquilibrage

Semis de points : nombre de secteurs maîtrisé et maillage propre

Sur le mode semis de points / lignes combiné à une barrière (réseau hydrographique…), la découpe partait en vrille : 20 secteurs demandés pouvaient en produire plus de 80, avec un équilibrage erratique. La cause : le maillage interne construit à partir des points se morcelait en dizaines de fragments déconnectés (un semis qui suit les axes de voirie laisse de larges vides interstitiels), et chaque fragment était transformé en secteur à part entière dès qu'une barrière s'ajoutait.

Corrigé

  • Le nombre de secteurs respecte la demande. Le maillage interne est désormais construit comme une surface continue (les vides entre amas proches sont comblés), au lieu d'une fine bande collée aux points qui éclatait en multiples morceaux. Les fragments légers réellement isolés par une barrière dense ne deviennent plus chacun un secteur : ils sont regroupés dans la zone « îlots », tandis que les grandes composantes de part et d'autre de la barrière gardent leurs secteurs (répartis au prorata de leur charge). La séparation reste exacte : aucun secteur ne franchit la barrière.
  • Réglage « distance de fusion » de nouveau opérant. Sur un semis localement dense (alignements le long de la voirie), les niveaux serré / moyen / large n'avaient aucun effet : ils modulent désormais réellement le comblement des vides du maillage.

Effet mesuré (Lyon — semis de 112 000 points, réseau hydrographique en barrière, 20 secteurs)

Secteurs produits

21

avant : plus de 80

Équilibrage (coefficient de variation)

0,08

avant : ≈ 6,9

Fragments parasites du maillage

18

avant : 117

  • Les 21 secteurs = les 20 demandés + une zone « îlots » de résidus réellement détachés.
  • Résultat stable quelle que soit la finesse du maillage (auparavant : de 168 à 358 secteurs selon le réglage).
  • Sans barrière, l'équilibrage progresse aussi (coefficient de variation ≈ 0,47 → 0,16).

Limitations connues

  • Le « + 1 » résiduel (zone « îlots ») regroupe les amas que la barrière isole totalement du reste : on ne peut pas les rattacher sans franchir la barrière. L'option Exclure les îlots permet de les retirer du résultat.
  • Une barrière très dense (tout le réseau hydrographique d'un département) isole intrinsèquement certains amas chargés : ils gardent alors leur propre secteur, ce qui peut faire dépasser légèrement le nombre demandé. Un message d'information le signale désormais explicitement.
0.12.2-alphasectorarendufrontières

Îlots vides et continuité des barrières

Deux correctifs de qualité de rendu observés sur un cas réel dense (métropole lyonnaise, semis de points + réseau hydrographique en barrière) : des mailles vides parasites en zone « îlots » et des débordements le long des barrières.

Corrigé

  • Îlots vides retirés du résultat. Les mailles sans aucun point qui se retrouvaient isolées (en bordure d'un secteur, ou de l'autre côté d'une barrière) étaient versées dans la zone « îlots » — apparaissant comme des pavés vides collés aux secteurs, voire comme des lacunes au milieu de secteurs pourtant bien définis. Elles sont désormais supprimées : elles ne portent aucune charge et ne relient aucune partie du territoire. La zone « îlots » ne contient plus que les vraies composantes séparées (groupes de points réellement détachés du territoire principal).
  • Discontinuités des barrières fragmentées refermées. Une couche-barrière (réseau hydrographique…) est souvent un assemblage de tronçons indépendants ; là où deux tronçons s'arrêtent à quelques mètres l'un de l'autre, le réseau présentait une discontinuité par laquelle un secteur pouvait déborder de l'autre côté. Ces petits écarts (jusqu'à ~une maille) sont désormais raccordés automatiquement, réduisant les débordements visuels le long des barrières — sans connecter des tronçons réellement distants.

Effet (Lyon — semis de points + réseau hydrographique en barrière, 15 secteurs)

  • Zone « îlots » : ne conserve que les composantes chargées ; les pavés vides et les lacunes intérieures disparaissent (part de charge en « îlots » inchangée, ~3 %).
  • Débordements le long des barrières : réduits.

Limitations connues

Le débordement ne peut pas être totalement éliminé : là où un tronçon de barrière se termine réellement à l'intérieur du territoire (source, affluent isolé), il n'y a aucune barrière continue à respecter et la maille qui contient cette extrémité reste rattachée à un seul secteur. La séparation reste exacte là où la barrière est continue (aucun secteur ne la franchit).

0.12.1-alphasectorarendualgorithme

Secteurs d'un seul tenant

Correctif de qualité géométrique : certains secteurs apparaissaient découpés en plusieurs blocs ne se rejoignant qu'en un point de contact — limites internes visibles, voire une parcelle isolée « pontant » deux blocs par un simple coin.

Corrigé

  • La continuité territoriale d'un secteur s'appuie désormais sur la seule contiguïté d'arête (dite « rook ») : un contact par un simple sommet (« queen ») ne suffit plus à relier deux blocs au même secteur. Les secteurs ressortent d'un seul tenant, sans pincement ni parcelle pendante.
  • Vaut pour les deux modes (surfacique et semis de points/lignes).

Effet mesuré (Lyon — semis de points, réseau hydrographique en barrière, 20 secteurs)

  • Blocs reliés par un simple sommet : 4 → 0 ; les secteurs concernés retrouvent chacun leur continuité territoriale.

Limitations connues

Quelques mailles chevauchant encore une barrière, et des îlots épars résiduels, subsistent — traités séparément.

0.12.0-alphasectorafrontièresproduit

Frontières : barrières et emboîtement

Les secteurs respectent désormais des barrières physiques ou administratives (cours d'eau, autoroute, limite communale). C'est la capacité la plus structurante ajoutée depuis la lutte anti-spaghetti.

Ajouté

  • Barrières infranchissables. La barrière agit comme une coupure stricte : aucun secteur ne la franchit, quelle que soit la suite du calcul.
  • Barrières pénalisées. Le franchissement reste possible mais fortement découragé, avec trois niveaux d'intensité (faible, moyenne, forte). Dissuasion réelle mais probabiliste, pas une garantie absolue.
  • Emboîtement. Chaque secteur reste entièrement contenu dans son territoire parent (commune, département…), le nombre de secteurs étant réparti entre parents proportionnellement à leur charge. « Aucun secteur ne déborde de son parent » est garanti par construction.
  • Territoires coupés en deux bien gérés. Une barrière infranchissable sépare légitimement le territoire en plusieurs parties ; le nombre de secteurs demandé est alors réparti entre elles au prorata de leur charge (au moins un chacune), sans qu'aucun côté ne disparaisse.
  • Explication des frontières. Restitution dédiée du nombre de franchissements résiduels et des coupures appliquées, dans le PDF, l'export de données et un panneau de consultation en direct.

Effet mesuré

Sur données réelles, les barrières pénalisées réduisent d'environ 33 % les franchissements par rapport à un découpage sans barrière.

Limitations connues

Pas encore de points de passage (ponts, échangeurs), de réglage automatique de l'intensité, d'import de référentiels routiers ni d'outil de dessin de barrières — prévus pour des versions ultérieures.

0.11.1-alphasectoraréglages

Le poids d'équilibrage passé au banc d'essai

Version de mesure et de documentation : les curseurs avancés ont été caractérisés sur banc de test pour savoir précisément ce qu'ils changent au résultat. Aucun changement de comportement.

Effet mesuré

  • Le poids d'équilibrage est confirmé comme le levier déterminant : réglé à zéro, le résultat sort de la tolérance (écart de charge de 11 à 15 %) ; à sa valeur par défaut, il y entre (2,7 à 9 %). Au-delà, le gain devient marginal.
  • Le poids de « pénalité de tolérance » s'avère sans effet mesurable au réglage par défaut : il pourrait être retiré dans une prochaine version.

Modifié

La documentation des réglages a été corrigée et enrichie d'une section « impact mesuré des poids », pour choisir ses valeurs en connaissance de cause.

0.11.0-alphasectoraalgorithmecompacité

Compacité : un raffinement qui ne crée plus de « spaghettis »

Diagnostic : les zones « spaghetti » (secteurs filandreux qui s'intercalent les uns dans les autres) étaient en grande partie fabriquées par l'étape de lissage des formes elle-même, sur les territoires où la densité de charge est très hétérogène.

Modifié

  • Le lissage des formes refuse désormais tout ajustement qui créerait une nouvelle intrusion d'un secteur dans un autre.
  • Le moteur calcule deux résultats finaux — avec et sans lissage — et conserve le meilleur (moins d'intrusions, puis meilleure compacité). Sur les territoires à densité très contrastée, le lissage est automatiquement écarté.

Effet mesuré (moyenne sur 5 graines aléatoires)

Compacité moyenne (indice de Polsby-Popper)

0,23

avant : 0,20

Intrusions résiduelles

0,4

avant : 9,4

Écart de charge

6,1 %

avant : 9,7 % (et calcul plus rapide)

0.10.0-alphasectoraalgorithmecompacité

Anti-spaghetti : fin des intrusions entre secteurs

Lutte contre les « spaghettis » : deux secteurs adjacents s'envoyaient mutuellement des excroissances filamenteuses pour récupérer de la charge — un secteur sous-chargé grignotait l'intérieur d'un secteur chargé jusqu'à le couper en deux.

Ajouté

  • Détection des intrusions. Une zone est jugée « intrusive » lorsqu'un secteur voisin l'entoure nettement plus que le sien — un critère qui fonctionne aussi bien sur tessellations hexagonales que sur carroyages carrés.
  • Prévention pendant le calcul. L'optimisation décourage activement la formation de ces excroissances au fil de la découpe.
  • Réparation. Une passe finale résorbe les excroissances restantes (par la pointe) vers le secteur qui les enclave — uniquement si le secteur d'origine conserve sa continuité territoriale et la tolérance de charge.
  • Restitution. Le nombre d'intrusions résiduelles par secteur est indiqué dans le journal et les statistiques finales.

Arbitrage assumé

La charge prime : une intrusion strictement nécessaire à l'équilibrage n'est pas retirée (mais reste détectée et signalée).

0.9.0-alphasectoraperformancerobustessealgorithme

Un moteur jusqu'à 27× plus rapide, plus juste et plus robuste

Refonte majeure issue d'un audit complet du moteur de découpe. Sectora passe de « prototype lent et imprévisible » à « outil exploitable » : mêmes réglages, résultats plus justes, obtenus en une fraction du temps.

Performances

Jeu de 1 662 polygones

~13 s

avant : 354 s

Jeu de 664 polygones

~7 s

avant : 102 s

Le moteur ne recalcule plus tout le territoire à chaque micro-ajustement : seuls les secteurs réellement touchés sont réévalués. Les cartes s'allègent aussi : géométries généralisées pour l'affichage au-delà d'un certain volume (la couche enregistrée, elle, n'est jamais généralisée).

Justesse des calculs

  • Distances calculées dans une vraie projection métrique, adaptée au territoire. Auparavant, les distances est-ouest étaient fortement dilatées aux latitudes françaises, faussant voisinages et formes.
  • Sous-charge pénalisée comme la surcharge. Un secteur trop léger est désormais autant corrigé qu'un secteur trop lourd : sur un jeu de test, l'écart maximal passe de 25 % à 9,8 %.
  • Le respect de la tolérance prime. Entre plusieurs essais de découpe, un résultat dans la tolérance de charge l'emporte toujours sur un résultat plus compact mais hors tolérance.
  • Réparations plus prudentes. Quand un fragment isolé doit être rattaché à un secteur, il l'est en priorité vers un secteur qui reste sous son plafond de charge.

Robustesse

  • Messages d'erreur explicites : centralités insuffisantes, nombre de secteurs trop grand, tolérance impossible à tenir (un seul élément dépasse déjà le plafond d'un secteur)… au lieu d'un message générique.
  • Géométries invalides réparées automatiquement au chargement.
  • Attribut de centralité interprété largement : « true », « 1 », « oui »… sont correctement reconnus.
  • Graine aléatoire exposée dans les options avancées : résultats reproductibles à graine fixée.
0.8.0-alphasectoraapplicationproduit

Multi-secteurs, agrégations et enrichissement de points

Ajouté

  • Mode multi-secteurs : un découpage indépendant par valeur distincte d'un attribut de regroupement (une agence, un département…), le tout réuni en une seule couche de sortie, chaque zone étant préfixée par son secteur. Le nombre de zones demandé s'applique à chaque secteur.
  • Agrégations d'attributs : report sur chaque zone d'attributs de la couche d'entrée (dénombrement, somme, moyenne).
  • Enrichissement d'une couche de points : ajout d'une colonne indiquant, pour chaque point, le secteur qui le contient (jointure spatiale).
0.7.0-alphasectorasystème

Journal de génération et archivage repensés

Refonte de la gestion des fichiers et de la traçabilité des générations.

Modifié

  • Le journal de génération et les cartes interactives sont archivés de façon fiable avec chaque génération, et consultables a posteriori.
  • Journal structuré par étape, aligné sur la barre de progression affichée pendant le calcul (chargement, connexité, partition initiale, optimisation, statistiques, sauvegarde) : on sait toujours où en est la génération et ce qui s'y est passé.
0.6.0-alphasectoraexportsproduit

Export PDF et cartographie

Ajouté

  • Cartes interactives : visualisation des secteurs colorés directement dans l'application.
  • Export PDF de synthèse : statistiques par secteur et cartes réunies dans un document partageable.
  • Archivage des livrables de génération (journal, cartes, données) avec chaque calcul.
0.5.0-alphasectorastatistiques

Système de statistiques

Première vraie restitution analytique des résultats de découpe.

Ajouté

  • Équilibrage des secteurs : répartition de la charge, coefficient de variation, écart maximal à la cible.
  • Compacité : indice de Polsby-Popper calculé en exact pour chaque secteur.
  • Détails par secteur : charge, nombre d'entités, compacité.
  • Connectivité : métriques topologiques du graphe de contiguïté du territoire découpé.
  • Performance : temps par étape et réglages utilisés.
  • Validation finale de contiguïté : tout secteur qui ne serait pas d'un seul tenant est signalé dans le journal.
0.4.0-alphasectoraalgorithme

Centralités intelligentes et mode attribut

Les points de départ des secteurs ne sont plus arbitraires.

Ajouté

  • Détection automatique des centralités (k-means++ pondéré par la charge) : les centres initiaux sont choisis en tenant compte de la charge et de l'éloignement mutuel — les secteurs démarrent là où il y a de la matière, bien répartis sur le territoire.
  • Mode attribut : un attribut de la couche peut désigner directement les centres de secteur (vos agences, vos dépôts) ; le nombre de secteurs s'en déduit automatiquement.
  • Réglages d'objectif exposés : compacité, tolérance et poids d'équilibrage ajustables par curseurs.

Effet

Compacité nettement moins aléatoire et convergence plus rapide qu'avec des centres tirés au hasard.

0.3.0-alphasectoraalgorithme

Partition initiale compacte

Fin du démarrage « à froid » de l'optimisation.

Ajouté

  • Découpage initial par expansion progressive depuis chaque centralité : chaque secteur grandit de proche en proche, en s'écartant des autres centres et en respectant un plafond de charge, jusqu'à couvrir tout le territoire.

Modifié

L'optimisation démarre désormais toujours d'un découpage initial cohérent (l'ancien démarrage à vide est abandonné). Taux d'échec et temps de convergence fortement réduits.

0.2.0-alphasectoraalgorithmerobustesse

Connexité et gestion des îlots (territoires fragmentés)

Le moteur ne plante plus sur les territoires fragmentés (îles, enclaves, morceaux détachés).

Ajouté

  • Analyse de connexité du territoire : détection des composantes connexes détachées du bloc principal.
  • Gestion des îlots : le bloc principal est découpé normalement ; les morceaux non connectés sont soit regroupés dans une zone dédiée, soit exclus, au choix de l'utilisateur.

Limitations connues

Perte « silencieuse » de charge si les îlots portent une part significative du total (seul le journal le signale).

0.1.0-alphasectoraproduit

Genèse : premier zonage

Première version fonctionnelle : la preuve de concept.

Ajouté

  • Zonage de base : découpe d'un territoire en N secteurs d'un seul tenant, en optimisant grossièrement l'équilibrage de charge et la compacité.
  • Sortie : une couche avec un secteur fusionné par zone.

État initial (tout restait à faire)

  • Lent et imprévisible : aucune borne de durée, calculs très redondants.
  • Taux d'erreur élevé : plantage sur les territoires non connexes.
  • Compacité aléatoire : centres de secteurs tirés au hasard.
  • Calculs non métriques : distances faussées aux latitudes moyennes.
  • Pas de statistiques, pas d'export, journalisation minimale, aucune gestion des îlots, des intrusions ni des frontières.