MAPSERVER VS. MAPSERVER MapServer vs. Mapserver Jáchym Čepický Department of geoinformatics Faculty of Forestry and Wood Technology, Mendel University of Agriculture and Forestry in Brno E-mail: jachym.cepicky@centrum.cz David Procházka Department of Informatics Faculty of Business and Economics, Mendel University of Agriculture and Forestry in Brno E-mail: xproch17@pef.mendelu.cz Jitka Machalová Department of Informatics Faculty of Business and Economics, Mendel University of Agriculture and Forestry in Brno E-mail: machalov@mendelu.cz Kĺıčová slova: WMS, MapServer, ArcIMS Abstrakt M̊užeme ř́ıci, že mapy prož́ıvaj́ı d́ıky moderńım technologíım svou renesanci. Dı́ky aplikaćım, jako je Google Maps1 či Seznam-Mapy2 mohou uživatelé śıtě náhle pracovat s geoinformacemi zp̊usobem, na jaký doposud nebyli zvykĺı - a tento nový zp̊usob je bav́ı. Pro vytvořeńı obrázku mapy, který je bud’ zobrazen v GISu nebo v okně prohĺı̌zeče je potřeba mı́t stroj odpov́ıdaj́ıćıho výkonu a programové vybaveńı schopné takový obrázek vytvořit. Tento článek se snaž́ı pomoci nalézt odpověd’ na otázku “Jaký mapový server je pro má data nejvhodněǰśı?“. Mapové servery Mapové servery jsou programy generuj́ıćı požadovanou mapu jako obrázek na základě požadavk̊u klientských programů. Výsledný obrázek předávaj́ı webovému serveru, a ten pak zpět kli- entskému programu. Primárńı funkćı mapového serveru je nač́ıst data z r̊uzných zdroj̊u a jejich spojeńı dohromady do výsledného obrázku [1]. Na ,,data“ poskytovaná mapovými servery lze přistupovat bud’ ze specializovaných programů - Geografických informačńıch systémů - a nebo na př́ıklad z klientských aplikaćı napsaných pro webové prohĺıžeče. Lze předpokládat, že uživatele obou typ̊u těchto programů zaj́ımá kromě vzhledu výsledného obrázku předevš́ım rychlost s jakou se tento obrázek objev́ı u nich na obrazovce. 1 http://maps.google.com 2 http://mapy.seznam.cz Geinformatics FCE CTU 2006 101 http://maps.google.com http://mapy.seznam.cz MAPSERVER VS. MAPSERVER Správce takových server̊u zase zaj́ımá zátěž, které je vystaven stroj, na němž jsou uložena data a na němž prob́ıhá vykreslováńı výsledných obrázk̊u, at’ už z hlediska zat́ıžeńı disk̊u, tak z hlediska zátěže procesoru. Komunikace mezi klienty a mapovými servery může prob́ıhat bud’ pomoćı proprietárńıho roz- hrańı a nebo přes rozhrańı standardńı. Standardem v př́ıpadě mapových server̊u je tzv. služba WMS3 (Web Mapping Service), definovaná konsorciem OGC4 (Open Geospatial Consorcium). Web Mapping Service OGC je mezinárodńı standardizačńı sdružeńı, zabývaj́ıćı se předevš́ım standardy v oblasti geografických informačńıch systémů, jejich výměnných formát̊u a podobně. Mezi standardy definované touto organizaćı patř́ı mimo jiné WMS (Web Mapping Service), WFS (Web Feature Service), WCS (Web Coverage Service), GML (Geography Markup Language) a daľśı. Web Mapping Service5 je definovaná v dokumentu OGC 06-042 [2], který popisuje komunikaci mezi mapovým serverem a klientskou aplikaćı. Mezi dotazy, které muśı takový server být schopen spracovat patř́ı mimo jiné � GetCapabilities, vrát́ı popis dostupných dat na mapovém serveru, jejich formát̊u, geografické projekce a daľśı informace � GetMap, který vrát́ı výsledný obrázek - mapu podle zadaných vstupńıch parametr̊u. Protože právě WMS je rozhrańı, na jehož základě komunikuje většina programů stahuj́ıćıch z mapových server̊u data (ArcGIS6, QGIS7, Udig8, GRASS9, UMN MapServer10, ...), zaměřili jsme se v tomto testu právě na toto rozhrańı. Test K vlastńımu testu byl použit server HP Proliant ML 350T03 (http://indica.mendelu.cz11), s nainstalovaným operačńım systémem MS Windows 2003 SP1. Vybavený je dvěma 73GB SCSI disky v konfiguraci RAID-1, 2GB pamět́ı, procesorem Intel Xeon 3 3.06GHz (32b). Důvod pro zvoleńı tohoto operačńıho systému byl, že server se použ́ıván i pro běh licenčńıho manažeru pro produkty ESRI, který je pouze pro MS Windows. Jako webový server byl, na základě doporučeńı firmy ESRI, zvolen Apache 2.0 s nadstavbou Tomcat 5.0 a JRE 1.4.2. 3 http://en.wikipedia.org/wiki/Web Map Service 4 http://opengeospatial.org 5 http://en.wikipedia.org/wiki/Web Map Service 6 http://www.esri.com/software/arcgis/ 7 http://qgis.org 8 http://udig.refractions.net/confluence/display/UDIG/Home 9 http://grass.itc.it 10 http://mapserver.gis.umn.edu 11 http://indica.mendelu.cz Geinformatics FCE CTU 2006 102 http://en.wikipedia.org/wiki/Web%5C_Map%5C_Service http://opengeospatial.org http://en.wikipedia.org/wiki/Web%5C_Map%5C_Service http://www.esri.com/software/arcgis/ http://qgis.org http://udig.refractions.net/confluence/display/UDIG/Home http://grass.itc.it http://mapserver.gis.umn.edu http://indica.mendelu.cz MAPSERVER VS. MAPSERVER Použitá data K testu byla použita data u oblasti školńıho lesńıho podniku Křtiny - ,,Masaryk̊uv les“. Územı́, na kterém byl test prováděn je ohraničeno souřadnicemi 16d35’30.12“E 49d13’5.52”N a 16d48’44.64“E 49d21’18.72”N (WGS84). Pro test byly použity vrstvy: � Letecké sńımky - 50 leteckých sńımk̊u v infra-červeném spektru v rozlǐseńı 0.5 m, jejichž barevná paleta byla redukována na 256 barevných odst́ın̊u. Pr̊uměrná velikost jednoho rastru je 1.89 MB (formát TIFF + TFW) � Digitálńı model terénu - Jednotná rastrová mapa v rozlǐseńı 5 m (formát TIFF + TFW) � Mapa využit́ı p̊udy - vektorová mapa ve formátu ESRI Shapefile, obsahuj́ıćı 32488 liníı a 11647 ploch rozdělených do 13 kategoríı. Servery byly nastaveny tak, aby se mapová vrstva vykreslovala bez popisk̊u s pouze vybarvenými plochami. � Typologická mapa - vektorová mapa ve formátu ESRI Shapefile, obsahuj́ıćı 14731 liníı a 5282 ploch rozdělených do 133 kategoríı. Mapová vrstva byla nastavena tak, aby se plochy vykreslily pomoćı šraf (rastrový obrázek velikosti 2x2 pixely) s popiskami jednotlivých kategoríı. Od p̊uvodńıho záměru, testovat data v zobrazeńı S-JTSK jsme upustili z d̊uvodu problémů s t́ımto zobrazeńım v knihovně PROJ.4 (kterou využ́ıvá UMN MapServer ) na operačńım systému MS Windows a problémů při konfiguraci ArcIMS. Data tak byla pomoćı nástroj̊u gdalwarp a ogr2ogr převedena do zobrazeńı Lat/Long (referenčńı elipsoid WGS84). Pro UMN MapServer byly ještě letecké sńımky opatřeny souborem obsahuj́ıćım ,,mapu“ jed- notlivých leteckých sńımk̊u - tile index. Použité mapové servery University Of Minnesota MapServer12 (současný název je pouhé MapServer ) je asi nej- rozš́ı̌reněǰśı Open Source a Free Software GIS program. Je vyv́ıjen a udržován početnou ko- munitou uživatel̊u. Lze jej spouštět bud’ jako CGI aplikaci nebo pomoćı rozhrańı MapScript zapracovat do r̊uzných programovaćıch jazyk̊u. Pro účely testu byl použit předkompilovaný MapServer verze 4.8.1, stažený ze stránek projektu, který byl spouštěn jako CGI. Druhým použitým mapovým serverem je ArcIMS13 firmy ESRI. Nativńım formátem pro komunikaci serveru je ArcXML. Pro testy bylo použito ArcIMS verze 9.1 SP1, ve které inte- grován WMS connector – nadstavba napsaná v jazyku Java, která umožňuje publikovat data ve formátu WMS. WMS connector přistupuje k mapových službám běž́ıćım na serveru a de facto pro ně vytvář́ı WMS rozhrańı. Vlastńı test Vlastńı test byl proveden skriptem k tomuto účelu vytvořeným. Skript byl napsán v progra- movaćım jazyce Python. K měřeńı času potřebného k vytvořeńı obrázku s mapou byl využit 12 http://mapserver.gis.umn.edu/ 13 http://www.esri.com/software/arcgis/arcims/index.html Geinformatics FCE CTU 2006 103 http://mapserver.gis.umn.edu/ http://www.esri.com/software/arcgis/arcims/index.html MAPSERVER VS. MAPSERVER modul timeit s funkćı repeat. Tato funkce14 potřebuje ke svému běhu dva parametry: � Počet opakováńı tohoto testu � Počet voláńı testované funkce vrámci jednoho testu. Obě hodnoty byly nastaveny na 10. Funkce vraćı č́ıselné pole, obsahuj́ıćı počty sekund potřebné k provedeńı každého testu (v našem př́ıpadě pole o deseti prvćıch). Výsledná č́ısla jsou tedy počty sekund potřebných k vytvořeńı, stažeńı a uložeńı 10 obrázk̊u s mapami. Nelze ř́ıci, že se jedná o počet sekund potřebných k vytvořeńı obrázku. Celkový čas je kromě parametr̊u na straně serveru závislý na prostupnosti śıtě, rychlosti ukládáńı souboru na straně klienta a dobou potřebnou k vykonáńı samostatné funkce. Funkce save file dostane jako sv̊uj parametry vždy URI, ze kterého má stahovat potřebná data. Ještě před t́ım, než započne se stahováńım dat, jsou hraničńı souřadnice upraveny o náhodnou hodnotu. Ćılem této úpravy bylo zamezit nač́ıtáńı odpověd́ı z cache na straně serveru. [...] t = timeit.Timer("""mapserverVsMapserver.save_file( "%s", verbose=%d, bbox="%s", mapserv="%s" )""" %\ (URI,verbose,bbox,mapserv), "import mapserverVsMapserver") times = t.repeat(10,10) [...] number = 0 def save_file(uri, verbose=0, bbox=None, mapserv=""): # bbox randomization newBox = "" rand = random.random()/100-0.005 for cord in bbox.split(","): newBox += str(float(cord)+rand)+"," newBox = newBox[:-1] uri += "&BBOX=%s" % (newBox) global number number += 1 if verbose == 3: print number 14 http://diveintopython.org/performance tuning/timeit.html Geinformatics FCE CTU 2006 104 http://diveintopython.org/performance%5C_tuning/timeit.html MAPSERVER VS. MAPSERVER if verbose > 3: print number, uri map = urllib.urlopen(uri) input = open(’map-%s-%03d.png’ % (mapserv,number),’wb’) input.write(map.read()) input.close() return Testovány byly následuj́ıćı varianty: � ,,Jednoduchý“ rastrový soubor celého územı́ (digitálńı model terénu) � ,,Jednoduchý“ rastrový soubor celého územı́ (digitálńı model terénu) - výřez územı́ � ,,Náročná“ vektorová mapa celého územı́, včetně rastrových textur a popisk̊u (typolo- gická mapa) � ,,Náročná“ vektorová mapa celého územı́, včetně rastrových textur a popisk̊u (typolo- gická mapa) - výřez územı́ � ,,Náročný“ rastrový soubor celého územı́ - letecké sńımky � ,,Náročný“ rastrový soubor celého územı́ - letecké sńımky - výřez územı́ � Kombinace ,,náročného“ rastru s ,,náročnou“ vektorovou mapou na celém územı́ - le- tecké sńımky + typologická mapa � Kombinace ,,náročného“ rastru s ,,náročnou“ vektorovou mapou na celém územı́ - le- tecké sńımky + typologická mapa - výřez územı́ � ,,Jednoduchá“ vektorová mapa celého územı́ (mapa využit́ı p̊udy) � ,,Jednoduchá“ vektorová mapa celého územı́ (mapa využit́ı p̊udy) - výřez územı́. Celé územı́ bylo ohraničeno (výchoźımi) souřadnicemi 16d35’30.12“E 49d13’5.52”N a 16d48’44.64“E 49d21’18.72”N. Výřez pak 16d42’7.128“E 49d17’14.388”N a 16d42’39.996“E 49d17’35.412”N. Obrázky byly stahovány ve formátu PNG o velikosti 400×400 pixel̊u. Výsledky Sekvenčńı dotazy z jednoho klienta na server Tyto testy popisuj́ı řady sekvenčńıch dotaz̊u z jednoho klienta na mapový server. Pro kladeńı dotaz̊u na mapový server ArcIMS jsou použity porty 80 a 8080. Pokud je dotaz položen přes port 80, převezme jej webový server Apache, ten jej předá Tomcatu a následně se zavolá samotný WMS connector (který źıská data z běž́ıćı mapové služby ArcIMS ). Pokud je dotaz položen přes port 8080, prob́ıhá komunikace př́ımo s nádstavbou Tomcat a je tedy ušetřen čas komunikace s web serverem. Geinformatics FCE CTU 2006 105 MAPSERVER VS. MAPSERVER dmt dmt (de- tail) typo– logie typo– logie (de- tail) ortho ortho (de- tail) ortho + typo- logie ortho + typo- logie (de- tail) land– use land– use (de- tail) ArcIMS (port 8080) 7,52 5,61 14,73 5,82 27,23 8,88 34,59 8,62 37,90 6,38 ArcIMS (port 80) 14,51 7,89 21,37 8,38 48,61 26,27 50,15 23,17 41,03 8,10 MapServer 4,38 3,28 32,38 3,00 20,65 4,66 46,37 4,85 6,55 3,28 Tabulka 1: Srovnáńı rychlosti vykreslováńı r̊uzných typ̊u vrstev servery Obrázek 1: Jak rychle je daná vrstva zpracována r̊uznými servery (větš́ı čas znamená horš́ı výsledek) Sekvenčńı dotazy ze serveru na server Tyto hodnoty popisuj́ı dotazy pokládané ze stejného poč́ıtače, jako je ten, na kterém je in- stalován mapový server. Porovnáńım s předchoźımi hodnotami źıskáme vliv komunikace po śıti na výsledné časy. Geinformatics FCE CTU 2006 106 MAPSERVER VS. MAPSERVER Obrázek 2: Jak rychle dokáž́ı servery zpracovávat jednotlivé vrstvy dmt dmt (de- tail) typo– logie typo– logie (de- tail) ortho ortho (de- tail) ortho + typo– logie ortho + typo– logie (de- tail) land– use land– use (de- tail) ArcIMS (port 8080) 3,65 2,89 12,74 2,95 24,43 5,63 31,80 5,78 35,52 2,83 ArcIMS (port 80) 12,84 3,64 19,10 5,17 49,37 28,20 51,50 22,85 38,82 4,27 MapServer 2,39 1,67 31,20 1,53 17,17 2,98 44,76 3,39 4,50 1,21 Tabulka 2: Srovnáńı čas̊u nutných odpovědi při kladeńı dotaz̊u pouze v rámci serveru (neprob́ıhá komunikace po śıti) Geinformatics FCE CTU 2006 107 MAPSERVER VS. MAPSERVER Obrázek 3: Jak rychle je daná vrstva zpracována r̊uznými servery Obrázek 4: Jak rychle dokáž́ı servery zpracovávat jednotlivé vrstvy Porovnáńı sekvenčńıch dotaz̊u Nı́že uvedená tabulka a graf shrnuj́ı rozd́ıly mezi dotazy klient-server a server-server. Je patrné, že zpožděńı při dotazech přes poč́ıtačovou śıt’ je ve většině př́ıpad̊u téměř konstantńı. T́ımto testem se nav́ıc vzájemně ověřili i naměřené hodnoty. Je patrné, že při opakovaném měřeńı dosahujeme obdobných výsledk̊u. Hodnoty bez č́ısla 2 jsou naměřené při kladeńı ze samotného serveru. Hodnoty s č́ıslem 2 (např. ArcIMS (port 80) 2) jsou naměřeny při kladeńı dotaz̊u z klienta na server. Geinformatics FCE CTU 2006 108 MAPSERVER VS. MAPSERVER dmt typologie ortho ortho + ty- pologie landuse ArcIMS (port 80) 12,84 19,10 49,37 51,50 38,82 ArcIMS (port 80) 2 14,51 21,37 48,61 50,15 41,03 ArcIMS (port 8080) 3,65 12,74 24,43 31,80 35,52 ArcIMS (port 8080) 2 7,52 14,73 27,23 34,59 37,90 MapServer 2,39 31,20 17,17 44,76 4,50 MapServer 2 4,38 32,38 20,65 46,37 6,55 Tabulka 3: Srovnáńı vlivu komunikace po śıti na dobu nutnou k odpovědi Obrázek 5: Porovnáńı dotazu z klient-server a ze server-server Porovnáńı sekvenčńıch a paralelńıch dotaz̊u Následuj́ıćı tabulka srovnává délky odpověd́ı v př́ıpadě kladeńı dotaz̊u z jednoho PC, sa- motného serveru a paralelně z 10 r̊uzných PC. Zobrazená naměřená hodnota pro 10 PC je pr̊uměrem naměřených hodnot ze všech PC (rozd́ıly mezi hodnotami z PC byly ve všech uvedených př́ıpadech pod 10%). Položky označené “Single” popisuj́ı dotazy server-server. Od testovańı ArcIMS přes port 80 bylo pro paralelńı zátež bylo upuštěno, protože je z předchoźıch výsledk̊u zcela evidentńı, že se pro takovéto nasazeńı nehod́ı. Geinformatics FCE CTU 2006 109 MAPSERVER VS. MAPSERVER dmt typologie ortho ortho + typologie Single ArcIMS (port 8080) 3,65 12,74 24,43 31,80 Single ArcIMS (port 80) 12,84 19,10 49,37 51,50 Single Mapserver 2,39 31,20 17,17 44,76 1xPC ArcIMS (port 8080) 7,52 14,73 27,23 34,59 1xPC ArcIMS (port 80) 14,51 21,37 48,61 50,15 1xPC Mapserver 4,38 32,38 20,65 46,37 10xPC ArcIMS (port 8080) 16,98 80,90 187,68 250,05 10xPC Mapser- ver 18,31 242,06 83,68 287,84 Tabulka 4: Srovnáńı vlivu sekvenčńıho a paralelńıho kladeńı dotaz̊u Obrázek 6: Porovnáńı sériového a paralelńıho kladeńı dotaz̊u Závěr Vyvozovat závěry z naměřených výsledk̊u je vždy problematické. Do značné mı́ry zálež́ı na úhlu pohledu a interpretaci. Nav́ıc každý test může být napadnut z hlediska ne zcela objek- tivńı metodiky měřeńı, použitých prostředk̊u nebo konfiguraci daného produktu. Primárńım ćılem tohoto článku proto bylo poskytnout výtah z námi źıskaných dat a popsat podmı́nky, za kterých byla tato data naměřena. Na základě zde zmı́něných výsledk̊u lze bez újmy na objektivitě ř́ıci: Geinformatics FCE CTU 2006 110 MAPSERVER VS. MAPSERVER � Jak se dalo předpokládat, je markantńı rozd́ıl mezi rychlost́ı zpracováńı požadavku u produktu ArcIMS při kladeńı dotaz̊u přes port 80 a port 8080. V př́ıpadech, kdy je webový server Apache vypuštěn a dotaz je položen př́ımo Tomcatu (standardně port 8080), je požadavek vyř́ızen často i v polovičńı době. Pro nasazeńı s vysokou zátěž́ı serveru je tedy velmi vhodné zvolit tuto variantu. � Otevřený projekt MapServeru je pro poskytováńı mapových služeb minimálně kon- kurenceschopných řešeńım komerčńımu produktu ArcIMS. Jak je patrné z výsledk̊u slabým mı́stem MapServeru je mapováńı v souborech uložených textur do vektorové mapy (vrstva typologie). Při práci s rastry i vektorovými podlady však dosahuje velmi zaj́ımavých výsledk̊u. Relativně ńızký výkon ArcIMS je pochopitelný, pokud vezmeme v potaz fakt, že WMS connector je napsán v Javě a nemůže tedy dosáhnout takové efektivity, jako kdyby byl předkompilován pro určitou platformu. Tedy výkon WMS connectoru je do značné mı́ry dán i výkonem Tomcatu. � Horš́ı výsledky při zpracováńı rastrových map u obou řešeńı by mohly být teoreticky vylepšeny vybudováńım pyramid (u produktu ArcIMS např. uložeńım rastru do Ar- cSDE15). � Sledováńı zátěže serveru v pr̊uběhu test̊u potvrdilo předpoklad, že zat́ımco při zpra- cováńı rozsáhlých rastrových dat je limitńım faktorem rychlost disku, při zpracováńı vektorových dat je limitńım faktorem rychlost procesoru. Bylo by bezesporu zaj́ımavé, porovnat i daľśı známé a v praxi často použ́ıvané mapové servery, zejména GeoServer16, DeeGree17, nově uvolněný produkt MapGuide18 či český TopoL Internet Server19. Při daľśım testováńı hodláme rovněž porovnat rychlosti zpracováńı dat v nativńıch formátech jednotlivých řešeńı. Reference 1. Mitchell, Tyler (2005): Web Mapping Illustrated, O’Reilly Media, Inc., Sebastopol. 2. Beaujardiere, Jeff (2006): OpenGIS(r) Web Map Server Implementation Specification, Open Geospatial Consortium Inc., OGC(r) 06-042, Version 1.3.0, http://www.opengeospatial.org 15 http://www.esri.com/software/arcgis/arcsde/ 16 http://docs.codehaus.org/display/GEOS/Home 17 http://www.deegree.org/ 18 http://www.autodesk.com/mapguide 19 http://topol.cz/?doc=2400 Geinformatics FCE CTU 2006 111 http://www.esri.com/software/arcgis/arcsde/ http://www.esri.com/software/arcgis/arcsde/ http://docs.codehaus.org/display/GEOS/Home http://www.deegree.org/ http://www.autodesk.com/mapguide http://topol.cz/%3Fdoc%3D2400 http://topol.cz/%3Fdoc%3D2400 http://www.opengeospatial.org