[mapserver-users] getting field names using mapscript
Steve Lime
Steve.Lime at dnr.state.mn.us
Thu Nov 6 08:59:55 PST 2008
If you're using a shapefile however you can do something like:
// in perl
$shapefile = new mapscript::shapefileObj('myshapefile', -1);
print $shapefile->{numshapes};
There is a getNumFeatures() method for layer objects although I don't know if it is widely implemented.
Steve
>>> On 11/6/2008 at 8:10 AM, in message
<75b4b93e0811060610r44cba0e0x126a9279cbf108a at mail.gmail.com>, "Umberto
Nicoletti" <umberto.nicoletti at gmail.com> wrote:
> Sorry don't know that :-(
>
> On Thu, Nov 6, 2008 at 2:32 PM, Jochen Wagner <jochen.wagner8 at googlemail.com>
> wrote:
>> thanks, works fine and fast for each layer:
>>
>> $layer->open();
>> $myitems = $layer->getItems();
>>
>> foreach($myitems as $item) {
>> echo $item."<br>";
>> }
>> $layer->close();
>>
>> but how can I get the numer of records without a query?
>> Jo
>>
>>
>> 2008/11/6 Umberto Nicoletti <umberto.nicoletti at gmail.com>:
>>> You can use the items array on the layer object to get the field names
>>>
>>> On Thu, Nov 6, 2008 at 12:10 PM, Jochen Wagner
>>> <jochen.wagner8 at googlemail.com> wrote:
>>>> 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
>>>> _______________________________________________
>>>> mapserver-users mailing list
>>>> mapserver-users at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>>
>>>
>>
More information about the MapServer-users
mailing list