[Mapserver-users] Query of Point in multiple layers

Lowell Filak lfilak at medinaco.org
Tue Aug 26 09:47:41 EDT 2003


If it helps, 5.6.1 should work just fine, we use it here without a problem.
Lowell

The following message was sent by "Stephen Clark"
<stephen.clark at focus.ca> on Mon, 25 Aug 2003 14:03:34 -0700.

> Eric,
> 
> Which version of perl are you using?
> 
> my version is 5.6.1.
> 
> Stephen
> 
> ----- Original Message -----
> From: "Eric Bridger" <eric at gomoos.org>
> To: "Stephen Clark" <stephen.clark at focus.ca>
> Cc: "Mapserver List" <mapserver-users at lists.gis.umn.edu>
> Sent: Monday, August 25, 2003 8:28 AM
> Subject: Re: [Mapserver-users] Query of Point in multiple layers
> 
> 
> > This is certainly possible using mapscript but you will need to query
> > each layer individually and then save the results for each
> > queryByPoint() on each polygon layer.
> > The map file does allow you to put layers in a group using the GROUP
> > tag, but I'm not sure if that would allow you to query all the layers at
> > once.
> >
> > Remember, querying a shapefile layer only returns the record number of
> > the attribute data in the shapefile dbf file.  So for each query, you
> > need to open the DBF file and get the attributes you want.
> >
> > Below is some perl code which you should be able to adapt to PHP. Note:
> > this is for mapserver 3.6.6 It gets the first attribute in the dbf file.
> >
--------------------------------------------------------------------------
> ------
> > use mapscript:
> > use XBase;
> >
> > my @layers = ('states', 'counties', 'civil_divisions');
> > my @results = ();
> > foreach my $layer (@layers){
> >    my @tmp = queryLayer($layer, $map, $click_pt, 1);
> >    push @results, @tmp;
> > }
> > #########################################
> > # Run queryByPoint on a layer and lookup the $fld number in the XBase
> > dbf file.
> > #########################################
> > sub queryLayer{
> >     my($layer, $map, $point, $fld) = @_;
> >     my @results = ();
> >
> >     my $layerObj = $map->getLayerByName($layer);
> >     $layerObj->{status} = $mapscript::MS_ON;
> >     if(!$layerObj->queryByPoint($map,$point,$mapscript::MS_MULTIPLE,
> > undef)){
> >         # Open the db handle.
> >         my $dbfile = $layerObj->{data};
> >         $dbfile .= '.dbf';
> >         my $hDBF = new XBase "$dbfile" or warn XBase->errstr . "\n";
> >         my $results = $layerObj->{resultcache};
> >         my $num_results = $results->{numresults};
> >         for my $i (0..$num_results-1){
> >             my $rslt = $layerObj->getResult($i);
> >             # record is the record number in the shape dbf file.
> >             my $record = $rslt->{shapeindex};
> >             my @row = $hDBF->get_record_nf($record, $fld) or warn
> > $hDBF->errstr . "\n";
> >             push @results, $row[1];
> >         }
> >         $hDBF->close();
> >     }
> >     return @results;
> > }
> >
> > On Mon, 2003-08-25 at 17:13, Stephen Clark wrote:
> > >
> > > I was wondering if there is the capability using php or mapscript to
> query
> > > multiple layers (each of polygons) and retrieve the list of which
> polygon
> > > this Point falls within?
> > >
> > >
> > >
> > > thanks,
> > > Stephen Clark
> > >
> > > _______________________________________________
> > > Mapserver-users mailing list
> > > Mapserver-users at lists.gis.umn.edu
> > > http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
> > >
> >
> >
> > _______________________________________________
> > Mapserver-users mailing list
> > Mapserver-users at lists.gis.umn.edu
> > http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
> >
> 
> _______________________________________________
> Mapserver-users mailing list
> Mapserver-users at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-users




More information about the mapserver-users mailing list