Projet 02

Application WebMapping Interactif

Application de cartographie web interactive développée en architecture 3/3 (Client, Serveur, Base de données) permettant de visualiser et filtrer les établissements cinématographiques de France métropolitaine. Projet universitaire réalisé à l'Université Paul-Valéry et de Montpellier, M2 Géomatique 2024/2025.

JavaScript OpenLayers PHP PostGIS GeoServer Apache WMS/WFS
📊 Diapositives 📄 Rapport complet

01 — Architecture 3/3

Le projet repose sur une architecture trois tiers classique en webmapping : une base de données spatiale, un serveur cartographique et un client web. Chaque couche communique avec la suivante pour assurer un rendu dynamique et interactif.

Architecture 3 tiers du projet WebMapping Cinémas

Fig. 1 — Architecture 3/3 : Base de données → Serveur cartographique → Client web

🗄️

Base de données

PostgreSQL + PostGIS pour stocker les données spatiales des cinémas et les limites administratives (communes, départements, régions).

🗺️

Serveur cartographique

GeoServer génère les flux WMS et WFS à partir de PostGIS. Apache HTTP Server + PHP assurent la connexion dynamique entre la BDD et le client.

🌐

Client web

Page HTML/CSS/JS avec OpenLayers pour le rendu cartographique. Firefox comme navigateur client pour l'affichage final en localhost.

⚠️ Cette application fonctionne en localhost — GeoServer et Apache nécessitent un serveur allumé en permanence. L'hébergement en ligne nécessiterait un VPS dédié. Le code source complet est disponible sur Codeberg.

02 — Interface finale

L'interface est divisée en trois blocs : les formulaires de recherche à gauche, la carte interactive OpenLayers au centre, et le panneau d'informations sur le cinéma sélectionné à droite.

Fig. 2 — Carte interactive OpenLayers : fond de carte © OpenStreetMap, points des cinémas (couche locale GeoJSON). Cliquez sur un point pour voir les informations.

Page web finale du projet WebMapping Cinémas France

Fig. 3 — Interface finale en localhost : formulaires de recherche, carte OpenLayers avec les cinémas de France (points bleus), panneau d'informations

03 — Formulaires de recherche dynamiques

Les formulaires permettent de filtrer les cinémas selon plusieurs critères simultanément. Les données sont récupérées depuis PostgreSQL via des requêtes SQL dynamiques en PHP.

🗺️ Régions

Sélection d'une région et zoom automatique sur les cinémas de la région choisie.

📍 Départements

Filtre par département avec zoom sur les établissements correspondants.

🎬 Programmateurs

Sélection d'un programmateur (Pathé-Gaumont, CGR...) pour voir ses cinémas.

🎭 Art et Essai

Filtre pour n'afficher que les cinémas d'art et d'essai ou les cinémas commerciaux.

🏘️ Communes

Autocomplétion en temps réel lors de la saisie du nom de commune.

🔗 Filtres combinés

Combinaison de plusieurs filtres simultanément pour une recherche précise.

Extrait PHP — requête SQL dynamique avec filtres combinés sur la base de données :

// Construction dynamique de la requête selon les filtres actifs
$sql = "SELECT ST_AsGeoJSON(geom) as geojson, nom, region_admi, dep, commune
         FROM \"etablissements-cinematographiques\" WHERE 1=1";

if (!empty($region)) {
    $sql .= " AND region_admi = '" . pg_escape_string($pg_conn, $region) . "'";
}
if (!empty($commune)) {
    $sql .= " AND LOWER(commune) = LOWER('"
           . pg_escape_string($pg_conn, $commune) . "')";
}

// Retour en GeoJSON pour OpenLayers
echo json_encode(["type" => "FeatureCollection", "features" => $features]);

04 — Contrôles cartographiques OpenLayers

La carte intègre plusieurs contrôles et interactions avancés d'OpenLayers pour une expérience utilisateur optimale.

🔄 LayerSwitcher

Gestion des couches : OSM, Plan IGN, Satellite SPOT IGN 2023 + limites administratives.

📏 Échelle graphique

Barre d'échelle dynamique mise à jour au zoom pour une lecture cartographique précise.

🌍 Vue d'ensemble

OverviewMap pour un contexte géographique international.

📌 Coordonnées souris

Position de la souris affichée en temps réel en Lambert-93 (EPSG:2154).

🏠 Bouton Home

Retour au zoom France entière en un clic.

ℹ️ Infos au clic

Clic sur un cinéma pour afficher toutes ses informations : nom, adresse, écrans, fauteuils, séances, part de marché...

Extrait JavaScript — récupération des données PHP et affichage dans OpenLayers en WFS :

// Récupération des cinémas filtrés depuis PHP en GeoJSON
const vectorSource = new ol.source.Vector({
    format: new ol.format.GeoJSON(),
    url: function(extent) {
        return 'BD_cinemas.php?region=' + region
               + '&departement=' + departement
               + '&ae=' + ae;
    },
    strategy: ol.loadingstrategy.bbox
});

// Affichage des informations au clic sur un cinéma
map.on('click', function(evt) {
    const feature = map.forEachFeatureAtPixel(evt.pixel,
        function(feature) { return feature; });
    if (feature) {
        const props = feature.getProperties();
        document.getElementById('info').innerHTML =
            `<b>${props.nom}</b><br>
             Commune: ${props.commune}<br>
             Département: ${props.dep}`;
    }
});

05 — Données et sources

Le projet combine données thématiques et fonds de carte issus de sources officielles ouvertes.

Logo cinéma

Données thématiques — Établissements cinématographiques 2023 (CNC) — data.culture.gouv.fr

📊 Données cinémas (SHP 2023) — data.culture.gouv.fr

🗺️ Limites administratives — IGN ADMIN-EXPRESS

🛰️ Fonds de carte — OSM, Plan IGN, Satellite SPOT IGN 2023

📡 Flux WMS/WFS — IGN Géoservices, OpenStreetMap

06 — Améliorations techniques envisagées

🔵 Clustering

Regroupement des cinémas proches en bulles numérotées aux zooms éloignés.

📌 Géolocalisation

Détection automatique de la position du client pour afficher les cinémas proches.

📜 Légende dynamique

Légende cartographique mise à jour selon les couches actives.

⚡ Cache tuiles

Mise en cache côté client pour réduire les temps de chargement.

Voir le dépôt

Hébergé sur Codeberg • 100% Open Source

← Retour au portfolio