[mapserver-users] getting field names using mapscript

Jochen Wagner jochen.wagner8 at googlemail.com
Thu Nov 6 06:10:38 EST 2008


Hi list,
I would like to list from any layer ($ qlayer) only the field names of
the attribute tables and the number of objects in the table.

With this code it works already:

//loading mapfile
$map= ms_newMapObj($mapfilepath.'\
demo.map');

//set layer
$layer = $map->getLayerByName($qlayer);

//rectquery via mapextent
@$datQuery = $layer->queryByRect($map->extent);

//if query is successful
if ($datQuery == MS_SUCCESS) {
 //number of objects
 $resnum = $layer->getNumResults();
 echo 'Anzahl: '.$resnum.'<br>';

 $layer->open();
 $result = $layer->getResult(0);
 $shpobj = $layer->getShape($result->tileindex,$result->shapeindex);

 //read attribute table
 $attr = $shpobj->values;
 foreach($attr as $name=>$wert) {
     echo 'Feld: '.$name.'<br>';
 }
}
$shpobj->free();
$layer->close();

However, this method has the disadvantage using a layers with many
records the script takes a very long time, I guess because I have a
query about the whole issue run.
Has someone an approach for me, getting
1. the field names of the table and
2. the number of objects in the table
performantly using MapScript ?
thanks
Jo


More information about the mapserver-users mailing list