[mapserver-users] (no subject)

Neil Fincham neil at asdf.co.nz
Mon Apr 13 15:47:41 PDT 2009


Hi All,

 

I am using ArcGIS 9.2 and MS4W.  I have two php_mapscipts, one I use on
shapefiles the other I use on SDE (Running on MSSQL 2005), the strange thing
is that running on shape files the (Almost) identical scripts behave in
different manors.  Here are the scipts;-

 

Just so you know;-

 

$ qLayer = the layer to be queried

$qField = Field to be Quried

$qSelect = The value to be selected

 

<?php

 

$layer = $map->getLayerByName($qLayer); // Select the layer

 

 

////////////////  Shapefile Version

if (($layer->querybyAttributes($qField, $qSelect, MS_MULTIPLE)) ==
MS_SUCCESS) {  

 

////////////////  SDE  Version

if (($layer->querybyAttributes($qField, "(" . $qField . "='" . $qSelect .
"')", mapscript.MS_MULTIPLE)) == MS_SUCCESS) { 

 

        $layer->open();  // If the query was successful open the layer

        echo $layer->getNumResults();

        for ($i=0; $i < $layer->getNumResults(); $i++) { // Loop through the
resaults

                $result = $layer->getResult($i);

                $shape  = $layer->getShape($result->tileindex,
$result->shapeindex);

                if ($i == 0) { // Set the bounds to the first resault
returned

                        $MinX = $shape->bounds->minx;

                        $MaxX = $shape->bounds->maxx;

                        $MinY = $shape->bounds->miny;

                        $MaxY = $shape->bounds->maxy;

                } else {  // Loop through the results and "push" out the
bounds

                        if ($MinX > $shape->bounds->minx) {

                                $MinX = $shape->bounds->minx;

                        }

                        if ($MaxX < $shape->bounds->maxx) {

                                $MaxX = $shape->bounds->maxx;

                        }

                        if ($MinY > $shape->bounds->miny) {

                                $MinY = $shape->bounds->miny;

                        }

                        if ($MinY < $shape->bounds->maxy) {

                                $MaxY = $shape->bounds->maxy;

                        }

                }

        }

        $layer->close(); // Close the layer

}

 

$map->setextent($MinX - $qBuffer, $MinY - $qBuffer, $MaxX + $qBuffer, $MaxY
+ qBuffer);

 

?>

 

If I run the shapfile version and there are 20 results it extends the bounds
around them BUT if I run the SDE version it finds the first result and uses
those extents.  I can ( echo $layer->getNumResults() ) to verify that.

 

Am I doing something wrong?  Is there a better way of doing this?

 

Thanks Heaps

 

Neil

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20090414/380a6f9e/attachment.htm>


More information about the MapServer-users mailing list