[ka-Map-users] Searching using kaMap
Paul Spencer
pspencer at dmsolutions.ca
Fri Apr 21 09:29:30 EDT 2006
Thanks, Pēteris, I've added this to the wiki.
Cheers
Paul
On 21-Apr-06, at 9:09 AM, Pēteris Brūns wrote:
> Here is simple serch code for ka-map!
>
>
> <?
> include_once( '../include/config.php' );
>
> if (!extension_loaded('MapScript'))
> {
> dl( $szPHPMapScriptModule );
> }
>
> $results = array();
> $oMap = ms_newMapObj($szMapFile);
> //$map=$oMap; //jus for test
> $aLayers = $oMap->getAllLayerNames(); //get all layers in map file
> $tot = $oMap->numlayers; // total layers-count
> //--------------------------------------------------------------------
> ----------
>
> foreach($aLayers AS $layer) {
>
> $oLayer = $oMap->getLayerByName($layer);
>
> /* detect if group should be searchable In yor mapfile sercahable
> layer will be detected just like "queryable" "true" but her use
> "searchfield" "field_name"*/
> $szSearchfield = $oLayer->getMetaData('searchfield');
> if ($oLayer->getMetaData( "searchfield" ) != "") {
> $szSearchfield = $szSearchfield;
> //----------------------------------------------------
> //postgis connect (NOT TESTED IF is possible to test it culd be
> nice to know works it or not)
> if($oLayer->connectiontype == MS_POSTGIS){
> $searchstring = $szSearchfield . ' ~* \'' .
> $searchstring .'\' ';
> } else { // Shapefile
> $numclasses = $oLayer->numclasses;
> for($i = 1 ; $i < $numclasses; $i++){
> }
> // Second HACK: it work
> if($numclasses > 1){
> $class = $oLayer->getClass(0);
> // Match all
> $class->setExpression('/.*/');
> }
> }
>
> #---------------------------------------------------------------------
> -------------------------
> if(@$oLayer->queryByAttributes($szSearchfield,
> $searchstring, MS_MULTIPLE) == MS_SUCCESS ){ //MS_SUCCESS
> $oLayer->open();
> // Add element to results array for each result row
> for ($j=0; $j < $oLayer->getNumResults(); $j++)
> {
> // get next shape row
> $result = $oLayer->getResult($j);
> $shape = $oLayer->getShape($result->tileindex,
> $result->shapeindex);
> //var_dump($shape);
> // push the row array onto the results array
> $aTmp = $shape->values;
> //Calculate centroid
> $x_c = ($shape->bounds->minx + $shape->bounds-
> >maxx) / 2; //get x average value
> $y_c = ($shape->bounds->miny + $shape->bounds-
> >maxy) / 2; //get y average value
> //$aTmp = array_merge( $aTmp , array('x' =>
> $x,'y' => $y, 'id' => $result->shapeindex));
> $xmin = $shape->bounds->minx;
> $xmax = $shape->bounds->maxx;
> $ymin = $shape->bounds->miny;
> $ymax = $shape->bounds->maxy;
> $aTmp = array_merge( $aTmp , array('xmin' =>
> $xmin,'xmax' => $xmin,'ymin' => $ymin,'ymax' => $ymax,'x_c'=>
> $x_c,'y_c'=>$y_c, 'id' => $result->shapeindex));
> $results[$layername][] = $aTmp;
> // end for loop
> }
> //echo implode
> printer($results,$szSearchfield,$layer); //printing
> }
> else{
> print('No results returned!<br> Searched string:' .
> "\n" . $searchstring);
> }
> $oLayer->close();
> //----------------------------------------------------
>
> $results=flush($results);
> }
> else{
> $szSearchfield = "Not defined searchfield";
> }
> }
>
> function search($szSearchfield,$searchstring){
> //----------------------------------------------------
>
> }
> //-------------------------------------create print
> -----------------------------
> function printer($results,$szSearchfield,$layer){
> foreach($results as $key_val => $value) {
> echo "<br>Returned results for layer:<b>".$layer."</b><br>"; //
> top for each layer
> foreach($value as $key_val => $v) {
> $m = iconv("latin1", "UTF-8", $v[strtoupper($szSearchfield)]);
> $field=$v[strtoupper($szSearchfield)];
> //In $m place you can use $v[strtoupper($szSearchfield)] this is
> used for iconv etc..
> print "<a href=# onClick=\"myKaMap.zoomToExtents(".$v["xmin"].",".
> $v["ymin"].",".$v["xmax"].",".$v["ymax"].")\" onMouseOver=\"
> toolTip.moveGeo(".$v["x_c"].",".$v["y_c"]."), toolTip.setText('".
> $m."')\" onMouseOut=\"toolTip.move()\">".$m."</a><br>\n";
> }
> }
> }
> ?>
>
>
> links to working examples:
> http://85.234.167.38/js/ka-map/htdocs/index_tooltip_search.html
> and http://85.234.167.38/js/ka-map/htdocs/index_search.html
>
> On 4/21/06, Paul Spencer <pspencer at dmsolutions.ca > wrote:Ramesh,
>
> the bounds of the shape should be a RectObj. This means you can use
> the project() function to reproject it.
>
> see: http://mapserver.gis.umn.edu/docs/reference/phpmapscript-class/
> classes/rectobj
>
> You would need to do something like:
>
> $shp->bounds->project($oLayer->getProjection(),$oMap->getProjection
> ());
>
> I'm not sure if you can actually do this to a rectObj that is part of
> a shape. To be safe, you can do this:
>
> $rect = ms_newRectObj();
> $rect->setExtent($shp->bounds->minx,$shp->bounds->miny,$shp->bounds-
> >maxx,$shp->bounds->maxy);
>
> $rect->project($oLayer->getProjection(),$oMap->getProjection());
>
> Cheers
>
> Paul
>
> On 20-Apr-06, at 10:36 PM, ramesh karra wrote:
>
> > Hi paul,
> >
> > Hope it is OK to send this mail directly to you. If
> > not, let me know, I will send this to mapservers list.
> >
> > I made some progress in writing in the php script to
> > retrieve data from the dbf file. The data in the dbf
> > file is in lat+long projection and I am different
> > output projection to display the lines/points
> > correctly. How do I get the data retrieved from the
> > dbf file converted to my output projection?
> >
> > $oMap = ms_newMapObj($szMapFile);
> >
> >
> > $oLayer = $oMap->getLayerByName("mylayer");
> > $oLayer->queryByAttributes("Name", "xxxx",
> > MS_SINGLE);
> >
> > if ($oLayer->getNumResults() > 0) {
> > $r = $oLayer->getResult(0);
> > $oLayer->open();
> > $shp = $oLayer->getShape($r->tileindex,
> > $r->shapeindex);
> > $ext = $shp->bounds;
> > $shp->free();
> > $oLayer->close();
> >
> > print $ext->minx;
> > }
> >
> > Basically, the above script works and prints the value
> > but it is in lat+long projection (like 71.231789), I
> > need to convert this to my output projection. I am
> > hoping that there some function to do this because
> > mapserver is already doing it while displaying my map.
> >
> > Thanks
> > Ramesh
> >
> >
> > --- Paul Spencer <pspencer at dmsolutions.ca> wrote:
> >
> >> Ramesh, there are soooo many! I don't even know
> >> where to start. Try
> >> googling php ajax and see what you get :)
> >>
> >> Cheers
> >>
> >> Paul
> >>
> >> On 13-Apr-06, at 7:00 PM, ramesh karra wrote:
> >>
> >>> Thanks for the quick reply paul!
> >>>
> >>> I am relatively new to both PHP and AJAX. To
> >> achieve
> >>> what you suggested, could you also suggest some
> >> online
> >>> tutorial/examples or books?
> >>>
> >>> Thanks again,
> >>> Ramesh
> >>>
> >>> --- Paul Spencer < pspencer at dmsolutions.ca> wrote:
> >>>
> >>>> Ramesh,
> >>>>
> >>>> I would write a small php script to do the
> >>>> interaction with the dbf
> >>>> file and call it from my page using ajax.
> >> Actually,
> >>>> I'd use postgis
> >>>> but that's another discussion ;)
> >>>>
> >>>> Cheers
> >>>>
> >>>> Paul
> >>>>
> >>>> On 13-Apr-06, at 6:47 PM, ramesh karra wrote:
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> I have 100s of points in shapefiles(.shp,.shx
> >> and
> >>>>> .dbf).
> >>>>> that I use with my maps to show a place and
> >> label
> >>>> it.
> >>>>> Is it possible to access the .dbf file in kaMap?
> >>>>> I would like to implement a feature to search
> >> for
> >>>> a
> >>>>> point and when a point of interest is found,
> >> zoom
> >>>> to
> >>>>> that place. Is it possible to do this in kaMap
> >>>> without
> >>>>> having to create an XML file from .dbf file?
> >>>>>
> >>>>> Thanks
> >>>>> Ramesh
> >>>>>
> >>>>>
> >> __________________________________________________
> >>>>> Do You Yahoo!?
> >>>>> Tired of spam? Yahoo! Mail has the best spam
> >>>> protection around
> >>>>> http://mail.yahoo.com
> >>>>> _______________________________________________
> >>>>> ka-Map-users mailing list
> >>>>> ka-Map-users at lists.maptools.org
> >>>>>
> >>>>
> >>>
> >>
> > http://lists.maptools.org/mailman/listinfo/ka-map-users
> >>>>
> >>>>
> >>>
> >>
> > +-----------------------------------------------------------------+
> >>>> |Paul Spencer
> >>>> pspencer at dmsolutions.ca |
> >>>>
> >>>
> >>
> > +-----------------------------------------------------------------+
> >>>> |Applications & Software Development
> >>>> |
> >>>> |DM Solutions Group Inc
> >>>> http://www.dmsolutions.ca/|
> >>>>
> >>>
> >>
> > +-----------------------------------------------------------------+
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>> __________________________________________________
> >>> Do You Yahoo!?
> >>> Tired of spam? Yahoo! Mail has the best spam
> >> protection around
> >>> http://mail.yahoo.com
> >>
> >>
> > +-----------------------------------------------------------------+
> >> |Paul Spencer
> >> pspencer at dmsolutions.ca |
> >>
> > +-----------------------------------------------------------------+
> >> |Applications & Software Development
> >> |
> >> |DM Solutions Group Inc
> >> http://www.dmsolutions.ca/|
> >>
> > +-----------------------------------------------------------------+
> >>
> >>
> >>
> >>
> >>
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam? Yahoo! Mail has the best spam protection around
> > http://mail.yahoo.com
>
> +-----------------------------------------------------------------+
> |Paul Spencer pspencer at dmsolutions.ca |
> +-----------------------------------------------------------------+
> |Applications & Software Development |
> |DM Solutions Group Inc http://www.dmsolutions.ca/|
> +-----------------------------------------------------------------+
>
>
>
>
> _______________________________________________
> ka-Map-users mailing list
> ka-Map-users at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/ka-map-users
>
>
>
> --
> pb
> _______________________________________________
> ka-Map-users mailing list
> ka-Map-users at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/ka-map-users
+-----------------------------------------------------------------+
|Paul Spencer pspencer at dmsolutions.ca |
+-----------------------------------------------------------------+
|Applications & Software Development |
|DM Solutions Group Inc http://www.dmsolutions.ca/|
+-----------------------------------------------------------------+
More information about the ka-Map-users
mailing list