Creation of shapefiles (PHP)

Jorge Gaspar Sanz Salinas xurxosanz at YAHOO.ES
Fri Jan 21 09:24:24 EST 2005


Hello,

With PHP/MapScript, I'm trying to create a simple shapefile with one
rectagle dinamically from some points. The shapefile is been created but
it seems not in the correct way. This I say, when I make a dynamic layer
with it, seems like a polyline because MapServer doesn't fill it.

In ArcMap the polygon has no area and can't draw it properly (without
color) as MapServer.

I work with Mapserver44, WindowsXP (PRO SP2) and PHP4.3.8

MapServer version 4.4.0-beta2 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG
OUTPUT=WBMP OUTPUT=PDF OUTPUT=SWF SUPPORTS=PROJ SUPPORTS=FREETYPE
SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER
SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER INPUT=POSTGIS INPUT=OGR
INPUT=GDAL INPUT=SHAPEFILE

PHP 4.3.8 (cgi-fcgi) (built: Jul 13 2004 17:36:43)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies


The code to generate the shapefile is (four lines are created few lines
before):
//**************************************************
//Add four lines to the ShpObj
$shpObj = ms_newShapeObj(MS_SHAPE_POLYGON);
$shpObj->add($linW);
$shpObj->add($linS);
$shpObj->add($linE);
$shpObj->add($linN);

//Generate a unique filename
$szFileRect = $mapa->web->imagepath . uniqid("");

//Define a shapefile object
$shpRect = ms_newShapefileObj($szFileRect, MS_SHP_POLYGON);

//Create a new DBF attached with one attribute
$hDbf = dbase_create($szFileRect.".dbf",array(array("NAME", "C", 50, 0)));
if (!$hDbf)
   return;

//Add the shpobj to the shapefile
$shpRect->addShape($shpObj);

//Add the attribute
$atts[0] = "Experimento";
dbase_add_record($hDbf, $atts);

//Close the objects
$shpObj->free();
dbase_close($hDbf);
$shpRect->free
//**************************************************


Thanks,
--
Jorge Gaspar Sanz Salinas
Departamento de Ingeniería Cartográfica, Geodesia y Fotogrametría
Universidad Politécnica de Valencia



More information about the mapserver-users mailing list