• Cvičení s PHP/MapScript
  • Cviceni s PHP/MapScript
  • Soubor není korektní CGI aplikací - obvykle to znamená, že je poškozen




    Download 65.25 Kb.
    bet5/5
    Sana22.12.2019
    Hajmi65.25 Kb.
    #4607
    1   2   3   4   5
    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 65.25 Kb.
    1   2   3   4   5




    Download 65.25 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



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

    Download 65.25 Kb.