#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
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
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 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