Open a shapefile and read its shapes' attributes
Pietro Giannini
pgiannini at BYTEWISE.IT
Thu Jul 12 07:51:43 PDT 2007
you are right!!
the code is:
<?php
$Path = '\ms4w\apps\map\routes.shp';
// the dbf file identifier:
$LineDBFFile = dbase_open("\ms4w\apps\map\routes.dbf",0);
$LineFile = ms_newShapefileObj($Path,-1);
$numshapes = $LineFile->numshapes;
if($numshapes > 0)
{
for($i = 0; $i < $numshapes; $i++)
{
$Line = $LineFile->getShape($i);
// note the index: '$i+1'
$aLineValues = dbase_get_record_with_names($LineDBFFile,$i+1);
$RouteName = $aLineValues["RouteName"];
printf($RouteName );
$Line->free();
}
}
$LineFile->free();
dbase_close($LineDBFFile);
?>
.................pg
--
Pietro Giannini
Bytewise srl - Area GIS
41°50'38.58"N 12°29'13.39"E
On Gio, Luglio 12, 2007 14:51, Guillaume Sueur wrote:
> Be careful, DBF index starts at 1, not 0 if I'm right !
>
>
> Pietro Giannini a écrit :
>> Hi Knight,
>>
>> the php_mapscript ShapefileObj object do not read the values of the
>> shapes
>> (?!?), it seems.
>> You must to read the values in the .dbf file; the dbf entries are in the
>> same order of the shapes.
>> Your php need the "php_dbase" extension.
>>
>> the code:
>>
>> <?php
>>
>> $Path = '\ms4w\apps\map\routes.shp';
>> // the dbf file identifier:
>> $LineDBFFile = dbase_open("\ms4w\apps\map\routes.dbf",0);
>> $LineFile = ms_newShapefileObj($Path,-1);
>> $numshapes = $LineFile->numshapes;
>> if($numshapes > 0)
>> {
>> for($i = 0; $i < $numshapes; $i++)
>> {
>> $Line = $LineFile->getShape($i);
>> $aLineValues = dbase_get_record_with_names($LineDBFFile,$i);
>> $RouteName = $aLineValues["RouteName"];
>> printf($RouteName );
>> $Line->free();
>> }
>> }
>> $LineFile->free();
>> dbase_close($LineDBFFile);
>>
>> ?>
>>
>> ciao
>> ...............................pg
>>
>>
>
> --
> Guillaume SUEUR
> Expert SIG et OpenSource
> NEOGEO
> 46 RUE MATABIAU
> 31000 TOULOUSE
> 06 65 58 88 82
> Site web : http://www.neogeo-online.net
>
>
More information about the MapServer-users
mailing list