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

E Perik erwin at perik.nu
Wed Apr 3 13:22:33 PST 2002


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));
}




More information about the MapServer-users mailing list