[Mapserver-users] Re: $shp->{resultscache} empty queryByPoint php mapscript - help!
poff
poff at sixbit.org
Fri Aug 29 20:58:14 PDT 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