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 bêta privée ; les versions suivent un versionnage sémantique.

0.19.0-betasectoraalgorithmemaillageéquilibrageréglages

Sectoriser des unités existantes (IRIS, communes, secteurs) avec une charge composite

Jusqu'ici, une sectorisation à charge composite construisait toujours son propre carroyage. Un nouveau champ « Unités spatiales » permet de regrouper à la place des polygones déjà en place — IRIS, communes, secteurs existants — en y agrégeant les sources du graphe de charge.

Ajouté

  • Unités spatiales explicites. Un champ optionnel « Unités spatiales » accepte une couche surfacique du projet : ses polygones deviennent les unités à regrouper, et toutes les sources du graphe de charge (semis de points, réseaux linéaires, emprises surfaciques) y sont agrégées avant l'équilibrage. Le carroyage automatique reste le comportement par défaut.
  • Agrégation fidèle à chaque géométrie source. Un semis de points compte ses entités dans l'unité qui les contient ; un réseau linéaire est proraté au prorata de la longueur tombant dans chaque unité ; une emprise surfacique au prorata de sa surface. Les entités hors de toute unité — les couches d'unités ne pavent pas toujours l'emprise des données — sont rattachées à l'unité la plus proche, et le nombre concerné est reporté.
  • Filtre par secteur de nouveau disponible. Avec des unités spatiales, l'attribut de filtre porte sur ces unités : une partition indépendante par valeur redevient possible en charge composite.

Effet mesuré (Lyon — 4 unités surfaciques jointives, semis source de 485 points dont 15 hors emprise des unités)

Entités source rattachées à une unité

485 sur 485

avant : 470 — les entités hors emprise rejoignent l'unité la plus proche

Charge obtenue par unité

132 / 60 / 203 / 90

somme conservée : 485

Limitations connues

  • L'emboîtement est refusé avec des unités spatiales : les unités choisies jouent déjà le rôle de contenant.
  • Une couche ne peut pas être à la fois la couche d'unités et une source du graphe de charge.
  • Un réseau linéaire ou une emprise partiellement hors des unités ne contribue qu'au prorata de la part couverte.
0.18.0-betasectoraalgorithmefrontièreséquilibragemaillage

Emboîtement et charge composite enfin combinables

Contraindre les secteurs à l'intérieur de limites administratives et équilibrer une charge issue de plusieurs couches étaient jusqu'ici exclusifs l'un de l'autre. Les deux fonctionnent désormais ensemble.

Ajouté

  • Emboîtement compatible avec la charge composite. Une génération combinant une frontière en emboîtement et des sources issues d'autres couches était refusée au lancement. Chaque entité source est maintenant rattachée à l'emprise parente la plus proche, puis chaque parent est carroyé, auto-dimensionné et équilibré avec sa propre charge composite. Le nombre de secteurs alloué à chaque parent découle de cette charge complète, et non plus de la seule couche sectorisée.
  • Aucune entité source perdue. Une entité tombant dans une emprise parente dépourvue d'entité à sectoriser rejoint le groupe voisin le plus proche plutôt que de disparaître du calcul. Une entité à cheval sur deux emprises est rattachée à une seule, selon son point représentatif — même règle que la couche sectorisée.

Effet mesuré (Lyon — semis de 80 points sectorisé, semis source de 60 points, 2 emprises parentes jointives)

Charge du parent ouest

90

avant : 50 — les 40 entités source du parent y sont désormais comptées

Charge du parent est

50

avant : 30

Secteurs alloués (ouest / est)

3 / 2

dérivés de la charge composite

Limitations connues

Le filtre par secteur (partition indépendante par valeur d'attribut) reste incompatible avec la charge composite : utiliser une frontière en emboîtement, qui couvre le même besoin sur une couche surfacique.

0.17.0-betasectoraalgorithmemaillageéquilibragestatistiques

Charge composite : toutes les couches de points sont rattachées aux secteurs

En charge composite, une seule couche — la première déclarée dans l'éditeur — recevait la colonne de secteur et servait de référence aux diagnostics. Ce choix implicite disparaît : toutes les couches ponctuelles du graphe de charge sont traitées à égalité.

Ajouté

  • Colonne de secteur sur chaque couche ponctuelle. Toute couche de points utilisée dans la charge composite reçoit désormais, sur place, la colonne indiquant le secteur qui contient chaque entité — y compris quand la couche sectorisée est un réseau linéaire. Les entités dont la maille a été retirée par une barrière sont rattachées au secteur le plus proche ; les entités sans géométrie sont comptées à part, couche par couche.
  • Diagnostic de concentration ponctuelle sur chaque couche. L'alerte de charge insécable (entités strictement superposées, qu'aucune finesse de carroyage ne sépare) n'examinait que la première couche. Elle est maintenant produite pour chacune, la cible par secteur restant calculée sur la charge totale. Exemple détecté : 40 entités superposées d'une couche source à 119 % de la cible par secteur, jusqu'ici invisible.
  • Répartition par secteur détaillée par couche. L'analyse « points par secteur » conserve son cumul et présente en plus le décompte de chaque couche enrichie.

Corrigé

  • Maillage continu quand des points s'ajoutent à un réseau linéaire. Avec une couche linéaire sectorisée, les mailles sans longueur de réseau étaient écartées — même lorsqu'un semis de points voisin portait de la charge, ce qui fragmentait le carroyage et forçait des secteurs parasites. Les mailles vides sont désormais conservées dès qu'une couche ponctuelle contribue à la charge, et écartées seulement si toutes les couches contributrices sont linéaires ou surfaciques.

Effet mesuré (Lyon — réseau linéaire rectiligne de 3,1 km sectorisé, semis source de 40 points à 1,3 km au nord)

Composantes connexes du carroyage

31

avant : 120

Entités du semis source rattachées à un secteur

40 sur 40

avant : 0

Couches ponctuelles portant la colonne de secteur (charge à deux couches de points, 80 + 45 entités)

2 sur 2

avant : 1 sur 2

Note

Sous les sélecteurs d'attribut (centralité, filtre par secteur), l'interface rappelle désormais de quelle couche proviennent les attributs proposés.

0.16.1-betasectoraalgorithmeéquilibragemaillage

Charge composite : calcul sur les données brutes, entité par entité

Les opérateurs du graphe de charge s'appliquent désormais aux données brutes de chaque couche, entité par entité — la répartition sur le carroyage est implicite, au prorata de la fraction de longueur ou de surface de chaque entité dans la maille. L'éditeur reflète ce principe : on choisit une donnée, pas un agrégat.

Corrigé

  • La multiplication d'attributs retrouve son sens. En charge composite, multiplier deux attributs d'une même couche valait « produit des sommes par maille » — deux entités de valeurs 2 × 3 et 5 × 7 dans la même maille donnaient 70 au lieu de 41. Le résultat est désormais la somme des produits calculés entité par entité, conforme au comportement historique de la charge mono-couche.
  • Le dénombrement d'un réseau linéaire est additif. Une polyligne source était comptée une fois dans chaque maille traversée, gonflant la charge totale proportionnellement à la finesse du carroyage. Chaque polyligne est désormais répartie fractionnairement entre les mailles traversées : la charge totale égale le nombre de polylignes, quelle que soit la maille.

Ajouté

  • Attributs numériques sur les couches surfaciques sources. Un nœud d'entrée référençant une couche de polygones peut désormais utiliser un attribut (ex. population, tonnage) en plus de la surface : la valeur de chaque entité est répartie entre les mailles au prorata de la fraction de surface — le total équilibré égale la somme de l'attribut.

Modifié

  • Libellés de l'éditeur de charge clarifiés. Le sélecteur de source propose « Attributs » (et non plus « Attributs (somme) »), « Surface (m²) » (et non plus « intersectée »), et l'aide décrit la donnée brute de la couche plutôt qu'une « valeur agrégée par maille » — l'agrégation est un mécanisme interne, pas un choix de l'utilisateur.

Effet mesuré (Lyon — semis de 50 points, 3 polylignes rectilignes d'environ 2,6 km)

Dénombrement du réseau linéaire source (charge totale)

3,0

avant : 759 — une unité par polyligne, répartie sur les mailles traversées

Multiplication de deux attributs, deux entités dans une même maille

41

avant : 70 — somme des produits entité par entité

Note

Les emprises surfaciques qui se recouvrent contribuent désormais chacune pour leur propre surface (auparavant, les recouvrements n'étaient comptés qu'une fois via leur union). Les charges composites linéaires (additions et coefficients) restent strictement identiques.

0.16.0-betaProduitCoreÉquilibrage

Charge composite : équilibrer des données issues de plusieurs couches

Jusqu'ici, la charge à équilibrer ne pouvait provenir que de la couche sectorisée elle-même. Pour la sectorisation d'un semis de points ou d'un réseau de lignes, l'éditeur de charge accepte désormais des sources issues d'autres couches du projet — par exemple une charge de collecte = points à desservir + 3 × signalements + 0,001 × surface à traiter.

Ajouté

  • Nœud d'entrée « autre couche » dans l'éditeur de charge. En plus du dénombrement et des attributs de la couche d'entrée, un nœud d'entrée peut référencer une autre couche du projet : sa valeur est agrégée par maille du carroyage — dénombrement ou somme d'un attribut pour un semis de points, longueur pour un réseau linéaire, surface intersectée (en m²) pour une couche surfacique. Les opérateurs existants (addition, multiplication, coefficient) combinent librement ces sources dans une charge unique.
  • Le maillage couvre toutes les couches contributrices. L'emprise et la résolution du carroyage tiennent compte de l'ensemble des sources : un amas d'une couche secondaire situé hors du semis d'entrée génère ses propres mailles et sa charge est intégralement équilibrée — aucune évaporation. Vérifié sur un semis synthétique de 300 points en deux amas (Lyon), une couche secondaire de 120 points dont un amas excentré et une couche surfacique : la charge totale du maillage restitue exactement la somme des trois contributions.

Modifié

  • L'éditeur de charge définit seul les données de la génération. Le sélecteur de couche d'entrée disparaît : chaque nœud d'entrée du graphe choisit sa couche puis sa source (dénombrement, longueur, surface ou attribut), et les couches utilisées par la génération sont déduites du graphe au lancement. La première couche de points/lignes du graphe sert de couche de rattachement (elle reçoit la colonne secteur en sortie) ; un graphe limité à une seule couche de polygones conserve la sectorisation de polygones classique.

Conseil de réglage

  • Les unités des sources ne sont pas homogénéisées : une surface en m² additionnée telle quelle à un dénombrement dominerait l'équilibrage. Pondérer chaque source avec un nœud coefficient (ex. 0,001 × m²) avant de les additionner.

Limitations connues

  • La charge composite (plusieurs couches) est disponible pour la sectorisation d'un semis de points ou d'un réseau de lignes ; le mode polygones suivra. Incompatible pour l'instant avec le filtre par secteur et l'emboîtement dans des limites administratives (le lancement est bloqué avec un message explicite).
  • Seule la couche de rattachement est enrichie de la colonne secteur en sortie ; les autres couches sources ne sont pas encore rattachées à leurs secteurs.

Note

  • Les graphes de charge existants doivent re-préciser la couche de chaque nœud d'entrée (un message le signale dans l'éditeur) avant de relancer une génération.
0.15.0-betaMaillageRéglagesFiabilité

Sectorisation de points : îlots enfin réglables à toutes les échelles, nouveau mode « continu »

La sectorisation d'un semis de points regroupé en agglomérations distinctes (échelle d'une métropole ou d'un territoire national) produisait facilement des îlots, sans qu'aucun réglage n'ait de prise dessus. Les réglages avancés agissent désormais réellement, et un nouveau mode garantit un maillage d'un seul tenant.

Ajouté

  • Mode « Continu (aucun îlot) » pour la distance de fusion. Le maillage couvre l'enveloppe convexe du semis d'un seul tenant : aucun secteur « îlots » en sortie (hors lambeaux découpés par une barrière infranchissable, qui reste respectée), contour extérieur lissé. Sur une très grande emprise, la maille est automatiquement grossie pour que le calcul reste fluide. Mesuré sur Paris — semis de 1 907 points regroupés sur 380 localisations, voies d'eau en barrière : l'équilibrage s'améliore aussi (écart max 27,7 → 20,7 %, coefficient de variation 15,7 → 10,0 %).

Corrigé

  • Le réglage « Distance de fusion / seuil d'îlot » agit à toutes les échelles. Sur un semis en agglomérations distinctes, « serré », « moyen » et « large » produisaient un maillage strictement identique ; les trois positions modulent désormais réellement la fusion ou la préservation des îlots.
  • La finesse du maillage respecte sa gradation sur les grandes emprises. À l'échelle d'un territoire national, « fin » pouvait produire une maille plus grossière que « moyen » ; l'ordre grossier → moyen → fin est maintenant garanti et chaque niveau se rapproche de sa cible de résolution.

Modifié

  • La finesse « auto » vise désormais le milieu de la gamme (équivalent à « moyen », compromis résolution / vitesse) au lieu de tendre vers « fin » : sur un semis urbain fragmenté par des barrières, cela évite un maillage inutilement lourd et davantage d'îlots ; « fin » reste disponible pour la résolution maximale.

Effet mesuré (semis synthétique de 2 400 points en 30 agglomérations sur une emprise de 900 km)

Composantes du maillage serré / moyen / large

130 / 41 / 31

avant : 30 / 30 / 30 (identiques)

Mode « continu »

1 seul tenant

avant : 30 îlots

Gradation de la finesse (fin / moyen / grossier)

492 m / 1 129 m / 2 113 m

avant : « fin » (1 982 m) plus grossier que « moyen » (1 834 m)

Conseil de réglage

  • Pour un rendu sans aucun îlot et des limites extérieures lissées, choisir « continu ». À l'inverse, « serré » préserve désormais nettement plus d'îlots qu'avant (il était sans effet) : re-vérifier les générations configurées en « serré ».
0.14.2-betaProduitApplication

Confort d'usage : écrans d'erreur, dates et analyse

Améliorations de confort : écrans d'erreur plus clairs, dates en français et onglet Analyse qui se sélectionne tout seul.

Corrigé

  • Une adresse inexistante affiche une vraie page d'erreur (avec retour à l'accueil) au lieu d'une page vide ; le statut renvoyé aux moteurs de recherche est correct.
  • Les dates s'affichent en français partout (« 9 juil. 2026 » au lieu de « 9 Jul 2026 » dans certaines listes, dont le tableau de bord).
  • Fin de la notification « Génération terminée » fantôme au retour sur un projet dont la génération était déjà achevée : elle ne s'affiche plus qu'à la fin réelle d'un calcul.
  • Le rappel des types de géométrie acceptés par l'algorithme ne contient plus de doublon.

Modifié

  • L'onglet Analyse s'ouvre directement sur la dernière génération terminée, comme le fait déjà la carte, au lieu d'attendre une sélection manuelle.
  • Tableau de bord plus lisible : grands nombres formatés (« 2 000 000 » au lieu de « 2000000 ») et libellés de navigation harmonisés en français.

Effet mesuré

  • Données téléchargées avant le premier affichage de l'application : 220 Ko → 91 Ko (compressées, hors fonds de carte et illustrations).
0.14.1-betaProduitRestitution

Carte du projet : affichage stable et panneau de couches clarifié

La vue « Carte & Données » du projet gagne en stabilité et en lisibilité.

Corrigé

  • La carte ne se recharge plus toute seule (fond de plan qui clignote, position et zoom perdus) à la fin d'une génération, à l'import d'une couche ou à la sélection d'un résultat : seules les couches concernées sont ajoutées, retirées ou recadrées.
  • Fin des messages d'erreur techniques au-dessus de la carte au changement de projet ; les erreurs restantes s'affichent en langage clair et se ferment d'un clic.
  • Le renommage d'une couche s'applique immédiatement, sans rechargement de la page.

Modifié

  • Une couche fraîchement importée s'affiche d'office et la carte se recadre sur son emprise ; les couches affichées sont mémorisées et restaurées à la réouverture du projet.
  • Panneau de couches clarifié : icône de type de géométrie (surfacique, ponctuelle, linéaire) devant chaque nom, action « Renommer » déplacée dans le volet de configuration de la couche, curseur signalant tous les éléments cliquables.
0.14.0-betaProduitMaillage

Charge par dénombrement et panneau de maillage clarifié

L'éditeur de charge sait désormais équilibrer le simple nombre d'entités par secteur, et le panneau de configuration du maillage n'apparaît plus quand ses réglages sont ignorés.

Ajouté

  • Dénombrement dans l'éditeur de charge. Un nœud d'entrée peut prendre « Dénombrement (1 par élément) » comme source, seul ou combiné à des attributs pondérés (addition, multiplication, coefficient) : chaque entité compte pour 1, ce qui permet d'équilibrer les secteurs sur le seul nombre de points.

Corrigé

  • Le panneau « Configuration de la grille » ne s'affiche plus à tort. Pour un semis de points ou un réseau de lignes, il n'apparaît que si l'option « Forcer la configuration de maillage » est cochée — il était auparavant toujours visible, alors qu'en dimensionnement automatique ses réglages sont ignorés.
0.13.6-betaMaillageFrontièresFiabilité

Sectorisation de points : semis à localisations répétées et barrières mieux respectées

Correctifs pour la sectorisation d'un semis de points dont de nombreux points partagent les mêmes localisations, et pour le respect des barrières infranchissables.

Corrigé

  • Un semis regroupé sur peu de localisations distinctes ne bloque plus la génération. Ce cas (plusieurs objets par site) pouvait rendre la génération interminable ; elle aboutit désormais en quelques dizaines de secondes, avec une maille adaptée à l'emprise.
  • Les barrières infranchissables ne sont plus enjambées par endroits. Certaines mailles restaient à cheval sur les deux rives d'un canal ou d'une rivière, rattachant des points à la mauvaise rive ; toutes les mailles traversées sont désormais découpées le long du tracé et chaque point est rattaché au secteur qui le contient réellement.

Modifié

  • Le réglage « Finesse du maillage » agit désormais sur tous les types de semis : « grossier » (calcul plus rapide, contours plus larges), « moyen »/« auto » et « fin » (contours plus fidèles, calcul plus long) produisent bien trois découpages distincts, y compris sur un semis regroupé sur peu de localisations — ils étaient identiques dans ce cas.

Effet mesuré (Paris — semis de 1 907 points regroupés sur 380 localisations, voies d'eau surfaciques en barrière infranchissable)

Durée de génération

20 s

avant : > 20 min sans aboutir

Points hors de leur secteur

0

avant : rattachements à la mauvaise rive

Secteurs franchissant une voie d'eau

0

avant : franchissements de canal

Gradation de la finesse (maille)

135 → 68 m

avant : identique pour les trois réglages

Limitations connues

  • En finesse « grossier », un motif plus étroit que la maille (ex. une île fluviale d'une centaine de mètres) n'est plus résoluble : préférer « moyen » ou « fin » quand de tels motifs comptent.
  • Si la couche-barrière comporte des lacunes de numérisation, un secteur peut légitimement passer par le trou : vérifier la continuité de la couche en amont.
0.13.5-betaMaillage

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-betaMaillageFiabilité

Maillage : fin des mailles vides inutiles et des points perdus

Le générateur Maillage ne se laisse plus déborder par les points aberrants (erreurs de géocodage éloignées de l'agglomération, très courantes dans les données ouvertes) : fini le tapis de mailles vides.

Corrigé

  • « Couvrir toute la zone » ne couvre plus que la zone réelle. L'emprise maillée suit désormais une enveloppe concave fidèle à la morphologie du semis (au lieu de l'enveloppe convexe) : les creux internes restent comblés par des mailles à zéro, mais quelques points aberrants ne génèrent plus un immense tapis de mailles vides — ils forment de petits îlots à part.
  • « Sans îlots » ne jette plus la périphérie. Seuls les groupes de points réellement isolés du bloc principal sont écartés — plus de pans entiers de périphérie urbaine supprimés silencieusement.
  • Plus aucun point perdu en bordure d'emprise : tous les points sont comptabilisés, y compris ceux situés exactement sur la limite du semis.

Ajouté

  • Alerte sur les points aberrants. Le journal de génération signale les points anormalement éloignés du reste du semis (effectif, distance, seuil) — dans le générateur Maillage et dans Sectora.
  • L'option « Générer des îlots » est disponible dans tous les modes ; la décocher est le moyen d'écarter les points aberrants.

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 écartés à tort par « sans îlots » (mailles de 500 m) : 180 → 36 (les 36 restants sont réellement isolés).

Note

Le maillage automatique de Sectora (mode semis de points/lignes) reste inchangé ; les grilles déjà générées ne changent pas, le nouveau comportement s'applique à la prochaine génération.

0.13.3-betaFrontièresFiabilité

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

Une barrière définie par une couche surfacique (grand cours d'eau ou plan d'eau numérisé comme une surface, cas courant des référentiels publics) était silencieusement ignorée : les secteurs pouvaient la traverser.

Corrigé

  • Les barrières surfaciques sont désormais respectées, en infranchissable comme en pénalisé : les berges servent de limite, aucun secteur ne traverse la surface ni n'y pénètre, et deux zones d'une même rive ne sont pas séparées inutilement. Vaut pour les deux modes (surfacique et semis de points/lignes).

Ajouté

  • Intérieur des surfaces en eau retiré du maillage (mode semis de points/lignes, barrière infranchissable) : le lit du cours d'eau ou le plan d'eau n'apparaît plus sous forme de petites zones « îlots » posées au milieu de l'eau. Le nombre de mailles retirées est indiqué dans le journal.

Note

Rien à refaire sur les découpages existants ; les barrières définies par une couche linéaire (polylignes) fonctionnent exactement comme avant.

0.13.2-betaCorePrécision

É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-betaFrontièresPrécision

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-betaProduit

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-betaMaillageFrontières

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…), 20 secteurs demandés pouvaient en produire plus de 80, avec un équilibrage erratique.

Corrigé

  • Le nombre de secteurs respecte la demande. Les petits fragments 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 (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. Les niveaux serré / moyen / large n'avaient aucun effet sur un semis localement dense ; 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

  • 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).

Limitations connues

  • La zone « îlots » regroupe les amas que la barrière isole totalement : on ne peut pas les rattacher sans la franchir. L'option Exclure les îlots permet de les retirer du résultat.
0.12.2-betaFrontièresPrécision

Îlots vides et continuité des barrières

Deux correctifs de qualité de rendu sur le mode semis de points combiné à une barrière : mailles vides parasites en zone « îlots » et débordements le long des barrières.

Corrigé

  • Îlots vides retirés du résultat. Les mailles sans aucun point isolées en bordure de secteur ou derrière une barrière apparaissaient comme des pavés vides, voire des lacunes au milieu des secteurs. Elles sont désormais supprimées ; la zone « îlots » ne contient plus que les groupes de points réellement détachés du territoire principal.
  • Discontinuités des barrières fragmentées refermées. Les petits écarts entre tronçons d'une couche-barrière (réseau hydrographique…) sont raccordés automatiquement — sans connecter des tronçons réellement distants — réduisant les débordements de secteurs de l'autre côté.

Limitations connues

Là où un tronçon de barrière se termine réellement à l'intérieur du territoire (source, affluent isolé), un débordement local reste possible ; la séparation reste exacte là où la barrière est continue.

0.12.1-betaCorePrécision

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-betaFrontières

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-betaCore

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

Pas de nouveauté ici, mais une mise au clair : les curseurs avancés sont passés au banc d'essai pour savoir, chiffres à l'appui, ce que chacun change vraiment au résultat. Comportement inchangé.

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-betaCorePrécision

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-alphaCorePrécision

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-alphaCorePerformanceFiabilité

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 18 563 polygones

~76 s

avant : 130 min

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-alphaProduit

Multi-secteurs, agrégations et enrichissement de points

Trois nouvelles cordes à l'arc de Sectora : découper par groupes, garnir les secteurs de chiffres agrégés, et étiqueter un semis 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-alphaRestitution

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

Grand ménage sous le capot : tout le suivi des générations est remis à plat — plus lisible, plus fiable, et sans le moindre fichier qui traîne.

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-alphaRestitution

Export PDF et cartographie

Les résultats sortent enfin de l'écran : cartes en couleur et rapport PDF prêts à être partagés.

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-alphaRestitution

Système de statistiques

Sectora se met à raconter ce qu'il fait : 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-alphaCorePrécision

Centralités intelligentes et mode attribut

Les secteurs ne démarrent plus au petit bonheur : leurs points de départ sont choisis là où ça compte vraiment.

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-alphaCore

Partition initiale compacte

Fini le démarrage à froid : l'optimisation ne part plus d'une page blanche, mais d'une première découpe déjà présentable.

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-alphaCoreFiabilité

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

Îles, enclaves, morceaux détachés : jusqu'ici le moteur calait dès qu'un territoire n'était pas d'un seul tenant. Il apprend enfin à composer avec les archipels.

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-alphaCoreProduit

PoC : première génération et interface

Tout commence ici. Une première version qui sait déjà l'essentiel : prendre un territoire, un nombre de secteurs, et rendre un découpage d'un seul tenant. Grossier, lent, un brin susceptible — mais c'est le pépin d'où tout Sectora a poussé.

Ajouté

  • Zonage de base. On fournit un territoire et un nombre de secteurs ; Sectora le découpe en autant de zones d'un seul tenant, en cherchant — grossièrement — à équilibrer la charge et à garder des formes à peu près compactes.
  • Un pipeline en deux temps. D'abord l'évaluation de la charge portée par chaque entité, ensuite l'optimisation de la découpe. Cette colonne vertébrale n'a plus jamais bougé depuis.
  • Une interface pour tout piloter, et une sortie volontairement simple : une couche avec un secteur fusionné par zone, prête à réutiliser.

État initial — tout, ou presque, restait à écrire

  • Très lent et assez imprévisible : l'objectif était recalculé de fond en comble à chaque micro-déplacement, sans la moindre borne de durée.
  • Taux d'erreur élevé : plantage sur les territoires morcelés (non connexes) ou sur les découpes un peu trop ambitieuses.
  • Compacité au petit bonheur : centres de secteurs tirés au hasard, indice de forme non borné.
  • Calculs non métriques : distances et voisinages faussés aux latitudes moyennes.
  • Et pour le reste : ni statistiques, ni export, ni gestion des îlots, des intrusions ou des frontières. Autant de chapitres que les versions suivantes se chargeront d'écrire.