PHP MapScript queries
Stephen Lime
steve.lime at dnr.state.mn.us
Thu Feb 1 14:16:23 PST 2001
Here's a perl sample that does a rectangle query on a layer. I assume the PHP/MapScript
code would look *very* similar. Note that this will get easier in the upcoming release since
result objects are gone and the results of a query are part of a layer.
#
# This function uses an arbitrary rectangle object to query against
# a USGS map series (e.g. 24k, 100k, or 250k) to compile a list of
# all maps that cover a certain area. Once the query is done the results
# are stepped through and a field from the shapefile .dbf file is extracted
# for each matching record.
#
# (taken from drgs.pl - http://maps.dnr.state.mn.us/tomo/)
#
sub maplist() {
my($extent, $layername) = @_;
my $map = new mapObj($searchmap) or &error('Unable to load $searchmap.');
my $layer = $map->getLayerByName($layername) or &error("Layer $layername not found in $searchmap.");
$layer->{status} = $mapscript::MS_ON;
my $results = $layer->queryUsingRect($map, $extent) or &error('Query failed.');
my $table = '';
my @list = '';
for(my $i=0; $i<$results->{numresults}; $i++) {
my $data = $results->next();
if(!$table) {
$table = new XBase $map->{shapepath}.'/'.$layer->{data}.'.dbf' or &error(XBase->errstr);
}
(my $deleted, $list[$i]) = $table->get_record($data->{shape}, 'TILE_NAME');
}
$table->close();
$results->free();
undef $map;
return(join(', ', @list));
}
Hope this helps.
Steve
Stephen Lime
Internet Applications Analyst
Minnesota DNR
500 Lafayette Road
St. Paul, MN 55155
651-297-2937
>>> Thorsten Fischer <frosch at cs.tu-berlin.de> 02/01/01 04:06PM >>>
Maybe I should clarify my question: I already have a
rectObj, and I got a mapObj with a layer and a shapefile loaded.
What do I have to build into the map file and/or my php mapscript to
get hold on a queryResultObj that answers the question: what shapes are
visible in that rectangle?
I am quite clueless at that point right now, and I know there must
be a - simple? - way to make it work.
Thorsten
More information about the MapServer-users
mailing list