• Cvičení s PHP/MapScript
  • Cviceni s PHP/MapScript
  • Cvičení s MapServerem Instalace Apache Web Server




    Download 128.87 Kb.
    Sana22.12.2019
    Hajmi128.87 Kb.

    Cvičení s MapServerem

    Instalace Apache Web Server

    Instalační soubor lze stáhnout z adresy:http://www.apache.org. Je vhodné se řídit instalačními pokyny. Pro nás se jedná o instalační soubor apache_1.3.20-win32-no_src-r2.msi.K dispozici jsou rovněž zdrojové kódy, které je možné kompilovat. Vlastní kompilování je vhodné zejména pro platformu Linux, kde je obvykle bezproblémové a umožňuje do jádra WWW serveru kompilovat specifické nastavení pro danou konfiguraci počítače. Kompilování však vyžaduje určité minimální znalosti kompilování C++ kódů.

    Windows

    V případě platformy Windows je vhodné využít instalační program, který zajistí instalaci a konfiguraci WWW serveru v rámci operačního systému. Instalace probíhá formou průvodce ve kterém se specifikují základní konfigurační informace pro WWW server.

    Spuštění WWW serveru

    Podmínky: Nainstalovaný TCP/IP protokol. WNT, 2000 - možné zvolit jak se bude WWW server spouštět.

    1. Jako služba OS (pro jednoho uživatele nebo pro všechny)

    2. Ručně

    Zda server běží se ověří následovně: http://127.0.0.1/ nebo http://pcj424x.vsb.cz/. Pokud se objeví úvodní stránka nebo seznam stránek index.html.

    Konfigurace Apache Web Server

    Struktura adresářů: (Implicitní umístění je C:\Program Files\Apache Group\Apache\)

    root: - apache.exe a podpůrné dll knihovny
    bin: podpůrné programy pro správu WWW serveru
    cgi-bin: implicitní adresář pro umisťování cgi aplikací
    conf: obsahuje konfigurační soubory
    htdocs: implicitní adresář pro kořen WWW stránek
    include: obsahuje C a C++ knihovny
    lib a libexec: knihovny
    logs: logy - error.log, access.log
    modules: knihovny modulů


    Konfigurační soubory

    Acces.conf, srm.conf se dnes nepoužívají a vše se konfiguruje v rámci httpd.conf
    Httpd.conf - hlavní konfigurační soubor Apache
    magic - configurace detekování typů souborů na základě prvních bytů v souboru
    mime.types - definování MIME typů


    httpd.conf

    ServerRoot "C:/Program Files/Apache Group/Apache"
    Timeout 300
    MaxKeepAliveRequests 100
    Port 80
    ServerAdmin jan.ruzicka@vsb.cz
    ServerName gisntwc.vsb.cz
    DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs"



    #
    # This may also be "None", "All", or any combination of "Indexes",
    # "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    Options Indexes FollowSymLinks MultiViews
    #
    # This controls which options the .htaccess files in directories can
    # override. Can also be "All", or any combination of "Options", "FileInfo",
    # "AuthConfig", and "Limit"
    #
    AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all


    ErrorLog logs/error.log – podívat se do adresáře logs

    Instalace Minesota Map Server - CGI aplikace

    CGI aplikace lze stáhnout z: http://mapserver.gis.umn.edu. Pro nás se jedná o zip soubor ms34png.zip.Instalace se provede pouhým rozbalením zip souboru a zkopírováním příslušných souborů do adresáře cgi-bin WWW serveru. Dvě základní verze: PNG (copy zlib.dll do system32), GIF

    Ověření instalace

    http://127.0.0.1/cgi-bin/mapserv.exe
    Oznámí:


    No query information to decode. QUERY_STRING is set, but empty.
    Chybné oznámení:


    Not Found

    The requested URL /cgi-bin/mapserv.exe was not found on this server.




    Soubor není v adresáři přítomen nebo je poškozen

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, jan.ruzicka@vsb.cz and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.




    Soubor není korektní CGI aplikací - obvykle to znamená, že je poškozen

    Příprava jednoduché mapové kompozice pro MapServer

    Pracovat budeme v adresáři: C:\Program Files\Apache Group\Apache\htdocs\Php. Do tohoto adresáře zkopírujeme adresáře DataSHP a symbols. Adresář DataSHP obsahuje ESRI Shapefiles a adresář symbols definici symbolů.

    Vytvoření souboru s příponou map

    Reference na http://mapserver.gis.umn.edu/doc/mapfile-reference.html

    NAME prvni.map

    Název souboru

    STATUS ON

    Mapa se má vykreslit

    SIZE 600 400

    Velikost generovaného rastru

    EXTENT -903000 -1225000 -430000 -929000

    Rozsah v reálných souřadnicích MinX, MinY, MaxX, MaxY

    UNITS meters

    jednotky

    SHAPEPATH "DataSHP"

    Cesta k SHP souborům

    SYMBOLSET symbols/symbols.sym

    Cesta k symbolům

    FONTSET symbols/fonts.txt

    Cesta k deklaraci fontů

    IMAGECOLOR 211 211 211

    barva pozadí







    WEB

    IMAGEPATH '../tmp/'

    IMAGEURL '../tmp/'

    TEMPLATE prvni.html

    END #WEB


    Nastavení prostředí

    cesta na disku

    cesta v rámci Webu

    šablona pro umístění mapy









    END # MAPFILE

    Ukončení souboru MAP

    Přidání vrstvy – vložíme před END # MAPFILE

    LAYER

    Vrstva

    NAME 'vusc'

    název

    TYPE Polygon

    typ

    STATUS DEFAULT

    zobrazení

    DATA vusc

    SHP

    CLASS

    Implicitní třída pro všechny prvky

    NAME 'vusc'

    Název třídy

    COLOR 230 255 230

    Barva výplně polygonů

    OUTLINECOLOR 128 128 128

    Barva obrysu polygonů

    END # CLASS

    Konec deklarace třídy

    END # LAYER

    Konec deklarace vrstvy

    Vytvoření “template” souboru první.html




    CR - cvicne


    ČR
















    Cvičení s PHP/MapScript





    dl("php_mapscript.dll"); //přimapování DLL knihovny
    $mapfile = "prvni.map"; //název souboru mapové kompozice
    $mapa = ms_newMapObj($mapfile); //vytvoření objektu MapObj
    $img = $mapa->draw(); //získání objektu typu Image
    $url = $img->saveWebImage(1, 1); //uložení obrázku do souboru a získání jeho URL adresy


    ?>

    WIDTH=600 HEIGHT=400 BORDER=1>



    Cviceni s PHP/MapScript







    dl("php_mapscript.dll");
    $mapfile = "prvni.map";
    $mapa = ms_newMapObj($mapfile);


    $rect = $mapa->extent; //získání obdélníka
    $x = $mapa2_x; //místo kliknutí uživatele – souřadnice x v pixelech
    $y = $mapa2_y; //místo kliknutí uživatele – souřadnice y v pixelech


    if ($akce==1) { //ověření zda uživatel zvolil zoom
    $rect2 = ms_newRectObj(); //vytvoření nového objektu typu Rectangle
    //nastavení rozsahu obdélníka v reálných souřadnicích
    //rozsah (minx, ...) se předává v sekci setting the rectangle
    $rect2->setextent($minx, $miny, $maxx, $maxy);
    $rect3 = ms_newRectObj();
    $rect3->setextent(0, 0, 600, 400); //vytvoření obdélníka v pixelech
    //zoom mapy na předchozí rozsah zapsaný níže
    $mapa->zoomrectangle($rect3, $width, $height, $rect2);
    }


    if ($akce==1) {
    $pPoint = ms_newPointObj(); //vytvoření nového Bodu
    $pPoint->setXY($x, $y); //nastavení souřadnic dle kliknutí uživatele
    //zoom na bod
    $mapa->zoompoint($zoomf, $pPoint, $width, $height, $rect);
    }


    $rect = $mapa->extent; //obdélník ma nový rozsah

    ?>


    //zapsání nového rozsahu do stránky
    ?>
    minx; ?>>
    miny; ?>>
    maxx; ?>>
    maxy; ?>>


    $img = $mapa->draw();
    $url = $img->saveWebImage(1, 1);


    ?>

    WIDTH=600 HEIGHT=400 BORDER=1>




    Akce:


    > Zoom




    Zoom:




    > Zoom In

    > Pan

    > Zoom Out





    Cviceni s PHP/MapScript






    dl("php_mapscript.dll");

    $mapfile = "prvni.map";

    $mapa = ms_newMapObj($mapfile);
    $lyrname = "mesta"; //název vrstvy pro umístění bodů

    $lyr = $mapa->getLayerByName($lyrname); //získání objketu typu Layer
    $rect = $mapa->extent;

    $x = $mapa2_x;

    $y = $mapa2_y;
    if ($akce==1) {

    $rect2 = ms_newRectObj();

    $rect2->setextent($minx, $miny, $maxx, $maxy);

    $rect3 = ms_newRectObj();

    $rect3->setextent(0, 0, 600, 400);

    $mapa->zoomrectangle($rect3, $width, $height, $rect2);

    }
    if ($akce==1) {

    $pPoint = ms_newPointObj();

    $pPoint->setXY($x, $y);

    $mapa->zoompoint($zoomf, $pPoint, $width, $height, $rect);

    }

    $rect = $mapa->extent;
    ?>


    minx; ?>>

    miny; ?>>

    maxx; ?>>

    maxy; ?>>

    $con=odbc_connect("Prvni", "", ""); //spojení s databází
    $img = $mapa->draw();
    $oPoint = ms_newPointObj(); //nový objekt

    $SQL = "SELECT * FROM Body"; //SQL dotaz

    $res=odbc_exec($con, $SQL); //získání recordsetu
    //cyklus po jednotlivých záznamech recordsetu

    do {

    $cx=odbc_result($res, "x"); //získání hodnoty z položky x

    $cy=odbc_result($res, "y"); //získání hodnoty z položky y

    $oPoint->setXY($cx, $cy); //nastavení souřadnic pro bod

    $oPoint->draw($mapa, $lyr, $img, 0, "Text"); //vykreslení bodu

    } while (odbc_fetch_row($res)); //další záznam – v případě konce recordsetu vrací -1

    $oPoint->free(); //uvolnění bodu z paměti

    odbc_close($con); //uzavření spojení s databází

    $url = $img->saveWebImage(1, 1);
    ?>
    WIDTH=600 HEIGHT=400 BORDER=1>





    Akce:


    > Zoom





    Zoom:


    > Zoom In

    > Pan

    > Zoom Out





    Cviceni s PHP/MapScript






    dl("php_mapscript.dll");

    $mapfile = "prvni.map";

    $mapa = ms_newMapObj($mapfile);
    $lyrname = "mesta";

    $lyr = $mapa->getLayerByName($lyrname);
    $rect = $mapa->extent;

    $x = $mapa2_x;

    $y = $mapa2_y;
    if ($akce==1 || $akce==2) { //při umisťování bodů je rovněž nutné mapu překreslit

    $rect2 = ms_newRectObj();

    $rect2->setextent($minx, $miny, $maxx, $maxy);

    $rect3 = ms_newRectObj();

    $rect3->setextent(0, 0, 600, 400);

    $mapa->zoomrectangle($rect3, $width, $height, $rect2);

    }
    if ($akce==1) {

    $pPoint = ms_newPointObj();

    $pPoint->setXY($x, $y);

    $mapa->zoompoint($zoomf, $pPoint, $width, $height, $rect);

    }

    $rect = $mapa->extent;
    ?>


    minx; ?>>

    miny; ?>>

    maxx; ?>>

    maxy; ?>>

    $con=odbc_connect("Prvni", "", "");

    $scale = ($rect->maxx - $rect->minx) / $mapa->width; //výpočet měřítka

    $x1 = $rect->minx + ($scale * $x); //výpočet souřadnice x

    $y1 = $rect->maxy - ($scale * $y); //výpočet souřadnice y
    if ($akce==2) { //pokud uživatel chce umístit bod

    $SQL = "INSERT INTO BODY (X, Y) VALUES ($x1, $y1)"; //SQL pro insert

    $res=odbc_exec($con, $SQL); //zápis hodnot

    }
    $img = $mapa->draw();
    $oPoint = ms_newPointObj();

    $SQL = "SELECT * FROM Body";

    $res=odbc_exec($con, $SQL);
    do {

    $cx=odbc_result($res, "x");

    $cy=odbc_result($res, "y");

    $oPoint->setXY($cx, $cy);

    $oPoint->draw($mapa, $lyr, $img, 0, "Hoo");

    } while (odbc_fetch_row($res));

    $oPoint->free();

    odbc_close($con);

    $url = $img->saveWebImage(1, 1);
    ?>
    WIDTH=600 HEIGHT=400 BORDER=1>





    Akce:


    > Zoom

    > Set Point





    Zoom:


    > Zoom In

    > Pan

    > Zoom Out





    Download 128.87 Kb.




    Download 128.87 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Cvičení s MapServerem Instalace Apache Web Server

    Download 128.87 Kb.