[mapserver-users] Fwd: queryByPoint - Street Layer ?

Hussain Hashmi tohashmi at gmail.com
Wed Jul 8 13:20:25 EDT 2009


hi

Can someone here guide me on this issue please.
My Objective is to get attribute values for any selected street (Line).
My client application is based on KaMap.
I have a similar solution for Polygons which works perfectly.


I am trying to query a street layer which gives me the following error.

Warning: [MapServer Error]: msQueryByPoint(): No matching record(s) found in
C:\... on line 84
Warning: [MapServer Error]: msShapefileOpen():
(/ms4w/maps/./city/./city/streets) in c:\... on line 84


MAPFILE
**********************
  LAYER
    NAME 'streets_Query'
    GROUP 'streets_Query'
    DATA './city/streets'
    TYPE line
    MAXSCALE 3001
    STATUS ON

    TOLERANCE 5
    TEMPLATE './_templates/Streets_Identify.html'
    METADATA
      "queryable" "true"
       searchfield "ANAME"
       fields "ZIP_CODE"
    END
  END #end layer



PHP MAPSCRIPT
**********************
//------- Get Input Parameters.
if (isset($_REQUEST['map']))    {$szMap = $_REQUEST['map'];} else {echo "map
not defined"; die;}
if (isset($_REQUEST['coords'])) {$coords =
explode(',',$_REQUEST['coords']);} else {echo "coordinate not defined";
die;}


//------- Load Mapscript Module.
$szPHPMapScriptModule = 'php_mapscript.'.PHP_SHLIB_SUFFIX;
if (!extension_loaded('MapScript')) {
 dl($szPHPMapScriptModule);
}

//------- Load Current Map file.
$szMapFile=str_replace('<<Map>>',$szMap,'/ms4w/maps/<<Map>>.map');
$oMap = ms_newMapObj($szMapFile);


//------- SETTING MAP EXTENT to query extent..
$mapExtent = $oMap->extent;
$oMap->setExtent($coords[0],$coords[1],
$coords[0]+0.000001,$coords[1]+0.000001);

//------- SETTING QUERY POINT
$point = ms_newPointObj();
$point->setXY($coords[0], $coords[1]);

//------- Initialize map query.
$oMap->preparequery();

//------- LOOP ON LAYERS and get identify results.
$tot = $oMap->numlayers;
for ($i = 0; $i < $tot; $i++) {
   //------- get map layer.
   $oLayer = $oMap->getLayer($i);

   //------- Verify Layer type
   if ($oLayer->name != 'streets_Query') continue;

   //------- Validate if query succeeds.
   $check_query = $oLayer->queryByPoint($point, MS_SINGLE, 0);
   if ($check_query != MS_SUCCESS) {continue;}

   //------- Open layer for data input.
    $oLayer->open();

   //------- Get the record values corresponding to a result tileindex.
   $oResultCache = $oLayer->getResult(0);
   $oShape = $oLayer->getShape($oResultCache->tileindex,
$oResultCache->shapeindex);
   $aValues = $oShape->values;

   //------- Get the field value.
   echo $aValues['ZIP_CODE'];  echo ";";

   //------- FREE SHAPE
   $oShape->free();
   $oLayer->close();
   break;
} // for i


Best regards,
Mir Hashmi



------------------------------
This message may contain confidential and/or privileged information. If you
have received this message in error,please notify us immediately by
responding to this e-mail and delete it from your system. Thanks for your
cooperation.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20090708/2f25cbe5/attachment.html


More information about the mapserver-users mailing list