/*************************************************************************************)
(**** CopyRight
ltisig Juin 2008 *************)
(**** Auteur: Issa BALDE
stagiaire DIC3 G.Info *************)
(************************************************************************************)*/
// on crée l'objet map
$map = ms_newMapObj($map_path . $map_file);
$map->setSymbolSet($symb_path);// definition du fichier des
symbole
$layer = ms_newLayerObj($map);
// Nom du layer
$layer->set( "name",$choix_couche);
// Affichage : oui par défaut
$layer->set("status",MS_DEFAULT);
// Type de connexion = PostGIS
$layer->set("connectiontype",MS_POSTGIS);
$layer->set("connection",
"user=".$user." dbname=".$db." host=".$hote);
$layer->set("labelitem",$label);// affichage des etiquettes ou labels
// Les METADATA
$layer->setMetaData("Description",$choix_couche);
$layer->setMetaData("Result_Fields","nom");
$layer->setMetaData("Layer",$choix_couche);
//On récupere les colones
géometriques
$MS_GEOM = pg_query($conn,
"SELECT f_geometry_column,type FROM
geometry_columns WHERE f_table_name
LIKE '".$choix_couche."'"
);
$colonne_geometrique = pg_result( $MS_GEOM,0,0 );
$type_geometrique = pg_result( $MS_GEOM,0,1 );
// La requete spatiale
$layer->set( "data",$colonne_geometrique." from
".$choix_couche);
switch ($type_geometrique)
{
case "POINT":
$layer->set("type",MS_LAYER_POINT);
$layer->set("status",MS_ON);
// Ajout de la class
$class = ms_newClassObj($layer);
$class->set("name",$choix_couche);
// Ajout du Label
$label = $class->label;
$label->set("size",MS_SMALL);
$label->color->setRGB("22","8","3");
// Ajout du style
$style = ms_newStyleObj($class);
// Précision sur la taille de
l'objet
$style->set("size",7);
$style->set("symbolname","circle");
if(isset($R)&&($R!='')){$style->color->setRGB($R,$G,$B);}else{$style->color->setRGB("255","0","0");}
break;
case "MULTIPOLYGON":
$layer->set("type",MS_LAYER_POLYGON);
$layer->set("status",MS_ON);
$class = ms_newClassObj($layer);
$class->set("name",$choix_couche);
// Ajout du Label
$label = $class->label;
// Précision sur l'affichage de la données de
type attributaire
// la couleur, la taille de la donnée ...
$label->set("size",MS_TINY);
$label->set("position",MS_CC);
$label->backgroundcolor->setRGB("0","255","0");
$label->color->setRGB("0","0","0");
$label->outlinecolor->setRGB("255","255","255");
$style = ms_newStyleObj($class);
$style->set("size",5);
if(isset($R)&&($R!='')){
$style->color->setRGB($R,$G,$B);
}else{$style->color->setRGB("255","250","250");}
$style->outlinecolor->setRGB("0","0","0");
break;
case "POLYGON":
$layer->set("type",MS_LAYER_POLYGON);
$layer->set("status",MS_ON);
$class = ms_newClassObj($layer);
$class->set("name",$choix_couche);
// Ajout du Label
$label = $class->label;
// Précision sur l'affichage de la données de
type attributaire
// la couleur, la taille de la donnée ...
$label->set("size",MS_TINY);
$label->set("position",MS_CC);
$label->backgroundcolor->setRGB("0","255","0");
$label->color->setRGB("255","0","0");
$label->outlinecolor->setRGB("255","255","255");
$style = ms_newStyleObj($class);
$style->set("size",5);
if(isset($R)&&($R!='')){$style->color->setRGB($R,$G,$B);}else{$style->color->setRGB("255","250","150");}
$style->outlinecolor->setRGB("80","80","255");
break;
default:
$layer->set("type",MS_LAYER_LINE );
$layer->set("status",MS_ON);
$class =
ms_newClassObj($layer);
$class->set("name",$choix_couche);
// Ajout du Label
$label =
$class->label;
// Ajout du style
$style =
ms_newStyleObj($class);
// Précision sur l'affichage
des données géométriques
// couleur de bourdure en code 128
0 0 pour RGB
$style->set("size",10);
if(isset($R)&&($R!='')){$style->outlinecolor->setRGB($R,$G,$B);}else{$style->outlinecolor->setRGB("128","0","0");}
break;
}
/*-----------------------------------------------------------
------- calcul de l'Extent pour chaque couche
----------
-------------------------------------------------------------*/
$Requete_Extent = "select
xmin(extent(".$colonne_geometrique.")),
ymin(extent(".$colonne_geometrique.")),
xmax(extent(".$colonne_geometrique.")),
ymax(extent(".$colonne_geometrique.")) from ".$choix_couche;
$Resultat_Extent = pg_query( $conn, $Requete_Extent);
while ( $Row_Extent = pg_fetch_object( $Resultat_Extent ))
{
$Xmin[] = $Row_Extent->xmin;
$Ymin[] = $Row_Extent->ymin;
$Xmax[] = $Row_Extent->xmax;
$Ymax[] = $Row_Extent->ymax;
}
}// fin du while
/*
--------------------------------------------------------------------------
--------- Calcul de l'Extent générale et des
dimensions de l'image -----
----------------------------------------------------------------------------
*/
$xmin= min($Xmin);
$ymin= min($Ymin);
$xmax= max($Xmax);
$ymax= max($Ymax);
$longueur_image = 600;
$longueur_extent = abs($xmax-$xmin);
$hauteur_extent = abs($ymax-$ymin);
$rapport_extent = $longueur_extent / $hauteur_extent;
$hauteur_image =$longueur_image / $rapport_extent;
$map->set("width", $longueur_image);
$map->set("height", $hauteur_image);
$map->backgroundcolor->setRGB("0","200","255");
/*------------------------------------------------------------------------------
------------------------------- ajout de la barre
d'echelle -----------------
--------------------------------------------------------------------------------*/
$map->scalebar->set("style", 1);
$map->scalebar->set("units", MS_KILOMETERS);
$map->scalebar->set("intervals",4);
$map->scalebar->set("transparent", MS_ON);
$map->scalebar->set("status", MS_EMBED);
$map->scalebar->set("width", 400);
$map->scalebar->color->setRGB(0,0,0);
// echelle
$scaleBar = $map->drawScaleBar();
/*------------------------------------------------------------------------------
------------------------------- ajout de la legende
-----------------
--------------------------------------------------------------------------------*/
$map->legend->set("status", MS_ON);
// legende
$legend = $map->drawLegend();
$url_legende=$legend->saveImage($img_path."legende_".session_id().".png");
/*----------------------------------------------------------------------------
------------ Construction de la carte de reference
---------------------------
-----------------------------------------------------------------------------*/
$map->reference->set("image",$img_path."miniMap.png");
$map->reference->set("width",150);
$map->reference->set("height",119);
$map->reference->set("status",MS_ON);
$map->reference->extent->setextent($xmin,$ymin,$xmax,$ymax);
$map->reference->color->setRGB(-1,-1,-1);
$map->reference->outlinecolor->setRGB(255,0,0);
$image_ref=$map->drawReferenceMap();
$url_ref=$image_ref->saveImage($img_path."miniMap.png");
/*-----------------------------------------------------------------
----------- Dessin et sauvaugarde de l'image
généré ----
------------------------------------------------------------------*/
$image = $map->draw();
$image->saveImage($img_path.$image_name);
|