Introduction à GeoServer et MapServer

GeoServer et MapServer sont des serveurs open-source permettant de publier des données géospatiales sur le web. Ils sont largement utilisés pour partager des cartes interactives, des services web géographiques (WMS, WFS, WMTS), et des données spatiales dans des formats standards définis par l’Open Geospatial Consortium (OGC). Ces outils sont essentiels pour créer des applications SIG (Systèmes d’Information Géographique) accessibles via des navigateurs ou des clients comme QGIS.

Présentation de GeoServer et MapServer

  • GeoServer : Un serveur Java open-source qui permet de publier des données géospatiales à partir de sources comme PostGIS, shapefiles ou rasters. Il offre une interface web intuitive pour configurer les couches, les styles (via SLD) et les services OGC (WMS, WFS, WCS, WMTS). GeoServer est idéal pour les projets nécessitant une gestion simplifiée et des fonctionnalités avancées comme le rendu dynamique.
  • MapServer : Un serveur cartographique open-source écrit en C, conçu pour des performances élevées et une flexibilité maximale. Il utilise des fichiers de configuration texte (Mapfiles) pour définir les couches et les styles. MapServer est parfait pour les environnements nécessitant une personnalisation fine ou une intégration légère.

GeoServer

Configuration et gestion des serveurs

GeoServer peut être installé sur un serveur local ou déployé via un conteneur Docker. Téléchargez la version stable depuis le site officiel ou utilisez une image Docker.

Démarrer GeoServer :

  1. Téléchargez et décompressez GeoServer ou utilisez Docker :
    docker run -p 8080:8080 geoserver/geoserver
    
  2. Accédez à l’interface web : http://localhost:8080/geoserver.
  3. Connectez-vous avec les identifiants par défaut (admin/geoserver) et changez le mot de passe.

Ajouter un magasin de données :

  1. Dans l’interface web, allez à Magasins de données > Ajouter un nouveau magasin.
  2. Sélectionnez une source (par exemple, PostGIS ou shapefile).
  3. Configurez les paramètres (par exemple, hôte, base de données, chemin du fichier).

Conseil : Vérifiez que les dépendances Java (JDK) sont installées pour une installation manuelle.

Publication de données spatiales

Créer une couche :

  1. Dans Couches > Ajouter une nouvelle ressource, sélectionnez un magasin de données configuré (par exemple, une table PostGIS avec une géométrie POINT).
  2. Publiez la couche en définissant un nom et un style (par exemple, un style SLD pour des points rouges).

Exemple de style SLD pour des points :

<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld">
  <NamedLayer>
    <Name>PointsInteret</Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#FF0000</CssParameter>
                </Fill>
              </Mark>
              <Size>10</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Accéder à la couche : Testez le service WMS via une URL comme :

http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=votre_couche&bbox=-180,-90,180,90&width=800&height=600&srs=EPSG:4326&format=image/png

Requêtes et services géospatiaux

GeoServer prend en charge les services OGC comme WMS (visualisation), WFS (données vectorielles) et WMTS (tuiles).

Exemple de requête WMS : Obtenir une carte d’une couche :

http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=points_interet&bbox=2.2,48.8,2.4,48.9&width=800&height=600&srs=EPSG:4326&format=image/png

Exemple de requête WFS : Récupérer des données vectorielles en GeoJSON :

http://localhost:8080/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=points_interet&outputFormat=application/json

Requête spatiale (filtre CQL) : Filtrer les points dans un rectangle :

http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=points_interet&bbox=2.2,48.8,2.4,48.9&width=800&height=600&srs=EPSG:4326&format=image/png&CQL_FILTER=BBOX(geom,2.2,48.8,2.4,48.9)

Optimisation des performances

  • Cache des tuiles : Activez le module GeoWebCache (intégré à GeoServer) pour générer des tuiles WMTS :
    http://localhost:8080/geoserver/gwc/service/wmts?REQUEST=GetTile&VERSION=1.0.0&LAYER=points_interet&TILEMATRIX=EPSG:4326:0&TILEMATRIXSET=EPSG:4326&TILECOL=0&TILEROW=0&FORMAT=image/png
    
  • Indexez les données : Si vous utilisez PostGIS, créez des index spatiaux sur les colonnes géométriques.
  • Optimisez les styles : Simplifiez les règles SLD pour réduire le temps de rendu.

MapServer

Configuration et gestion des serveurs

MapServer est généralement installé sur un serveur Linux ou Windows. Il peut être déployé via des packages ou compilé depuis les sources.

Installer MapServer (sur Ubuntu) :

sudo apt-get update
sudo apt-get install mapserver

Créer un Mapfile : Un Mapfile est un fichier texte définissant les couches et les services. Exemple minimal (mapfile.map) :

MAP
  NAME "CarteSimple"
  EXTENT -180 -90 180 90
  SIZE 800 600
  IMAGETYPE PNG

  LAYER
    NAME "Pays"
    TYPE POLYGON
    DATA "pays.shp"
    STATUS ON
    CLASS
      STYLE
        COLOR 200 200 200
        OUTLINECOLOR 0 0 0
      END
    END
  END
END

Tester le Mapfile : Utilisez l’outil mapserv pour vérifier :

mapserv -nh "QUERY_STRING=map=/chemin/vers/mapfile.map&mode=map"

Conseil : Hébergez MapServer via un serveur web (Apache, Nginx) pour exposer les services OGC.

Publication de données spatiales

Ajouter une couche dans un Mapfile : Pour publier un shapefile de points d’intérêt :

LAYER
  NAME "PointsInteret"
  TYPE POINT
  DATA "/chemin/vers/points.shp"
  STATUS ON
  CLASS
    STYLE
      SYMBOL "circle"
      SIZE 10
      COLOR 255 0 0
    END
  END
END

Publier via WMS : Configurez MapServer pour répondre aux requêtes WMS en ajoutant dans le Mapfile :

WEB
  METADATA
    "wms_title" "Carte de Points d'Intérêt"
    "wms_onlineresource" "http://localhost/cgi-bin/mapserv?map=/chemin/vers/mapfile.map"
    "wms_srs" "EPSG:4326"
  END
END

Conseil : Validez le Mapfile avec l’outil shp2img pour générer une image de test.

Requêtes et services géospatiaux

MapServer supporte également WMS, WFS et WMTS, configurés via le Mapfile.

Exemple de requête WMS :

http://localhost/cgi-bin/mapserv?map=/chemin/vers/mapfile.map&service=WMS&version=1.1.0&request=GetMap&layers=PointsInteret&bbox=2.2,48.8,2.4,48.9&width=800&height=600&srs=EPSG:4326&format=image/png

Exemple de requête WFS :

http://localhost/cgi-bin/mapserv?map=/chemin/vers/mapfile.map&service=WFS&version=1.0.0&request=GetFeature&typeName=PointsInteret&outputFormat=GeoJSON

Requête spatiale (filtre) : Utiliser un filtre spatial dans une requête WFS :

http://localhost/cgi-bin/mapserv?map=/chemin/vers/mapfile.map&service=WFS&version=1.0.0&request=GetFeature&typeName=PointsInteret&filter=<Filter><BBOX><PropertyName>geom</PropertyName><Box srsName='EPSG:4326'><coordinates>2.2,48.8 2.4,48.9</ coordinates></Box></BBOX></Filter>&outputFormat=GeoJSON

Conseil : Testez les services avec un client comme QGIS pour valider les rendus et les données.

Optimisation des performances

  • Utilisez des index spatiaux : Pour les shapefiles, générez un index avec shp2tile ou utilisez des bases comme PostGIS avec des index GIST.
  • Activez le cache : Configurez MapServer avec un système de tuiles (par exemple, TileCache) pour les services WMTS.
  • Optimisez les Mapfiles : Réduisez les couches inutiles et limitez les projections complexes.

Conseil : Surveillez les logs (GeoServer : geoserver/data/logs; MapServer : logs du serveur web) pour identifier les goulots d’étranglement.

Bonnes pratiques

  • Utilisez des standards OGC : Assurez la compatibilité avec les clients SIG en respectant les normes WMS, WFS, et WMTS.
  • Validez les données : Vérifiez la géométrie et le système de référence (par exemple, EPSG:4326) avant publication.
  • Testez les services : Utilisez des outils comme QGIS, OpenLayers ou Postman pour valider les réponses des services.
  • Sécurisez l’accès : Configurez des utilisateurs et des rôles dans GeoServer ou des restrictions d’accès dans le serveur web pour MapServer.
  • Documentez les configurations : Gardez une trace des Mapfiles ou des styles SLD pour faciliter la maintenance.

Exemple de validation des données dans PostGIS avant publication :

SELECT nom, ST_IsValid(geom) AS est_valide
FROM points_interet;