[Mapserver-users] Re: $shp->{resultscache} empty queryByPoint php mapscript - help!

poff poff at sixbit.org
Fri Aug 29 23:58:14 EDT 2003


Hello, thanks a lot for your time!

Unfortunately changing the extent didn't help - still getting results, it's 
just nothing in the resutlscache.

In any case I was zooming in very close to each dot.

Here is a dump of $shp, the bounds look anormal, maybe it's here the 
problem?

(
    [_handle_] => Resource id #30
    [numlines] => 0
    [type] => 0
    [index] => 3
    [tileindex] => -1
    [classindex] => 0
    [numvalues] => 0
    [text] => test3
    [bounds] => rect Object
        (
            [_handle_] => Resource id #31
            [minx] => -1
            [miny] => -1
            [maxx] => -1
            [maxy] => -1
        )

)

Thanks,

P

ps. here is lineObj:

line Object
(
    [_handle_] => Resource id #25
    [numpoints] => 0
)

after tge add($oPoint)


On Fri, Aug 29, 2003 at 05:13:36PM +0000, Eric Bridger wrote:
> Well I won't say finally yet ... :-)
> 
> Now I'm confident that your problem is the EXTENT of your map and the
> SIZE.  Your extents are way too large, the whole globe.  Pick some more
> reasonable extents.  Then make sure your points are inside those
> extents.  Then, make sure that your map SIZE exactly matches the aspect
> ratio of your EXTENTS.
> E.g. I use these extents for the Gulf of Maine:
> 
> EXTENT -71.5 39.5 -63.0 46.0
> and this map size:
> SIZE 504 385
> 
> e.g. (46 - 39.5) / (71.5 / 63) =  6.5/8 = 504/385
> 
> Getting the map size to match the extents is crucial when translating
> your mouse click pixels to lat/lon.
> 
> Eric
> 
> 
> On Fri, 2003-08-29 at 20:21, poff wrote:
> > Hello all,
> > 
> > In a quest to get a php mapscript file to locate a click and return a 
> > database value, you will have seen my many postings!
> > 
> > I can get a result, only it's "blank"...
> > 
> > Well I've made a super simplified setup and here it is:
> > 
> > php_mapscript 3.6.6
> > windows nt/apache 1.3.8 - red hat linux
> > 
> > test.map
> > NAME TEST_MAP
> > 
> > EXTENT -180 -90 180 90
> > SIZE 370 331
> > IMAGETYPE PNG
> > 
> > UNITS DD
> > 
> > WEB
> > 
> >   IMAGEPATH "/home/user/tmp/img/"
> >   IMAGEURL  "/imgtmp/"
> > 
> > END
> > 	
> > LAYER
> > 	NAME "QueryLayer"
> > 	STATUS OFF
> > 	TYPE POINT
> > 	
> > 	TEMPLATE "dummy"
> > 	
> > 	CLASS
> > 		NAME "User Marker"
> > 		SYMBOL "marker"
> > 		COLOR 255 0 0
> > 		SIZE 4
> > 	END
> > END
> >   
> > SYMBOL
> > 	NAME 'marker'
> > 	TYPE ELLIPSE
> > 	POINTS 1 1 END
> > 	FILLED TRUE
> > END
> > 
> > END
> > 
> > the php file
> > 
> > <?php
> > 
> > dl("php_mapscript.so");
> > 
> > $map = ms_newMapObj("/home/user/maps/test.map");
> > 
> > $uLayer = $map->getLayerByName("QueryLayer");
> > $uLayer->set("status",MS_ON);
> > 
> > /* zoom/pan stuff */
> > 
> > if ( isset($_REQUEST["mapa_x"])) {
> > 
> > 	$zoom=($_REQUEST["zoom"]=="select") ? 0 : $_REQUEST["zoom"];
> > 	
> > 	$extent_to_set = explode(" ",$_REQUEST["extent"]);
> > 	
> > 	$map->setextent($extent_to_set[0],$extent_to_set[1],
> > 			$extent_to_set[2],$extent_to_set[3]);
> > 
> > 	$my_point = ms_newpointObj();
> > 	$my_point->setXY($_REQUEST["mapa_x"],$_REQUEST["mapa_y"]);
> > 
> > 	$my_extent = ms_newrectObj();
> > 	$my_extent->setextent($extent_to_set[0],$extent_to_set[1],
> > 			$extent_to_set[2],$extent_to_set[3]);
> > 
> > 	$zoom_factor = $zoom*$_REQUEST["power"];
> > 
> > 	$val_zsize = abs($zoom_factor);
> > 	
> > 	if ($zoom_factor == 0)
> > 		$zoom_factor=1;
> > 
> > 	
> > 	$map->zoompoint($zoom_factor,$my_point,$map->width,$map->height,
> > 			$my_extent);
> > 
> > 	$val_zsize = $_REQUEST["power"];
> > }
> > 
> > $image=$map->draw();
> > 
> > /* sample lat/lon values */
> > 
> > $points=Array(
> > "-0.1"=>"57",
> > "33"=>"33",
> > "66"=>"-55");
> > 
> > foreach ($points as $x => $y) {
> > 
> > 	$i++;
> > 	
> > 	$oPoint = ms_newPointObj();
> > 	$oPoint->setXY($x, $y);
> > 
> > 	$oPoint->draw($map, $uLayer, $image, 0, "test");
> > 	
> > 	$line = ms_newLineObj();
> >       	$line->add($oPoint);
> >       	
> >       	$shp=ms_newShapeObj(MS_SHAPE_POINT);
> >       	$shp->add($line);
> >       	$shp->{text}="test$i";
> >       	$shp->{index}=$i;
> >       	$uLayer->addFeature($shp);
> > 
> > }
> > 
> > /* if we are selecting a click */
> > 
> > if ( isset($_REQUEST["zoom"]) && $_REQUEST["zoom"]=="select") {
> > 	
> >         $dfKeyMapXMin = $map->extent->minx;
> >         $dfKeyMapYMin = $map->extent->miny;
> >         $dfKeyMapXMax = $map->extent->maxx;
> >         $dfKeyMapYMax = $map->extent->maxy;
> > 
> >         $dfWidthPix = doubleval($image->width);
> >         $dfHeightPix = doubleval($image->height);
> >         
> >         $nClickGeoX = GMapPix2Geo($_REQUEST['mapa_x'], 0, $dfWidthPix, 
> > $dfKeyMapXMin, 
> >                                    $dfKeyMapXMax, 0);
> >         $nClickGeoY = GMapPix2Geo($_REQUEST["mapa_y"], 0, $dfHeightPix, 
> > $dfKeyMapYMin, 
> >                                   $dfKeyMapYMax, 1);	
> >                                   
> > 	$my_point = ms_newpointObj();
> > 	$my_point->setXY($nClickGeoX,$nClickGeoY);
> > 	
> > 	$uLayer->queryByPoint($my_point, MS_SINGLE, 200);
> > 	
> > 	$results = $uLayer->{resultcache};
> > 	
> > 	$rslt = $uLayer->getResult(0);
> > 	
> > 	$database_id = $rslt->{shapeindex};
> > 	
> > 	echo $database_id;
> > 
> > 	// always -1
> > 	
> > 	exit;
> > 
> > }
> > 
> > $image_url=$image->saveWebImage(MS_PNG,1,1,0);
> > 
> > $extent_to_html = $map->extent->minx." ".$map->extent->miny." 
> > ".$map->extent->maxx." ".$map->extent->maxy;
> > 
> > ?>
> > 
> > <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="GET">
> > 
> > <input type=image name="mapa" width="<?=$map->width?>" 
> > height="<?=$map->height?>" src="<?=$image_url?>">
> > 
> > <br>
> > 
> > <input name=zoom value="1" type="radio"> zoom in<br>
> > <input name=zoom value="-1" type="radio"> zoom out<br>
> > <input name=zoom value="0" type="radio"> pan<br>
> > <input name=zoom value="select" type="radio"> select<br>
> > 
> > <input type="text" size="5" name=power class="theinput" VALUE="<?php echo 
> > $val_zsize?>"> zoom power
> > 
> > <INPUT TYPE=HIDDEN NAME="extent" VALUE="<?php echo $extent_to_html?>">
> > 
> > </form>
> > 
> > <?php
> > 
> > /* from gmap */
> > 
> > function GMapPix2Geo($nPixPos, $dfPixMin, $dfPixMax, $dfGeoMin, $dfGeoMax, 
> >                      $nInversePix) 
> > {
> >     
> >     $dfWidthGeo = $dfGeoMax - $dfGeoMin;
> >     $dfWidthPix = $dfPixMax - $dfPixMin;
> >    
> >     
> >     $dfPixToGeo = $dfWidthGeo / $dfWidthPix;
> > 
> >     if (!$nInversePix)
> >         $dfDeltaPix = $nPixPos - $dfPixMin;
> >     else
> >         $dfDeltaPix = $dfPixMax - $nPixPos;
> > 
> >     $dfDeltaGeo = $dfDeltaPix * $dfPixToGeo;
> > 
> > 
> >     $dfPosGeo = $dfGeoMin + $dfDeltaGeo;
> > 
> >     return ($dfPosGeo);
> > }
> > 
> > ?>
> > 
> > If you could see anything I'm doing wrong I'd be MOST grateful!!
> > 
> > Thanks,
> > 
> > P
> > -- 
> > poff at sixbit.org
> > SDF Public Access UNIX System - http://sdf.lonestar.org
> > 
> > Please do not carbon copy replies to me
> > 
> 
> 
> _______________________________________________
> Mapserver-users mailing list
> Mapserver-users at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-users

-- 
poff at sixbit.org
SDF Public Access UNIX System - http://sdf.lonestar.org



More information about the mapserver-users mailing list