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

feat(catalog): Branchement du service de recherche pour constituer le catalogue #356

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

lowzonenose
Copy link
Collaborator

@lowzonenose lowzonenose commented Feb 17, 2025

Evolutions du catalogue

Branchement du service de recherche

Actuellement, pour constituer le catalogue de données, on branche des JSONs :

  • conf(s) technique(s)
  • éditorial

Or, on souhaite compléter le catalogue avec des informations disponibles dans le service de recherche.

  • thèmes
  • producteurs
  • d'autres paramètres technique (extra)

Fonctionnement actuel avec des URLs sur les JSONs techniques et éditorial :

var catalog = new ol.control.Catalog({
     configuration : {
       type : "json",
       urls : [
            "https://raw.githubusercontent.com/IGNF/cartes.gouv.fr-entree-carto/main/public/data/layers.json",
            "https://raw.githubusercontent.com/IGNF/cartes.gouv.fr-entree-carto/main/public/data/edito.json"
        ]
     }
});

Exemple pour appeler plusieurs config dont le service de recherche :
image
L'ordre des configurations est important, la 1er config passe en référence, pour déterminer la liste des couches que l'on souhaite afficher dans le catalogue.

var catalog = new ol.control.Catalog({
     configurations : [
       {
          type : "data",
          data : {<!-- JSON -->}
       },
       {
         type : "json",
         urls : [
            "https://raw.githubusercontent.com/IGNF/cartes.gouv.fr-entree-carto/main/public/data/layers.json",
            "https://raw.githubusercontent.com/IGNF/cartes.gouv.fr-entree-carto/main/public/data/edito.json"
         ]
      },
      {
        type : "service",
        filter : 
        // filtre sur le champ theme avec pour chaque valeur du texte, une valeur de la liste :
        {
              field : "theme",
              value : ["Administratif","Foncier","Agriculture","Forêt"]
        }
        // ex. filtre sur le champ 'producer' avec la valeur de texte 'IGN' :
        //     field : "producer",  value : ["IGN"]
        // ex. champ libre de type 'texte' :
        //     field : "text", value : "orthophoto"
      }
   ]
});

⚠️ Actuellement, le service de recherche ne permet pas de récupérer la configuration technique d'une couche.
Il est donc indispensable de l'utiliser en association avec une autre configuration :

var catalog = new ol.control.Catalog({
     configurations : [
       {
          type : "data",
          data : {<!-- une liste de couches orthograpĥique -->}
       },
       {
        type : "service",
        filter :  {
           field : "text", 
           value : "orthophoto"
       }
 ]
});

Validation du schema des réponses

facultatif

Le catalogue est issu de plusieurs types de données ou service.
Il est donc important de valider les réponses avant de merger les résultats.

Ajouter des filtres sur les couches

On souhaite filtrer au préalable les données du catalogue.
Ex. on veut un catalogue de couches WMTS uniquement

Donc, on met en place une liste de filtres préalablement crèès :

  • projections
  • services
  • vecteurs tuilés

On ajoute la possibilité de mettre un filtre custom pour un besoin très spécifique.

⚠️ : les filtres sont appliqués après avoir récupérer les données techniques (cf. option configurations)

Exemple d'impl. générique :

layerFilters : [
                            {
                                field : "service",
                                logical : "=", // par defaut
                                value : ["WMS"]
                            },
                            {
                                field : "defaultProjection",
                                logical : "!", // exclusion
                                value : ["EPSG:2154", "IGNF:LAMB93"]
                            }
]

@lowzonenose lowzonenose self-assigned this Feb 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant