Aller au contenu

Gestion des plans (GeoJSON)

Cette section couvre le stockage, l'affichage et l'édition des plans 2D basés sur GeoJSON.


Stockage

  • Chaque logement enregistre son plan dans saves/housing_<id>.json.
  • createGeoJson() produit une FeatureCollection vide avec métadonnées.
  • importGeoJson(path) lit ou initialise le fichier, exportGeoJson(path, geojson) persiste les modifications.
  • GeojsonFeatureCollection / Room (utils/geojson/geojson_model.dart) encapsulent validation et manipulation.

Génération et édition

  • Primitives : createRoomFeature, createHeaterFeature, createWindowFeature, createDoorFeature, createRestrictedZone.
  • insertRoom() ajoute une pièce rectangulaire en incrémentant room_id_A.
  • getWalls() extrait les segments pour les calculs (murs et polygones de pièces).

Conversion et affichage

  • geojson_to_matrix.dart convertit en matrice, remplit les trous (fillGaps), dessine murs et heatmap.
  • widgets/room_painter.dart affiche le plan filtré par étage via CustomPaint.
  • widgets/heat_map_painter.dart rend les matrices de chaleur et la position des radiateurs.

Flux d'édition (EditHousePlan)

  1. Charger le GeoJSON du logement courant, filtrer par étage (GeoJsonFilter.filterByFloor), afficher via RoomPainter.
  2. Calculer des boutons overlay (OverlayButtonsCalculator) selon le mode (ajout, suppression, extension).
  3. Router les clics vers RoomOperations : extendRoom, createAdjacentRoom, deleteRoom.
  4. Sauvegarder : translation vers des coordonnées positives puis exportGeoJson.

Orientation et étages

  • Compass définit l'orientation nord du plan.
  • currentFloorNotifier pilote l'étage affiché; addFloorToGeoJson ajoute un étage et enregistre le GeoJSON.