[mapserver-users] PHP-Mapscript, Posgresql, Postgis, dynamic query without a map file

Andrea D' Aversa andrea.daversa at plaganet.com
Thu Jan 5 01:26:56 PST 2012


Hi,
I'm creatingan applicationin php language.
I'm usingPHP-MapScript,PostGISforqueryfor aqueryByPointthat Imustreturn 
informationformattedtext/html butthe query resultis 0.
Thisis the code:

<?php
require_once("includes/config.inc.php");
function pixelToGeo($map,$x,$y) {
     # Convert x,y pixel values to georeferenced coords.  Returns a 
pointObj.
     $minx = $map->extent->minx;
     $miny = $map->extent->miny;
     $maxx = $map->extent->maxx;
     $maxy = $map->extent->maxy;

     $dx = $maxx - $minx;
     $dy = $maxy - $miny;

     $width = $map->width;
     $height = $map->height;

     $dxpp = (double)$dx/$width;
     $dypp = (double)$dy/$height;

     $geox = $minx + $dxpp*$x;
     $geoy = $maxy - $dypp*$y;

     $pointObj = ms_newPointObj();
     $pointObj->setXY($geox,$geoy);

     return $pointObj;
}
function FindPoint($point,$map,$radius, $layerName) {
     $qlayer = $map->getLayerByName($layerName);
     $check=$qlayer->queryByPoint($point, MS_MULTIPLE, $radius);
     $image=$map->drawQuery();
     if($check == MS_FAILURE){
         echo "<br><font size=4 color=red>There were no results</font><br>";
     }else {
         $qlayer->open();
         $numResults = $qlayer->getNumResults();
         echo "<br>Result Query= ".$numResults."<br>";
         if ($numResults != 0) {
             for ($i = 0; $i < $numResults; $i++) {
                 $query_result = $qlayer->getResult($i);
                 $shape = $qlayer->getShape($query_result->tileindex, 
$query_result->shapeindex);
                 $Lista_ele[]=$shape->values;
             }
         } else {
             $valido =0;
             $Lista_ele = "";
         }
         $qlayer->close();
         return $Lista_ele;
     }
} // end FindPoint

$mapfile_image_width=$_GET["WIDTH"];
$mapfile_image_height=$_GET["HEIGHT"];
$folderCache=$_GET["idf"];
$layerName=$_GET["layer"];
$SRID=$_GET["SRS"];

$x=$_GET["X"];
$y=$_GET["Y"];
$BBOX=explode(",",$_GET["BBOX"]);
$ms_imagepath=DIR_FOLDER;
$ms_imageurl=URL_FOLDER;

$map = ms_newMapObj('');

$map->outputformat->set('driver','imagemap');
$map->outputformat->set('mimetype','text/html; driver=imagemap');

$map->set('width',$mapfile_image_width);
$map->set('height',$mapfile_image_height);
$map->web->set('imagepath',$ms_imagepath);
$map->web->set('imageurl',$ms_imageurl);

$latlongProj = ms_newProjectionObj("EPSG:".$SRID);
$utmProj = ms_newProjectionObj("EPSG:900913");
$poPoint = ms_newpointobj();
$poPoint->setXY($BBOX[0], $BBOX[1]);
$poPoint->project($utmProj, $latlongProj);
$xmin=$poPoint->x;
$ymin=$poPoint->y;
$poPoint = ms_newpointobj();
$poPoint->setXY($BBOX[2], $BBOX[3]);
$poPoint->project($utmProj, $latlongProj);
$xmax=$poPoint->x;
$ymax=$poPoint->y;
$map->setextent($xmin, $ymin, $xmax, $ymax);

echo "<br>BBOX = ".$xmin.", ".$ymin.", ".$xmax.", ".$ymax."<br>";

// Add the only one layer.
$layer = ms_newLayerObj($map);
$layer->setConnectionType(MS_POSTGIS);
$layer->set('name',$layerName);
$layer->set('type',MS_LAYER_POLYGON);
$layer->set('status', MS_ON);
$layer->set('connection', "host=xxx port=xxx dbname=xxx user=xxx 
password=xxx");
$layer->set('data','the_geom from (select * from '.$layerName.') as foo 
using unique gid using SRID='.$SRID);
$layer->set("template", "");
$layer->set("dump", "true");

// Add some colors.
$class = ms_newClassObj($layer);
$style = ms_newStyleObj($class);
$style->color->setRGB(0, 255, 255);
$style->outlinecolor->setRGB(255, 255, 0);

$image = $map->draw();
$map->preparequery();
$point = ms_newpointobj();
$point->setXY($x,$y);
$geo_point = pixelToGeo($map,$point->x,$point->y);

echo "POINT TO CLICK = ".$geo_point->x. " , ".$geo_point->y;

print_r( FindPoint($geo_point,$map,-1, $layerName));
?>
My result is:
BBOX = 2395177.6101675, 4571367.7734744, 2612958.1665649, 4679392.0513538
POINT TO CLICK = 2470361.0341494 , 4612710.2888501
There were no results


What's wrong?
Allthe examplesIfound onlineusinga mapfile,but Idon't have amap file.

Thanks
_________________________________________
*Andrea D'Aversa*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20120105/9fa7dde8/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: andrea_daversa.vcf
Type: text/x-vcard
Size: 266 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20120105/9fa7dde8/attachment.vcf>


More information about the MapServer-users mailing list