dynamic point generation with php-mapscript

Gavin Simpson gavin.simpson at UCL.AC.UK
Fri Apr 15 08:36:48 EDT 2005


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.
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%



More information about the mapserver-users mailing list