Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uitbreiding Mapset (layerSet) in DB #110

Open
WvanDam opened this issue Feb 6, 2025 · 1 comment
Open

Uitbreiding Mapset (layerSet) in DB #110

WvanDam opened this issue Feb 6, 2025 · 1 comment
Assignees

Comments

@WvanDam
Copy link
Collaborator

WvanDam commented Feb 6, 2025

Dit betreft een wijziging welke backwards compatible is met het huidige front-end. Dus hoewel er in het front-end nog werk nodig is, kan er tegelijk ook alvast gewerkt worden aan de API / DB kant.

In de huidige situatie worden 3 configs mbt map layers gecombineerd:

  • mapset data vanuit de API voor o.a. legenda informatie
  • layer specification vanuit .json bestanden in de front-end codebase (gekopieerd uit Mapbox)
  • filter specificaties vanuit .json bestanden in de front-end codebase

De filter specificaties zijn opgezet op basis van de legenda informatie vanuit de API, en moeten invloed hebben op de layer specifications. Bij het opstellen van de filters viel op dat er enkele discrepanties zijn tussen de layer legenda's en de daadwerkelijke weergave van de layers op basis van de layer specifications. Dit glad trekken is nog een WIP, maar niet de focus van dit ticket. Het onderstreept het belang van 1 bron voor informatie over layers: de DB.

Dit kan door de layerSet informatie uit te breiden met filters en specification.

De specification is 1 op 1 de volledige layer specification, zoals deze nu door het front-end is overgenomen vanuit Mapbox, zoals:

{
    "id": "unclassified-risk",
    "type": "fill-extrusion",
    "source": "analysis_risk",
    "source-layer": "analysis_risk",
    "minzoom": 13,
    "filter": [
        "all",
        [
            "match",
            ["get", "unclassified_risk"],
            ["a", "b", "d", "e"],
            true,
            false
        ],
        ["!=", ["get", "address_count"], 0]
    ],
    "layout": {"visibility": "none"},
    "paint": {
        "fill-extrusion-height": [
            "interpolate",
            ["linear"],
            ["zoom"],
            0,
            ["get", "height"],
            22,
            ["get", "height"]
        ],
        "fill-extrusion-color": [
            "match",
            ["get", "unclassified_risk"],
            ["a"],
            "#41ff33",
            ["b"],
            "#cfff33",
            ["c"],
            "#ffeb33",
            ["d"],
            "#ffad33",
            ["e"],
            "#ff5533",
            "#000000"
        ]
    }
  }

Bij filters gaat het om een reeks filter specificaties, namelijk 1 per legenda item voor de layer. In het geval van de bovenstaande layer specificatie:

{
    "42FF33": [
      "match",
      ["get", "unclassified_risk"],
      ["a"],
      false,
      true
    ],
    "D1FF33": [
      "match",
      ["get", "unclassified_risk"],
      ["b"],
      false,
      true
    ],
    "FFEC33": [
      "match",
      ["get", "unclassified_risk"],
      ["c"],
      false,
      true
    ],
    "FFAC33": [
      "match",
      ["get", "unclassified_risk"],
      ["d"],
      false,
      true
    ],
    "FF5533": [
      "match",
      ["get", "unclassified_risk"],
      ["e"],
      false,
      true
    ]
  }

Hierbij komende de keys overeen met de ids van de fields in dezelfde layerSet.

Beide velden kunnen als string opgeslagen worden in de DB. Dit is sowieso een goed idee voor de layer specifications.

@WvanDam WvanDam moved this to Backlog in FunderMaps Feb 6, 2025
@WvanDam
Copy link
Collaborator Author

WvanDam commented Feb 14, 2025

Tijdens het testen van de filter functionaliteit in de front-end bleek dat de oplossing niet bruikbaar was icm geofencing. Het alternatief was ook niet goed werkend te krijgen. De front-end werkzaamheden mbt filtering zijn daarom stopgezet, en een toekomstige oplossing vereist wellicht een andere structuur, waarmee de filter gerelateerde functionaliteit in dit ticket komt te vervallen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Backlog
Development

No branches or pull requests

2 participants