MapScript Documentation (Re: [Mapserver-users] Re: problem getting bounds of poly shape)

pkishor_98 pkishor at geoanalytics.com
Thu Sep 25 21:50:12 EDT 2003


--- In mapserver-users at yahoogroups.com, "Lowell Filak" <lfilak at m...> wrote:
> The tcheck.pl sample does the same thing but I have not tested it in 4 yet.
> Try "undef $lineObj;" before doing the queryByShape, I noticed it in the
> tcheck.pl code and don't remember if it is there for just such an issue
> or if this is something new in 4.


sorry, but didn't do anything. In any case, I am making the circle in a sub-routine, so 
the lineObj doesn't really influence anything.

I get the same kind of erroneous results. So, could this be something buggy going on 
in the queryByShape code?




> 
> The following message was sent by "Puneet Kishor"
> <pkishor at g...> on Thu, 25 Sep 2003 15:00:55 -0500.
> 
> > Hi Lowell,
> > 
> > Thanks for you reply.
> > 
> > > -----Original Message-----
> > > From: Lowell Filak [mailto:lfilak at m...] 
> > ..
> > > The code you sent before actually constructed a shapeObj instead of a
> > > rectObj for the queryByRect.
> > > This is probably a legal thing to do but I just have to ask - are you
> > > sure the queryByRect is producing the correct result?
> > 
> > 
> > Yeah, I think I mistyped the code in my email message, however, the
> > problem still exists. Here is what I do... I create a circle shape with
> > its origin on the mouse click, and use it to select features from
> > another layer. I have $x0, $y0, and $radius (in map units, of course).
> > 
> > my $idlayerObj = getLayerByName("somelayer");
> > my $shpObj = new mapscript::shapeObj($mapscript::MS_SHAPE_POLYGON);
> > my $lineObj = new mapscript::lineObj();
> > my $pointObj = new mapscript::pointObj();
> > # make a circle
> > for (my $i = 0; $i <= 360; $i = $i + 10) {
> >   $pointObj->{x} = $x0 + (cos($i * (22 / 7) / 180) * $radius);
> >   $pointObj->{y} = $y0 - (sin($i * (22 / 7) / 180) * $radius);
> >   $lineObj->add($pointObj);
> > }
> > $shpObj->add($lineObj);
> > $idlayerObj->queryByShape($mapObj, $shpObj);
> > my $numbyshape = $idlayerObj->{resultcache}->{numresults};
> > 
> > The above results in $numbyshape equal to several hundred. That is wrong
> > given my data. So, I do the following --
> > 
> > $shpObj->setBounds;
> > my $rectObj = $shpObj->{bounds};
> > $idlayerObj->queryByRect($mapObj, $rectObj);
> > my $numbyrect = $idlayerObj->{resultcache}->{numresults};
> > 
> > This results in $numbyrect being the more correct 10 or 12.
> > 
> > Yup, the latter is correct... The data are essentially parcel centroids
> > being selected in a 200 ft radius of the mouse click... 10-12 parcels
> > within a 400 feet diameter circle makes sense. Not only the latter
> > selection is correct, the shape and the selected points also draw
> > correctly... The circle with 10-12 centroids within that circle.
> > 
> > Strange.
> > 
> > 
> > 
> > ..
> > > > 
> > > > I've added this in the bz as an enhancement request. Part of the
> > > problem is that us 
> > > > non-developers still have to first figure out whether or not our
> > > problem lies with us 
> > > > screwing up or with the code. We can only do that via the list. Of
> > > course, once it is 
> > > > determined that indeed the problem is a "bug" then it can 
> > > be added to
> > > the zilla.
> > > > 
> > > > 
> > > > For example, I am still having a problem with queryByShape, and I
> > > don't know if I am 
> > > > doing something wrong or if this is a bug.
> > > > 
> > > > My problem is thus --
> > > > 
> > > > creating an shapeObj and then using it to queryByShape 
> > > against a layer
> > > returns way 
> > > > more results than should.
> > > > 
> > > > getting the bounds of the above shape and creating a 
> > > rectObj and then
> > > using 
> > > > queryByRect against the same layer returns the correct number of
> > > results (way less 
> > > > than that returned by queryByShape).
> > > > 
> > > > now, I have to first determine if I am doing something 
> > > obviously wrong
> > > or if this is a 
> > > > bug. Then I can act accordingly.
> > > > 
> > > > Many thanks.
> > > > 
> > > > _______________________________________________
> > > > Mapserver-users mailing list
> > > > Mapserver-users at l...
> > > > http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
> > > 
> > > 
> > 
> > _______________________________________________
> > Mapserver-users mailing list
> > Mapserver-users at l...
> > http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
> 
> _______________________________________________
> Mapserver-users mailing list
> Mapserver-users at l...
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-users




More information about the mapserver-users mailing list