Konfigurace MapServeru

MapServer nedisponuje žádným grafickým uživatelským rozhraním. Až na výjimky [1] se konfiguruje pomocí jednoduchého textového souboru, který je velice dobře zdokumentován na webových stránkách projektu.

Jednotlivé konfigurační sekce jsou započaty klíčovým slovem a ukončeny slovem END. Je lhostejno, používáte-li velká či malá písmena nebo nepoužíváte-li odsazení jednotlivých sekcí. Pro větší čitelnost se ale doporučuje používat VELKÁ PÍSMENA v jednotlivých sekcích a dodržovat odsazení.

Metadata mapového projektu

Celý příklad mapfile si můžete prohlédnout v souboru.

Mapfile začíná slovem MAP a je ukončen zmiňovaným END. V úvodní sekci jsou základní údaje o projektu:

MAP
NAME "VUGTK skoleni"
STATUS ON
SIZE 800 600
EXTENT  -743600.880000 -1036637.030000 -738206.890000 -1033085.320000
SHAPEPATH "./"
IMAGECOLOR 255 255 255
END # Map File

Je důležité nakonfigurovat výchozí souřadnicový systém projektu, v našem případě je to S-JTSK (EPSG:5514).

PROJECTION
  "init=epsg:5514"
END

Neméně důležitá jsou metadata pro služby OWS (OGC Web Service Common) a konfigurační cesty ke vznikajícím obrázkům:

WEB
  IMAGEPATH "/var/www/tmp/" 
  IMAGEURL "/tmp/"
  METADATA
    "ows_title"            "VUGTK Skoleni"
    "ows_abstract"         "VUGTK Skoleni Open Source GIS, GISmentors.eu"
    #"wfs_onlineresource"   "http://46.28.111.140/cgi-bin/mapserv?"  ## Recommended
    "wms_onlineresource"   "http://46.28.111.140/services/vugtkwms?"  ## Recommended
    "ows_srs"              "EPSG:4326 EPSG:5514 EPSG:32633 EPSG:3035 EPSG:3857"
    "ows_enable_request"   "*"
  END
END

Rastrová vrstva

Následuje konfigurace vrstev. Jako příklad uvedeme nejprve rastrovou vrstvu z připraveného lokálně uloženého rastrového souboru.

LAYER
  NAME "ortofoto_local"
  METADATA
    "wms_title" "Lokální ortofoto"
  END
  TYPE RASTER
  STATUS ON
  DATA "jpeg/ortofoto.jpg"
  PROJECTION
    "init=epsg:32633"
  END
END

Všimněte si, že rastrový soubor je v jiném souřadnicovém systému, než celý projekt (UTM 33N EPSG:32633 vs. S-JTSK EPSG:5514).

OWS Proxy

MapServer může sloužit také jako proxy pro další služby OGC OWS a kombinovat tak data z různých zdrojů do jednoho obrázku. Toho lze využít, chceme-li rasterizovat externí datový zdroj např. WFS nebo potřebujeme-li přidat podporu pro souřadnicové systémy, které zdrojový server nepodporuje.

V příkladu níže zobrazíme vrstevnice z WMS serveru ČÚZK

LAYER
  NAME "vrstevnice_wms"
  METADATA
    "wms_title" "Vrstevnice CUZK Zabaged"
    "wms_srs" "EPSG:5514"
    "wms_name" "GL_CA010"
    "wms_server_version"  "1.1.1"
    "wms_format"          "image/png"
    "wms_style" ""
  END
  CONNECTION "http://geoportal.cuzk.cz/WMS_ZABAGED_PUB/WMService.aspx?"
  CONNECTIONTYPE WMS
  TYPE RASTER
  STATUS ON
END

Vektorová vrstva

MapServer podporuje všechny myslitelné vektorové formáty (díky knihovně GDAL). V našem příkladu se připojíme na dříve vytvořenou databázi PostGIS a zobrazíme vrstvu stavebniobjekty, kterou v mapfile nazveme budovy. Všimněte si sekce METADATA, ve které nastavíme některé atributy budoucích webových služeb (WMS, WFS).

LAYER
  NAME "budovy"
  METADATA
    "ows_title"    "Budovy"
    "gml_featureid" "ogc_fid"
    "gml_include_items" "all"
  END
  TYPE POLYGON
  STATUS ON
  CONNECTIONTYPE POSTGIS
  CONNECTION "host=geo102.fsv.cvut.cz dbname=gismentors_vugtk user=gismentors password=vugtk14"
  #CONNECTION "user=jachym password=jach dbname=gismentors_vugtk port=5433 host=localhost"
  DATA "originalnihranice from stavebniobjekty"
  DUMP TRUE
  CLASS
    NAME "Budovy"
    STYLE
      COLOR 255 155 0
      OUTLINECOLOR 120 120 120
    END
  END
  STATUS ON
END # Layer

Nastavení webové služby

Program mapserver(.exe) rozpoznává parametr map v URL, který odkazuje na daný mapový soubor, např:

http://localhost/cgi-bin/mapserver.exe?map=c:\data\skoleni\vugtk.map

Lepší možnost je exportovat proměnnou prostředí MS_MAPFILE, čehož docílíme buď v nastavení webového server [2]

Alias /mywms /usr/lib/cgi-bin/mapserver
<Location /mywms>
   SetHandler cgi-script
   Options ExecCGI
   SetEnv MS_MAPFILE /path/to/mymapfile.map
</Location>

nebo můžeme zkopírovat mapserv.exe pod novým jménem a toto jméno použít:

SetEnvIf Request_URI "/cgi-bin/vugtkwms" MS_MAPFILE=/path/to/mymap.map

Testování konfigurace MapServeru

První možností je testovat konfiguraci pomocí programu shp2img, který vezme výchozí nastavení v námi vytvořeném konfiguračním mapovém souboru a vyrobí z něj obrázek.

Testování mapového souboru v příkazové řádce

$ shp2img --help [...] $ shp2img -m vugtk.map -o vugtk.png
../_images/shp2img.png

Obrázek 1: Výsledek programu shp2img

Testování WMS

Do webového prohlížeče můžeme nyní zadat adresu s dotazem GetCapabilities pro získání metadat služby WMS.

Poznámka

Předpokládáme, že máme nakonfigurovanou adresu služby http://localhost/cgi-bin/vugtkwms, viz výše Nastavení webové služby.

http://localhost/cgi-bin/vugtkwms?service=wms&request=getcapabilities

Odpověď ze serveru by měla být:

<?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?> <WMS_Capabilities version="1.3.0" xmlns="http://www.opengis.net/wms" ...

<Layer>
[...]
</Layer>

</Capability> </WMS_Capabilities>

Následovat může připojení služby WMS do programu QGIS, viz Zobrazení WMS a WFS vrstev v QGISu.

Poznámky

[1]MapServer lze využít ve vlastích programech díky API, potom je konfigurace vyřešena přímo v programu a ne v externím konfiguračním souboru.
[2]Nastavení proměnných prostředí pro MapServer http://mapserver.org/ogc/wms_server.html