mapserver e geoserver

MapServer vs GeoServer: due map server a confronto

Se pensate che alla fine di questo articolo troverete una risposta alla domanda “cos’è meglio tra MapServer e GeoServer ? ”, allora vi consiglio di non perdere tempo per leggerlo! Si, perché un confronto per stabilire se in generale MapServer è meglio di GeoServer o viceversa, non ha molto senso.

Sono entrambi due “map server” open-source, quindi due distributori e gestori di mappe (o meglio geodati) attraverso il web; essi prendono dati geospaziali memorizzati in qualche formato (shapefile, geoTif, postGIS, … etc) e li trasmettono attraverso la rete, per essere poi visualizzabili ed analizzabili tramite appositi client. Alcuni di questi fanno in modo che le mappe possano essere visualizzate dentro pagine HTML.

Ma MapServer e GeoServer, oltre ad avere età differenti (MapServer è nato nel 1996 e GeoServer nel 2003), sono stati sviluppati in modo diverso e con concezione di funzionamento diverse. Ognuno presenta vantaggi o svantaggi a secondo delle soluzioni che si vogliono implementare ed anche in base al proprio personale punto di vista. Vediamo allora a grandi linee, quali sono le principali caratteristiche di questi due prodotti, come possono essere usati e che tipo di soluzioni di web mapping consentono, in modo da avere degli elementi di confronto per poter decidere cosa si ritiene più adatto per i propri scopi.

Innanzitutto, inutile dire che, per avere una visione più chiara, sarebbe meglio provarli entrambi. Un modo per poterlo fare facilmente, senza cimentarsi nell’installazione dei due server, è l’ambiente di testing  che ci fornisce OsgeoLive (live.osgeo.org). Si tratta di un sistema Lubuntu in cui troviamo già pre-installati sia MapServer che GeoServer e tanti altri SW utili per gestire dati geospaziali (GIS e geoDB) tutti gratuiti, che può essere eseguito come VM (Virtual Machine), Live-DVD o pendrive avviabile.

La prima principale differenza è la scelta di linguaggio di programmazione con cui questi due server sono stati realizzati:

  • MapServer, anche indicato come UNM MapServer (perché è stato creato nell’Università del Minnesota) è un binario sviluppato in “C\C++” e per alcune funzioni in PHP e si interfaccia ad un web server come CGI (Common Gate Interface);
  • GeoServer è sviluppato in Java; esso può funzionare come applicazione stand-alone appoggiata su JVM (Java Virtual Machine) oppure su un web server che abbia un servlet Java, come per esempio Apache-Tomcat

Ne consegue che MapServer consente prestazioni superiori nell’uso delle risorse HW (processore e memoria), rispetto ad un programma che necessita di essere eseguito su una macchina virtuale (JVM). D’altro canto proprio perché gira su una macchina virtuale, GeoServer risulta molto più portatile, potendo essere installato su diversi S.O. (Windows, Linux, MacOS) senza differenze sostanziali, mentre MapServer ha versioni (codice binario) diverse  a secondo dell’ambiente di funzionamento.

In termini di installazione, GeoServer è molto semplice sia come applicativo stand-alone che come servlet Java  del web server. Per Windows e MacOS c’è un comodo “installer” che ci guida passo passo fine alla fine. Per sistemi Linux (Debian), viene distribuito in un pacchetto .war (web archive) che una volta decompresso e  caricato sul web server, permette poi di eseguire una comoda webapp che esegue l’installazione e la configurazione tramite interfaccia grafica.

MapServer invece presenta una installazione più complessa: a rigore bisogna scaricare i diversi componenti del software e compilarli; quindi procedere alla sua configurazione sul web server Apache. Tuttavia  esistono degli applicativi già pronti come OSgeo4W, MS4W (per Windows) o FWTools (per Windows e Linux) che ne facilitano l’installazione. E comunque, proprio per come è strutturato MapServer, la sua configurazione rimane sempre più articolata.

Anche in termini di facilità d’uso, GeoServer è più semplice di MapServer; esso infatti, una volta avviato, può essere controllato tramite una comoda interfaccia web. Questa interfaccia di amministrazione permette facilmente di caricare layers, applicare stili (in formato SLD)  ed usare una layer-preview che ci mostra quale sarà il risultato finale. Gestire i diversi gruppi di layer per realizzare la mappa di base che poi si vuole distribuire (con WMS) è molto semplice.

geoserver admin

GeoServer admin interface

Invece per far funzionare MapServer, bisogna conoscere la sintassi del cosiddetto “mapfile” ed editarlo a mano. Infatti, senza voler scendere in dettagli (non è lo scopo di questo articolo), MapServer si articola in tre componenti fondamentali: il programma CGI che è il vero e proprio eseguibile, il mapfile che  serve per configurare le modalità di reperimento e presentazione dei geodati, il template file che è la pagina web in HTML che fa da interfaccia tra l’utente e l’applicazione. In pratica:

  1. l’utente visualizza il template file nel suo browser e da esso invia una richiesta al CGI;
  2. il CGI elabora la richiesta sia in base ai parametri passati dal template file e delle configurazioni del mapfile
  3. il CGI carica i geodati dai suoi repository e quindi genera una mappa che restituisce all’utente tramite il template file.

Ma la principale differenza sostanziale tra le due soluzioni è la seguente:

  • GeoServer nasce con lo scopo principale di essere un distributore di servizi OGC, permette quindi di pubblicare rapidamente layer WMS, WCS, WFS e WFS-T per client ad hoc (come quelli inclusi in diversi GIS); in altre parole non prevede un sistema integrato per pubblicare mappe in una pagina web.
  • MapServer è strutturato per lo sviluppo di applicazioni web (webGIS), incentrate sulla visualizzazione e l’elaborazione dei dati geografici, tipicamente per creare mappe interattive (slippy maps).

Allora se si vogliono visualizzare su un web browser le mappe distribuite da GeoServer, bisogna destreggiarsi lato client con l’ HTML e usare qualche libreria di scripting, come per esempio OpenLayers, che ci consenta di disegnare una “web map interface” con tutti i tipici strumenti (cornice, legenda, zoom, pan, … etc) per rappresentare e gestire le mappe ricevute tramite uno dei protocolli OCG e nel caso di trasmissione con WFS-T anche di poterle editare.

MapServer è invece preferibile se si vogliono realizzare applicazioni web-based per visualizzare e gestire mappe, consentendo anche funzionalità complesse. Per esso sono disponibili varie soluzioni di client, infatti oltre a funzionare come CGI, ha  una interfaccia di programmazione (Mapscript) molto versatile che consente di generare delle pagine HTML dinamiche, usando diversi linguaggi  (PHP, Java, Python, …etc), che accedono ai suoi servIzi tramite chiamate alle API.
Ma il client di MapServer più conosciuto è p.mapper, in pratica si tratta di un framework che deve essere installato sul server (è un client lato server) e richiede l’estensione PHP/Mapscript. Ha un’interfaccia molto amichevole e fornisce già pronte tutte una serie di funzioni basilari di un GIS: navigazione, query (identify, select, search), misure di distanze ed aree, stampa HTML e PDF, customizzazione della legenda, aggiunta di markers sulla mappa, … etc. Tutto questo  senza scrivere una riga di codice.  L’aspetto svantaggioso è che bisogna poter operare sul server e si deve configurare manualmente.

p.mapper

p.mapper



Nulla vieta però che anche per  MapServer (grazie a Mapscript) si possono realizzare dei client programmando in HTML e usando librerie di scripting per geodati (Openlayers, Leaflet.js, .. etc) col vantaggio di non accedere al server; ma è chiaro che in questo caso le varie funzioni che p.mapper fornisce già pronte, dovranno essere implementare scrivendosi il codice. C’è comunque chi preferisce questa seconda soluzione, cioè scriversi il proprio client da zero, perché, anche se inizialmente è più laborioso, presenta il vantaggio di avere un controllo più completo e personalizzabile sul risultato finale.

Per quanto riguarda i tipici servizi OGC: WMS, WCS  e WFS, questi sono supportati anche da MapServer, e anzi  nel caso di WMS ha delle prestazioni anche migliori di GeoServer. Se per esempio si devono filtrare delle mappe distribuite con WMS, GeoServer deve generare una istanza per ogni filtro con un dispendio di risorse (memoria e CPU); invece con MapServer basta semplicemente fare un “mapfile” diverso per ogni filtro.

Invece MapServer non supporta il servizio WFS-T (WFS-Transazionale) che consente l’editing di geodati vettoriali  attraverso il servizio web. Se si vuole implementare anche questo servizio, sullo stesso host in cui gira MapServer, si può installare server WFS-T come per esempio TinyOWS , un open source con interfaccia CGI ed collegabile solo a  database PostGIS. Detto ciò, bisogna dire che se si vuole realizzare solamente un erogatore di servizi WMS, WCS  e WFS-T, è inutile complicarsi la vita con MapServer, ma è sicuramente da preferire GeoServer per la sua estrema semplicità di gestione di tali servizi tramite interfaccia web.

Viceversa se non si ha bisogno di tali servizi OGC, ma solo un “motore” per il rendering dei geodati su pagine web, allora è preferibile MapServer. A dover di cronaca, voglio ricordare che  esiste un pacchetto open-source, basato su GeoServer, chiamato OpenGeoSuite che contiene tutto il necessario per realizzare mappe da pubblicare sul web e consente di avere una soluzione già funzionante, risparmiandosi un sacco di lavoro. confronto mapserver geoserver Volendo  riassumere,  gli aspetti principali sui cui  confrontare i  due “map server” sono i seguenti:

  • MapServer lavora come CGI, quindi più performante in termini di utilizzo di risorse, rispetto a GeoServer che e un’applicazione Java (anche se ci sono utenti non vogliono lavorare con CGI !)
  • GeoServer è essenzialmente un erogatore di servizi WMS, WCS e WFS, MapServer invece è un ambiente di sviluppo per applicazioni web dedicate alla pubblicazione di geodati;
  • GeoServer ha una interfaccia di amministrazione grafica molto comoda, MapServer no e richiede la scrittura (programmazione) del mapfile;
  • MapServer generalmente ha una gestione dei layer WMS migliore rispetto a quella di GeoServer;
  • GeoServer supporta il servizio WFS un po’ meglio e supporta il WFS-Transazionale, MapServer no (bisogna associargli prodotti esterni come TinyOWS);
  • In GeoServer i geodati sono automaticamente configurati sia come WMS che come WFS;
  • MapServer è un motore cartografico potente che fornisce geodati come vettori dinamici di alta qualità;
  • MapServer a una interfaccia di programmazione (Mapscript) che amplia la possibilità di creare client usando differenti linguaggi;
  • GeoServer ha un sistema di sicurezza integrato per la gestione degli utenti;
  • MapServer è comodo per chi usa QGIS, in quanto tramite plugin è facile creare un mapfile per pubblicare le proprie mappe.

In conclusione quindi, nessuno dei due è migliore o peggiore, sono entrambi prodotti molto potenti che sono stati sviluppati in momenti diversi e con finalità diverse. Sta a voi valutare ed identificare quello che più si avvicina alle vostre esigenze !

condividi: