Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 Fri 09 March 2012 17:09

ylard
Juste Inscrit !
Date d'inscription: 9 Mar 2012
Messages: 3

[MapServer] problème avec MapObj

bonjour,
je ne comprends pas le problème suivant:
j'ai une map file qui fonctionne très bien avec mapserv (le programme) en version web
mais quand j'essaie avec php (voir code ci-dessous) ca va pas smile
je suis sous windows 7 64 bits. J'ai installé la version courante de mapserver

Code:

<?php
if (PHP_OS == "WINNT" || PHP_OS == "WIN32")
{
    $dlext = "dll";
}
else
{
    $dlext = "so";
}

if (!extension_loaded("MapScript"))
{
    dl("php_mapscript.$dlext");
}
//if (!extension_loaded("dbase"))
//{
//    dl("php_dbase.$dlext");
//}
$mappath="c:/ms4w/apps/PhpArch/htdocs/";
//phpinfo();
printf("%s<BR>",ms_GetVersion());
$mapfile = "arch.map";
ms_ResetErrorList();
if (file_exists($mapfile))
printf ("file found<BR>");
else
printf ("file not found<BR>");

$map=new MapObj($map_file,$mappath);
$error=ms_GetErrorObj();
while ($error &&  $error->code!=MS_NOERR)
{
printf ("Error in %s : %s <br>\n",$error->routine,$error->message);
$error=$error->next();
}
ms_ResetErrorList();
//$map->height=700;
$map->width=700;
$map->extent->minx=0;
$map->extent->miny=0;
$map->extent->maxx=325000;
$map->extent->maxy=325000;

printf ("%f %f \n<BR>", $map->height,$map->width);
printf ("--%s--\n<BR>", $map->mappath);
printf ("%d \n<BR>", $map->debug);
printf ("%f %f \n<BR>", $map->extent->minx,$map->extent->miny);
//$layer = $map->getLayer(0);
//printf ("%f %f \n", $map->extent->minx,$layer->data);

$image=$map->draw();
$error=ms_GetErrorObj();
while ($error &&  $error->code!=MS_NOERR)
{
printf ("Error in %s : %s <br>\n",$error->routine,$error->message);
$error=$error->next();
}
$image_url=$image->saveWebImage();
?>
<HTML>
<HEAD>
<TITLE>Map</TITLE>
</HEAD>
<BODY>
<INPUT TYPE=IMAGE NAME="mapa" SRC="<?php echo $image_url?>">
</BODY>

j'obtiens le résultat suivant

Code:

MapServer version 6.0.2 (MS4W 3.0.4) OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=CAIRO SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
file found
-1.000000 700.000000
----
0
0.000000 0.000000
Warning: mapObj::draw(): [MapServer Error]: msDrawMap(): Unable to initialize image. in C:\ms4w\apps\PhpArch\htdocs\test.php on line 51 Warning: mapObj::draw(): [MapServer Error]: msPrepareImage(): Image dimensions not specified. in C:\ms4w\apps\PhpArch\htdocs\test.php on line 51 Error in msDrawMap() : Unable to initialize image.
Error in msPrepareImage() : Image dimensions not specified.
Fatal error: Call to a member function saveWebImage() on a non-object in C:\ms4w\apps\PhpArch\htdocs\test.php on line 58

il semble que new MapObj ne lit pas (bien?) le fichier map alors que le nom du fichier est correct (height à -1)
Je voudrais savoir si cela peut être du au fait de travailler sur une machine 64bits, au path qui doit être préciser autrement,  ou si il y a une autre cause possible


ci-dessous le fichier map
à noter que le fichier d'erreur "c:/error.txt" n'est pas créé

Code:

#
# Start of map file
#
MAP
  NAME AGRAR
  SIZE 800 800
  STATUS ON
  CONFIG "MS_ERRORFILE" "c:/error.txt"
  CONFIG "ON_MISSING_DATA" "LOG"
  DEBUG 5
   EXTENT 0 0 325000 325000
  UNITS METERS
   IMAGECOLOR 255 255 255
   IMAGETYPE PGN
 
  #
  # Projection definition, consult the PROJ.4 documentation for parameter discussion
  #
   PROJECTION
    "init=epsg:31370"
   END

  WEB
    # change the next two lines to match your setup
    IMAGEPATH "C:/ms4w/tmp/ms_tmp/" 
    IMAGEURL "/ms_tmp/"

  END

   #
  # Start of layer definitions
  #
LAYER
    NAME Communes_arch
    TYPE POLYGON
    DEBUG 5
    STATUS ON
    DATA data/Communes_arch123
    CLASS
       NAME  "Communes_arch1"
       STYLE 
        OUTLINECOLOR 210 50 120
        WIDTH 1.0
      END
    END


END # Map File

Merci pour toute aide et bon WE

Hors ligne

 

#2 Sat 10 March 2012 09:38

Laurent Jégou
Participant assidu
Lieu: Toulouse
Date d'inscription: 5 Sep 2005
Messages: 447
Site web

Re: [MapServer] problème avec MapObj

IMAGETYPE PGN


: Ne serait-ce pas plutôt PNG ?


Enseignant-Chercheur en Géomatique
UT2J - Dept Géo / CNRS UMR LISST-Cieu / Master Sigma - Revue Mappemonde

Hors ligne

 

#3 Thu 15 March 2012 15:01

ylard
Juste Inscrit !
Date d'inscription: 9 Mar 2012
Messages: 3

Re: [MapServer] problème avec MapObj

effectivement, j'ai corrigé mais cela ne résout pas mon problème
merci de l'aide,

Hors ligne

 

#4 Thu 15 March 2012 15:41

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: [MapServer] problème avec MapObj

Bonjour,

Sans regarder la doc de php/Mapscript je dirais que tu essaies de setter des valeurs via une méthode qui ne sert qu'à getter (oui c'est du jargon de développeur). En gros tu utilises deux méthodes qui ne servent qu'à obtenir une valeur d'une propriété (get = obtenir) alors que ton objectif est clairement de définir la valeur de ces valeur  (set = définir).

Code:

//$map->height=700;
$map->width=700;

Au lieu de :

Code:

$map->setSize(700, 700);

Je t'invite à vérifier la méthode dans la doc de MS wink mais cela me semble la cause du problème. Tu

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Mon 19 March 2012 15:42

ylard
Juste Inscrit !
Date d'inscription: 9 Mar 2012
Messages: 3

Re: [MapServer] problème avec MapObj

bonjour,
d'abord merci, mais ce n'est pas là le problème
j'ai rajouté ces lignes pour voir justement si cela fonctionnait (si je pouvais modifier les paramètres) car après l'exécution de new Mapobj() tout est à -1(height, width) mappath est vide, debug =0 extent = -1,-1 ce qui me fait dire que le problème est lié à la lecture du fichier (via new mapobj()) et pourtant le path semble correct (via file_exists)

et encore merci de l'aide

Dernière modification par ylard (Mon 19 March 2012 15:44)

Hors ligne

 

Pied de page des forums

Powered by FluxBB