dynamic point generation with php-mapscript

Dan Taylor logicalgenetics at GMAIL.COM
Fri Apr 15 09:24:29 EDT 2005


Sad to say that I don't know.  Sorry!

Dan


On 4/15/05, Gavin Simpson <gavin.simpson at ucl.ac.uk> wrote:
> Dan Taylor wrote:
> > This is how I do it.  Very basic though...
> >
> > function addpoints($map, $name, $points, $r, $g, $b, $symbol,
> > $font_face, $font_size)
> > {
> >   // Create a layer
> >   $layer = ms_newLayerObj($map);
> >   $layer->set("type", MS_LAYER_POINT);
> >   $layer->set("name", $name);
> >   $layer->set("status", MS_ON);
> >
> >   // Create the default class and set up label
> >   $cl = ms_newClassObj($layer);
> >   $cl->set("status", MS_ON);
> >   $cl->label->set("size", $font_size);
> >   $cl->label->set("type", "MS_TRUETYPE");
> >   $cl->label->set("font", $font_face);
> >   $cl->label->set("position", MS_LC);
> >   $cl->label->color->setRGB($r, $g, $b);
> >   $cl->label->outlinecolor->setRGB(0, 0, 0);
> >
> >   // Create and set up style
> >   $sty = ms_newStyleObj($cl);
> >   $sty->set("symbolname", $symbol);
> >   $sty->color->setRGB($r, $g, $b);
> >   $sty->outlinecolor->setRGB(0, 0, 0);
> >
> >   // Add points
> >   for($i = 0; $i < sizeof($points); $i++)
> >   {
> >     $point = ms_newPointObj();
> >     $point->setXY($points[$i]->x, $points[$i]->y);
> >
> >     $line = ms_newLineObj();
> >     $line->add($point);
> >
> >     $shape = ms_newShapeObj(MS_SHAPE_POINT);
> >     $shape->add($line);
> >     $shape->set("text", $points[$i]->text);
> >
> >     $layer->addFeature($shape);
> >   }
> > }
> >
> > Dan
> 
> Cheers for this Dan,
> 
> So how do you query the layer you created dynamically? From what I read
> in the archives etc, the index needs to be set to use queryByPoint() on
> the dynamic layer and the released code (4.4.2 - I just compiled it to
> confirm and it is broken, index is readonly) of mapscript. Index gets
> set as -1 for all shapeObj's added to the layer and queryByPoint doesn't
> work. I'd be interested to know how are querying the dynamic layer so
> that you can determine which point was clicked on and therefore, which
> row of data to extract from a database.
> 
> All the best,
> 
> Gav
> > On 4/15/05, Gavin Simpson <gavin.simpson at ucl.ac.uk> wrote:
> >
> >>Wouter Schaubroeck wrote:
> >>
> >>>Hi,
> >>>
> >>>I was wondering if anyone would know some good examples of generating
> >>>dynamic points with php mapscript? For example: just pulling the points
> >>>from (in my case: a MySQL db) a database and displaying them without a
> >>>shape file? And is it possible to do queries on that layer, or
> >>>displaying the attribute data? I assume not, because there's no
> >>>associated dbf file.
> >>>
> >>>Best regards,
> >>>
> >>>Wouter Schaubroeck
> >>>
> >>>
> >>
> >>See the PHP/Mapscript WIKI - which has such an example:
> >>
> >>http://mapserver.gis.umn.edu/cgi-bin/wiki.pl?PHPMapScriptAddPoint
> >>
> >>Querying that layer is more problematic. You need to create a shapeObj
> >>and addFeature()'s to that shapeObj etc:
> >>
> >>http://mapserver.gis.umn.edu/cgi-bin/wiki.pl?PerlMapScriptExamples42ex1
> >>shows you how to do this with Perl which is easily translated to PHP (I
> >>did it yesterday but my code is in a mess of other trial stuff just
> >>now), with one major exception! PHP/Mapscript is broken at the moment
> >>and you can't set the index of a shapeObj added to a layer (it needs to
> >>be numeric, integer, incrementing in steps of 1 - so not a arbitrary
> >>ordering of ID's from a mysql table index, currently it returns -1
> >>error), which you need to have queryByPoint do anything useful etc. See:
> >>http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=806
> >>
> >>A patch has been accepted for this bug so you can download a nightly or
> >>the cvs of mapserver (or replace php_mapscript.c in the tarball of
> >>mapserver4.4.2 with the one in that bug report) and roll your own
> >>php_mapscript.so.
> >>
> >>After a few errors I have just gotten this compiling as well (a
> >>nightly), so maybe I can query that layer after all... :-)
> >>
> >>Please note - I'm a mapserver virgin so I've been bumbling through this
> >>for only a day or so - feel free to email me further about this but I
> >>can't guarantee I'll be able to help much beyond providing some very
> >>early php code.
> >>
> >>G
> >>
> >>--
> >>%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
> >>Gavin Simpson                     [T] +44 (0)20 7679 5522
> >>ENSIS Research Fellow             [F] +44 (0)20 7679 7565
> >>ENSIS Ltd. & ECRC                 [E] gavin.simpsonATNOSPAMucl.ac.uk
> >>UCL Department of Geography       [W] http://www.ucl.ac.uk/~ucfagls/cv/
> >>26 Bedford Way                    [W] http://www.ucl.ac.uk/~ucfagls/
> >>London.  WC1H 0AP.
> >>%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
> >>
> >
> >
> >
> 
> --
> %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
> Gavin Simpson                     [T] +44 (0)20 7679 5522
> ENSIS Research Fellow             [F] +44 (0)20 7679 7565
> ENSIS Ltd. & ECRC                 [E] gavin.simpsonATNOSPAMucl.ac.uk
> UCL Department of Geography       [W] http://www.ucl.ac.uk/~ucfagls/cv/
> 26 Bedford Way                    [W] http://www.ucl.ac.uk/~ucfagls/
> London.  WC1H 0AP.
> %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
> 


-- 
Dan Taylor

Software Development Engineer, JTL Systems Ltd
PhD Student, Reading University, UK

http://www.logicalgenetics.com



More information about the mapserver-users mailing list