banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 26 May 2014 12:57

abdelbasset
Participant occasionnel
Date d'inscription: 14 May 2014
Messages: 11

Phpmapscript

Excusez-moi mon francais est pas bien  :d
Bonjours

encours en stage en géomatique ,mon encadrement me demande de créer une application WEB qui permet d'afficher une carte dynamique grace  à serveur carthographique (MAPSERVER et le sgbd POSTGRESQL et l'extention POSTGIS )

j'ai créer mon mapfile .il fonctionne bien

j'ai modifier mon mapfile àl'aide du PHPMAPSCRIPT ,il fonctionne bien


le probléme c'est quand je modifier mon  MAPFILE avec PHPMAPSCRIPT et j'ajoute une class à mon mapfile ... la premiére class reste ,

je veux supprimer la premiére classe


Voila mon Code :
<?php
define( "MAPFILE", "C:/ms4w/apps/gmap/htdocs/gmap75.map" );
define( "MODULE", "php_mapscript.dll" );

// load the mapscript module
if (!extension_loaded("MapScript")) dl(MODULE);
//
// Paramètres pour le serveur PostgreSQL
//
    $hote = "localhost";
    $base_de_donnees = "APIWHCE";
    $utilisateur = "postgres";
    $mot_de_passe = "whitehouse@2014";
    $table_choisie = $_POST['table'];
    $critere = $_POST['cr'];
    $label = $_POST['label'];
    //Paramettre pour mapfile
   
        //nomMApfile
            $Nom_Mapfile ="C:/ms4w/Apache/htdocs/test/mapfile/continent.map";
            $longueur_image_mapfile = "500";
            $mapserver_imagepath = str_replace("\\","/",getcwd())."/";
            $mapserver_imageurl = "/img/";
            $mapserver_labelitem = "area";
               
            echo "Image path : " .$mapserver_imagepath;
            echo "<br /><br />";
            echo "Image Url :" .$mapserver_imageurl;
            echo "<br /><br />";

            $var = ms_TokenizeMap($Nom_Mapfile);
            echo "<pre>" ;
            print_r($var);
            echo "</pre>";
            echo "<br /><br />";
//
// Connexion au serveur PostgreSQL
//
    $db_handle = pg_connect("host=".$hote." dbname=".$base_de_donnees." user=".$utilisateur."  password=".$mot_de_passe."");

// Grab POST parameters
    $layerString ='Continent';

// Separate layers on comma
   $layers = explode(",", $layerString);
// Load MapServer .map file
   $map = ms_newMapObj($Nom_Mapfile);
   
   
// Update map file with each layer
for ($i = 0; $i < sizeof($layers); ++$i) {
$layerPrefix = explode(",", $layers[$i]);
$layer = $map->getLayerByName($layerPrefix[0]);
// Change DATA parameter for layer
$class = ms_newClassObj($layer);
$style = ms_newStyleObj( $class );
$style->color->setRGB( 0, 0, 0 );
$style->outlinecolor->setRGB(0, 0, 0 );
$layer->set("name", "$table_choisie");
$layer->set("data", "the_geom FROM  \"$table_choisie\" USING UNIQUE gid USING srid=-1");
$layer->setFilter("gid=$critere");
// Calcul de l'extent pour MapServer
// et de la hauteur de l'image
//
     $pgsql_extent = "select 
     xmin(extent(the_geom)),
     ymin(extent(the_geom)),
     xmax(extent(the_geom)),
     ymax(extent(the_geom)) from  \"$table_choisie\"  where gid=$critere";
     $resultat_extent = pg_exec($db_handle,$pgsql_extent);
     $xmin = pg_result($resultat_extent,0,0);
     $ymin = pg_result($resultat_extent,0,1);
     $xmax = pg_result($resultat_extent,0,2);
     $ymax = pg_result($resultat_extent,0,3);
    
      echo "Extention : ".$xmin."::".$ymin."::".$xmax."::".$ymax;
      $longueur_extent = abs($xmax-$xmin);
     $hauteur_extent = abs($ymax-$ymin);
     $rapport_extent = $longueur_extent / $hauteur_extent;
    $hauteur_image_mapfile = $longueur_image_mapfile / $rapport_extent;
    echo "<br />" ;
    echo 'longueur : ' .$longueur_extent;echo "<br />" ;
    echo 'hauteur : '.$longueur_extent;echo "<br />" ;
    echo 'Raport : ' .$longueur_extent;echo "<br />" ;
    echo 'hauteur image mapfile : ' .$longueur_extent;echo "<br />" ;
//
// Commençons par déterminer le nom de la colonne 
// géométrique associée à la table choisie
//
    $pgsql_colonne_geometrique = "select the_geom from  \"$table_choisie\"  where gid=$critere";
    $pgsql_resultat = pg_exec($db_handle,$pgsql_colonne_geometrique);
    $colonne_geometrique = pg_result($pgsql_resultat,0,0);
    print_r($colonne_geometrique);
    // $type_donnee_geometrique_pour_mapserver = str_replace("MULTILINESTRING",MS_LAYER_LINE);
// echo $type_donnee_geometrique_pour_mapserver;
//
$layer = $map->setextent($xmin,$ymin,$xmax,$ymax);
        $map->web->set("imagepath",$mapserver_imagepath);
        $map->web->set("imageurl",$mapserver_imageurl);
        $map->set("width",$longueur_image_mapfile);
        $map->set("height",$hauteur_image_mapfile);
// echo $image_url;
    pg_close($db_handle);
}
// Finished editing, save .map file
       $map->save("C:/ms4w/Apache/htdocs/test/mapfile/nx.map");
          $var = ms_TokenizeMap($Nom_Mapfile);
        echo "<pre>" ;
        print_r($var);
        echo "</pre>";
        echo "<br /><br />";
    echo $var;

?>

Hors ligne

 

Pied de page des forums

Powered by FluxBB