[mapserver-users] RE: dynamically allocated points for MAP w/ PHP

E Perik erwin at perik.nu
Thu Apr 4 18:02:35 EST 2002


Hi Pushkar,

Just to check the obvious,....

1) Does it echo the layername?
2) Should you not use 'explode' for $layer when multiple are selected?
3) Is the layername an existing one and not too long?
4) Is the layer STATUS set to: DEFAULT or ON ?
5) Is the layer set in your url like: 
   http://localhost/.../name.php?zoom=1&layer="layer1 layer2 layer3"
6) You sure POST is correct? Did you check GET ?

Option 2) should use a string like "layer1 layer2 layer3" (see option 5)
and then you explode it using the space so you then use $layer[0] for
your first layer of the 'original-string-array'

For exploding use something like:

$LayerArray = explode(" ", $HTTP_GET_VARS["layer"]);

Then from the example above you get:

$LayerArray[0] would be "layer1"
$LayerArray[1] would be "layer2"
$LayerArray[2] would be "layer3"

Erwin


-----Original Message-----
From: owner-mapserver-users at lists.gis.umn.edu
[mailto:owner-mapserver-users at lists.gis.umn.edu] On Behalf Of Pushkar
Pradhan
Sent: Thursday, April 04, 2002 7:56 PM
To: mapserver-users at lists.gis.umn.edu
Subject: Re: [mapserver-users] RE: dynamically allocated points for MAP
w/ PHP

I have a related question, in php/mapscript I show the user a html list
from which he/she can select layers to add to the current view, I am
writing some code but it doesn't work can somebody provide me with the
algorithm if not the code like the one given below:
if ( isset($HTTP_POST_VARS["layer"]) ) {
   echo $HTTP_POST_VARS["layer"];
   $layer = $map->getLayerByName($HTTP_POST_VARS["layer"]);
   $image = $map->prepareImage();
   $layer->draw($image);
   $image_url = $image->saveWebImage(MS_PNG,1,1,0);
}   // end of if loop
The above code doesn't work it creates a blank image, moreover if one
selects multiple layers to display then only the last one selected is
chosen.
Thanks,

> Hi Scott, >
> There is nothing wrong with the PHP code, except it does not create a
> layer, but it creates a new shapefile ;-)
>
> So you want to create a layer, dynamicly, or .....
>
> Example of creating a layer from a shapefile:
>
> 0) Create map-object
> 1) Get object/points from existing-shapefile or from database
> 2) Put it in new-shapefile (as you did in your php-script)
> 3) Create dbf-file with name of new-shapefile
> 4) Clear new-shapefile (as you did)
> 5) Add new-layer to map-object (default of this layer is set to OFF)
> 6) Show new-layer (turn it ON)
> 7) Draw the map (now includes newly created shapefile ;-) )
>
> Explanation:
>
> *** In 0) you use like: $Map = ms_newMapObj("blabla.map");
>
> *** In 1) you determine input. This could be the 3 points you have in
> your example, but also could be a shape or lat/lon from a database
(eg.
> dbf/MySQL)
>
> *** Option 2) and 3) and 4) you have in your mapscript. This creates a
> shapefile + corresponding dbf-file.
>
> *** Option 5) and 6) is best done using a dummy-layer which is set to
> OFF in your map-file. You turn it on AND attach the new shapefile-data
> from by using:
> 	$Dummylayer = ms_newLayerObj($Map);  // a new layerobject
> 	$Dummylayer = $Map->getLayerByName("MapLayer");
> 	$Dummylayer->set("status", 1);	       // Turn it on
> 	$Dummylayer->set("data", $shpFname);       // Add your created
> data
>
> 	While your map-layer looks something like:
>
> 	LAYER
> 	  NAME "MapLayer"
> 	  TYPE POINT
> 	  STATUS OFF
> 	  CLASS
> 	    SYMBOL 'circle'
> 	    COLOR 0 0 0
> 	    SIZE 3
> 	  END
> 	END
>
> *** Option 7) is something like:
>
> $ImgMap = $Map->draw();
>
> This should do the trick.
>
> Erwin
>
>
>
> -----Original Message-----
> From: Scott D Cogan [mailto:cogansco at msu.edu]
> Sent: Wednesday, April 03, 2002 10:28 PM
> To: Consult IT!, E. Perik; mapserver-users at lists.gis.umn.edu
> Subject: dynamically allocated points for MAP w/ PHP
>
> what is wrong with this PHP code?  i am trying to create a layer of
> points
> using mapscript.  i had this working previously, then somehow deleted
> the
> file.  now i cant figure it out again:
>
> if ($init==1) {
> // recreate the site layer
>   $shpFname = "C:\\Program
Files\\Apache\\htdocs\\mich\\data\\shptest";
>   $shpFile = ms_newShapeFileObj($shpFname, MS_SHP_POINT);
>   $def =  array(array("PROG_ID", "N", 5, 0));
>   $dbfFile = dbase_create($shpFname . ".dbf", $def);
>   createPoint( 14, 34, 111);
>   createPoint( 33, 14, 222);
>   createPoint( 10, 20, 333);
> // done... cleanup
>   $shpFile->free();
>   dbase_close($dbfFile);
> }
>
>
> function createPoint($x, $y, $name){
>     GLOBAL $shpFile, $dbfFile;
>     // Create shape
>     $oShp = ms_newShapeObj(MS_SHP_POINT);
>     $oLine = ms_newLineObj();
>     $oLine->addXY($x, $y);
>     $oShp->add( $oLine );
>     $shpFile->addShape($oShp);
>     // Write attribute record
>     dbase_add_record($dbfFile, array($name));
> }
>

------------------------------------------------------------------------
------
PUSHKAR S. PRADHAN
Research Assistant
MISSISSIPPI STATE UNIVERSITY,
STARKVILLE, MS 39759.

Engineering Research Center
Box 9627
Mississippi State, MS 39762-9627
------------------------------------------------------------------------
------




More information about the mapserver-users mailing list