[Mapserver-users] mapscript - queryByPoint help, simple Q

poff poff at sixbit.org
Thu Aug 28 10:51:06 EDT 2003


Thank you for your help - I tried to translate to phpmapscript and came up 
with:

$shp=ms_newShapeObj(MS_SHAPE_POINT);

... loop through points

	$oPoint=...

	$line=ms_newLineObj();
	$line->add($oPoint);
	$shp->add($line);
	$shp->index = $i;
	$i++;
...

$uLayer->addFeature($shp);
	
$my_point = ms_newpointObj();
$my_point->setXY($_REQUEST["mapa_x"],$_REQUEST["mapa_y"]);
	
$result=$uLayer->queryByPoint ($my_point,MS_SINGLE,-10);

But alas still "No Results"

Is there anything wrong with the above? I have the Dummy TEMPLATE in the 
map file.

I just found:

http://lists.gis.umn.edu/pipermail/mapserver-users/2003-April/003470.html

Who seems to have (had) exactly the same problem as I.

Any ideas?

Thanks again!

P

ps. I put the shpObj and addfeature inside the loop with no change in 
results.


On Thu, Aug 28, 2003 at 10:02:06AM +0000, Eric Bridger wrote:
> For such a layer you need to add the points as features in order for
> them to be queryable (as well as having the dummy TEMPLATE).
> 
> So for each point you can't just do $point->draw($map, $layer, $img,
> undef, $text) you also need to do:
> $layer->addFeature($shp). Since addFeature requires a shape object you
> need to create the shape:
> 
> my $line = new mapscript::lineObj();
> $line->add($point);
> my $shp = new mapscript::shapeObj($mapscript::MS_SHAPE_POINT);
> $shp->add($line);
> $shp->setBounds();
> $shp->{index} = $point_number;
> 
> Sorry these examples are in perl.  One neat thing, the $shp->{index}
> value can be any number, so if you have a numeric database key you can
> use that and queryByPoint() results will return the key. I you don't
> have that you'll need to create a lookup array which maps each database
> key value with the point number in the layer.
> 
> You need to draw the layer before queryByPoint can be called.
> 
> What I have been doing for dynamic point layers is to call both
> point->draw() and layer->addFeature() but not layer->draw().  With the
> point->draw() I can control the color, size, text, etc. of each point
> using the layers class.  The addFeature() makes the layer queryable w/o
> a shapefile.
> 
> 
> There is a perl example here:
> http://mapserver.gis.umn.edu/cgi-bin/wiki.pl?PerlMapScriptExamples35ex14
> 
> Eric
> 
> On Thu, 2003-08-28 at 13:06, poff wrote:
> > > Do you have a template defined for the layer?
> > 
> > No, sounds like I should!
> > 
> > I have never used templates before, but in the query layer, and the point 
> > class I added:
> > 
> > TEMPLATE "dummy"
> > 
> > And instead of No Records I get:
> > 
> > Warning: MapServer Error in msOpenSHPFile(): No (NULL) filename provided
> > 
> > So it seems like progress!
> > 
> > $result=$uLayer->queryByPoint ($my_point,MS_SINGLE,-10);
> > 
> > Generates this error, but I didn't think I'd need a SHP file or anything.
> > 
> > Any ideas how to proceed?
> > 
> > Thanks very much!
> > 
> > P
> > 
> > > Lowell
> > > 
> > > The following message was sent by poff <poff at sixbit.org> on Thu, 28 Aug
> > > 2003 09:54:37 +0200.
> > > 
> > > > Hello again,
> > > > 
> > > > I'm having problems getting any results with queryByPoint.
> > > > 
> > > > Basically I draw my map as usual then I try the following on the drawn   
> > > > layer:
> > > >   
> > > >         $my_point = ms_newpointObj();
> > > > 
> > > >         $my_point->setXY($_REQUEST["mapa_x"],$_REQUEST["mapa_y"]);
> > > > 
> > > >         $result=$uLayer->queryByPoint ($my_point,MS_SINGLE,-20);
> > > >   
> > > > I tried different buffers, zooming in etc. but I always get: "No matching 
> > > > Record(s) found"
> > > > 
> > > > The layer is drawn OK, and is simple as far as the mapfile goes (nothing 
> > > > apart from):
> > > > 
> > > > ...
> > > > STATUS ON
> > > > TYPE POINT
> > > > LABELCACHE FALSE
> > > > 
> > > > CLASS
> > > > 	SYMBOL
> > > > END
> > > > 
> > > > END
> > > > ...
> > > > 
> > > > The points are drawn in from a database, so if I could convert the 
> > > > $_REQUEST clicks into lat/lon I could just query the database instead of 
> > > > mapserver.
> > > > 
> > > > Has anyone got any light to shed on this? I'd be most grateful if someone 
> > > > could show me what I'm doing wrong, or suggest how to get the lat/long 
> > > > values. The archives didn't seem to have anyone in my situation - which 
> > > > suggested to me I'm missing something basic out.
> > > > 
> > > > Thanks in advance,
> > > >  
> > > > -- 
> > > > poff at sixbit.org 
> > > > SDF Public Access UNIX System - http://sdf.lonestar.org
> > > > 
> > > > Please do not carbon copy replies to me
> > > > _______________________________________________
> > > > 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
> > 
> > -- 
> > poff at sixbit.org
> > SDF Public Access UNIX System - http://sdf.lonestar.org
> > 
> > Please do not carbon copy replies to me
> > _______________________________________________
> > 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

-- 
poff at sixbit.org
SDF Public Access UNIX System - http://sdf.lonestar.org

Please do not carbon copy replies to me



More information about the mapserver-users mailing list