[Mapserver-users] Get attribute values from Shapefile
Ganesh Pulicherla
ganesh at cs.und.edu
Thu May 6 11:48:15 PDT 2004
Thanks a lot for replying so fast to my question.
I have tried the method you have given me, it gives me all the county names
but at the end it gives me an error. I guess, i donot have to make a query to
the layer, isn't it ? As far as i understand i have to open the shape file,
read the column names, and get all the shapes in an array. I was doing this
with the following code but it gives me an error
"Fatal error: [MapServer Error]: msLayerGetShape(): Invalid feature id"
I understand that the problem is i am trying to get the shapes even after all
the records are over, but how can i know the number of shapes(records) in the
dbf file.
$layer->open();
$items=$layer->getitems();
for ($i=0;$layer->getShape(-1,$i);$i++) //End loop if there is no shape
{ $data_shp = $layer->getshape(-1 , $i);
$layer->close();
$data = $data_shp->values;
echo $data[$items[0]]; //items[0] has the column name
}
$layer->close();
Can you tell me how to get the number of shapes/records in the dbf file so
that, i can exit the loop.
Thanks
Ganesh
> > Hello everyone
> >
> > We are using PHP/Mapscript on Linux. I have a quick question: How can i get
> the
> > attribute values of a Shape file using PHP/Mapscript ? For eg., In the
> Counties
> > shapefile, i want to retrieve all the county names under the C_NAME column
> in
> > the shapefile.
> > Any help is greatly appreciated.
> >
> > Thanks in advance
> > Ganesh
> >
> >
> >
> > _______________________________________________
> > Mapserver-users mailing list
> > Mapserver-users at lists.gis.umn.edu
> > http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
> >
> >
>
> This is simple. There is a way in php to use php's dbase functions. I
> could tell you that but there is a better way by using the mapscript
> functions itself. The advantage of this is that it gives you the values
> of all(?) queryable data. To get the field names use this:
>
> $layer->open();
> $items = $layer->getitems();
> $layer->close();
>
> To get the values from one query result use this:
>
> $layer->open();
> $data_shp = $layer->getshape($tile_index, $shape_index);
> $layer->close();
> $data = $data_shp->values;
>
> So you have two arrays - one with the field names and one with the
> values. Loop through the first to get the index of the field you search
> and take this index to the second array to get the value you want.
>
> Regards,
> Norbert
>
More information about the MapServer-users
mailing list