Hlavní navigace

Mapový server snadno a rychle (2)

Jáchym Čepický 10. 11. 2005

V minulém dílu jsme si nainstalovali mapový server, založili adresářovou strukturu a připravili data. Dnes si napíšeme konfigurační soubor Mapfile a nakonec si necháme vygenerovat první mapu. Tak hurá do toho, ať je to hotovo.

Mapfile

Mapfile je konfigurační soubor, ve kterém je definována jednak zobrazovaná oblast a jednak to, jak se mají jednotlivé vrstvy vykreslovat. Vyladěný mapfile – toť cíl každého mapserveristy.

Mapfile nemusí být „viděn“ z webu, proto jej zeditujme v adresáři s daty:

cd /var/mapservdata/
$EDITOR jezera.map 

Struktura mapfilu je poměrně jednoduchá: Mapfile se skládá z několika objetů navzájem do sebe vnořených a ukončený vždy slovem END. Každý parametr se zapisuje na samostatnou řádku, na velikosti písma nezáleží ( END a end jsou interpretovány stejně).

Máme tři základní objekty, které mají různé vlastnosti:

MAP
 |-LAYER
     |-CLASS
        |-STYLE
        |-LABEL
     |-CLASS
     |-...
 |-LAYER
 |-... 

MAP je něco jako projekt – je definován územím, kartografickou projekcí, referenční mapou a podobně. V tomto objektu se nastavují globální vlastnoti výsledných map. LAYER už jsou jednotlivé mapové vrstvy, které se dále mohou dělit na CLASS  – třídy s vlastním STYLE  – stylem zobrazení. Příkladem budiž LAYER Vodstvo s  CLASS es na příklad Potoky a řeky a Nádrže.

Začněmě pomalu: připravíme si mapfile o jedné vrstvě – hranice území, jednotlivé řádky mohou být komentovány:

# Můj první mapfile mapserveří aplikace
#

# počátek mapfilu
MAP
  NAME Jezera   # každý objekt by měl být pojmenován
  SIZE 400 300  # výchozí velikost mapy v pixelech
  EXTENT -97.238976 41.619778 -82.122902 49.385620 # hraniční souřadnice
  UNITS METERS  # mapové jednotky
  SHAPEPATH "/var/mapservdata/data/" # Cesta k datům
  IMAGECOLOR 255 255 255 # Barva pozadí
  IMAGETYPE PNG # typ výsledného obrázku

###########################################################
# začátek všech vrstev
###########################################################
  LAYER # začátek vrstvy
    NAME        staty # jak se jmenuje
    DATA        states_ugl # v jakém souboru (souborech) se nachází
    TYPE        POLYGON # typ dat
    STATUS      OFF
    CLASS # začátek třídy
        NAME 'Hranice států'
        STYLE # jak bude třída vypadat
            OUTLINECOLOR 128 128 128
            COLOR 225 225 185
        END # konec stylu
    END # konec tříd
  END # konec vrstvy
###########################################################
# konec všech vrstev
###########################################################
END # konec mapfilu 

Zkusíme se na jednotlivé položky podívat trochu blíže:

NAME
Každý objekt může být pojmenován. Většinou je to nezbytné, jindy ne tolik. Pomocí jména se na jednotlivé objekty můžeme pozdějí odkazovat.
EXTENT
To jsou hraniční souřadnice projektu. Jsou zadávány v pořadí západ jih východ sever. Vždy musíte vědět, na jakém území pracujete. Nejste-li si jisti, sáhněte po některém ze specializovaných programů – GISů (na příklad po mém oblíbeném QGISu) a nebo použijte na příklad utilitu  ogrinfo: ogrinfo -al -so states_ugl.shp.
SHAPEPATH
je cesta k adresáři s daty z pohledu systému. Adresář a data musí mít nastaven parametr pro čtení pro uživatele, pod kterým běží váš webový server. Data můžete mít i jinde, v tom případě ale musí být v parametru DATA uložena celá cesta.
IMAGECOLOR
Barva pozadí mapy. Všechny barvy jsou nastavovány pomocí RBG s rozsahem 0–255.
IMAGETYPE
Typ obrázku, který se má mapserveru vrátit. Možnosti jsou GIF, JPEG, PNG a WBPM
DATA
Soubor s daty, bez koncovky. Tento soubor (tedy konkrétně ctybdpy2.shp) je uložen v adresáři SHAPEPATH.
TYPE
Říká, o jaký typ dat se jedná. Rozenáváme POLYGON (plochy), LINE (linie), POINT (body) v případě vektorových dat a dále máme k dispozici typy RASTER a ANNOTATION.
STATUS
Nastavuje výchozí příznak zobrazování vrstvy. Možné parametry jsou ON, OFF a nebo DEFAULT. OFF znamená, že nebude-li vrstva explicitně vyvolána parametrem layer v URL (viz níže), nebude vykreslena.
CLASS
Uvozuje objekt třídy. Tříd může být jedna až mnoho v rámci každé vrstvy. Třídy jsou vytvářeny na základě nějakého atributu vrstvy – v případě vektorových dat na základě hodnot ze sloupečku z databáze, v případě rastrových dat na základě hodnot rastru. A nebo může třída pokrývat „všechny hodnoty“ jako v tomto případě.
STYLE
Aby se vůbec něco zobrazilo, musí být řečeno, jak se to má udát.
OUTLINECOLOR
Barva hraničních linií polygonu

Mapfile je doslova „ořezaný na kost“. Postupně budeme přidávat další parametry a atributy a vytvářet mapu k obrazu našemu. Zatím pracujeme pouze s jednou vrsvtou a v ní je pouze jedna třída.

První spuštění

Poté, co jsme si napsali a uložili náš mapfile, můžeme se pustit do vlastní HTML stránky. Tu uložíme do souboru  /var/www/mapserver/mapserv.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="cs">
<head>
<meta http-equiv="Content-language" content="cs">
<meta http-equiv="Content-type" CONTENT="text/html; charset=iso-8859-2">

<meta name="resource-type" content="document">
<title>Moje první Mapserveří aplikace</title>
</head>
<body>
<h1>Budiš mapa</h1>
<div>
    <img border="1" src="/cgi-bin/mapserv?map=/var/mapservdata/jezera.map&layer=staty&mode=map" alt="Mapa" >

</div>
Ahoj, světe!
</body>
</html> 

A nyní již můžeme nasměrovat náš webový prohlížeč na kýženou adresu http://localhos­t/mapserver/map­serv.html.

Když se obrázek nezdaří, zkuste nasměrovat svůj browser přímo na adresu mapserveru http://localhos­t/cgi-bin/mapserv?map=/var/m­apservdata/je­zera.map&layer=sta­ty&mode=map. Objeví-li se hláška msLoadMap(): Unable to access file. (/var/mapservda­ta/jezera.map) nebo nějaká podobná, víte, že máte problém s právy a nebo například s názvem adresáře.

Místo adresy s obrázkem je adresa programu mapserv s klasickým způsobem předání parametrů přes webové rozhraní. V tomto případě máme parametry

map
Udávající plnou cestu k našemu mapfilu
layer
Vrstvy, které se mají vykreslit
mode
Mód, v jakém má mapserver funovat. Mód map vrací obrázek mapy, query vrací výsledek dotazu na zadané souřadnice, o tomto módu ale až později, browse vrací vygenerovanou HTML stránku na základě šablony (viz dále).

Pokud šlo vše tak, jak má, zobrazí se vám první HTML stránka s on-line vytvořenou mapou. Dále se budeme zabývat jejím vylepšováním.

Pokud jste vydrželi sledovat výklad až sem, zobrazila se vám vaše první mapa, resp. stránka s mapou. Jak do ní přidávat další vrstvy, se dozvíme příště – opět budeme pronikat dále do hlubin mapfilu. Nakonec si povíme (velmi zjednodušeně) něco o mapových projekcích.

Našli jste v článku chybu?

8. 12. 2005 21:03

Mist (neregistrovaný)
Hola,
takovy maly problem, nezobrazi se mi zadny obrazek, resp. nejaky obrazek se generuje, kdyz napr. zmenim pozadi IMAGECOLOR na jinou nez bilou barvu, vidim obrazek o danych rozmerech vyplneny touto barvou ... Kde by mohla byt zdrada?

11. 11. 2005 11:50

Ahoj,
som rad, ze po serii clankov o GRASSe sa dostalo aj na Mapserver. Podla mna by vsak bolo v buducnosti lepsie pisat rozsiahlejsie diely. Ked sa preberaju data, tak vsetko v vstupnych datach. Ked vizualuzacia, tak vsetko. Prinieslo by to urcitu ucelenost v teme. Inak som rad, ze aspon niekto propaguje OS GIS aplikacie. Vela zdaru. Peter
DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed