[Mapserver-DE] queryByShape Quellkode Beispiel gesucht

Eduard Walgram walgram at utanet.at
Mon Sep 19 18:47:46 CEST 2005


Hallo Sebastian!
Danke für den Tipp, hat wunderbar geklappt:
Hier noch der Quellkode für alle die wissen wollen wie man den ersten shape 
per queryByPoint aus einem Mausklick bekommen kann:

-g edi
/************************************************************************/
function GMapDumpQueryResults()
{
    GLOBAL $gpoMap, $gbShowQueryResults;

    if (! $gbShowQueryResults )
    {
        printf(" ");
        return;
    }

    $numResultsTotal = 0;

    for($iLayer=0; $iLayer < $gpoMap->numlayers; $iLayer++)
    {
        $oLayer = $gpoMap->GetLayer($iLayer);

        $numResults = $oLayer->getNumResults();

        if ($numResults == 0)
            continue;  // No results in this layer

        // Open layer's table... take the list of fields to display from
        // the "RESULT_FIELDS" metadata in the layer object.
        $oLayer->open();


        //
        // One row in table for each selected record
        //

        for ($iRes=0; $iRes < $numResults; $iRes++)
        {
            $oRes = $oLayer->getResult($iRes);

            $oShape = $oLayer->getShape($oRes->tileindex,$oRes->shapeindex);
// + ewal
$status = @$gpoMap->queryByShape($oShape) ;
if ( $status == MS_SUCCESS ) {
  echo "msg from GMapDumpQueryResults - MS_SUCCESS:: status = $status<br />";
  EMapDumpQueryResults() ;
  return ;
} else {
  echo "msg from GMapDumpQueryResults - MS_FAILURE:: status = $status<br />";
}
// - ewal
............



Am Sonntag, 18. September 2005 14:40 schrieb Sebastian Albrecht:
> Hallo Eduard,
>
> > ich versuche queryByShape in php mapscript richtig anzuwenden.
> > Bitte um Hilfe, wie ist hier die vorgehensweise.
> > Ein wenig Beispielkode wenn verfügbar wäre toll.
>
> Zunächst brauchst du ein LayerObj-Objekt, auf dem du die Abfrage
> durchführst und ein ShapeObj-Objekt (vom Typ MS_SHAPE_POLYGON), welches
> die geographischen Grenzen für deine Abfrage enthält.
>
> Das Layer-Objekt bekommst du aus deinem MapObj-Objekt (mit den Methoden
> getLayer oder getLayerByName) und ein ShapeObj-Objekt kannst du selber
> erstellen oder ebenfalls aus vorhandenen Layern beziehen.
>
> Dieses Beispiel gibt die Anzahl abgefragter Datensätze zurück, sowie
> jede einzelne Shape-Datensatznummer.
>
> $result = $layer->queryByShape($shape);
> if($result == MS_SUCCESS)
> {
>      $numResults = $layer->getNumResults();
>      echo "Anzahl gefundener Datensätze: " . $numResults . "\n";
>      for($i=0; $i<$numResults; $i++)
>      {
>          $resultObj = $layer->getResult($i);
>          echo "Shape-Index: " . $resultObj->shapeindex . "\n";
>          echo " Tile-Index: " . $resultObj->tileindex . " \n";
>          echo "Class-Index: " . $resultObj->classindex . " \n";
>          echo "\n";
>      }
> }
>
> Mit dem shapeindex und dem tileindex kannst du nun mittels
> $layer->getShape(shapeindex, tileindex) jedes einzelne Shape-Objekt
> beziehen und ggf. dessen Attribute ausgeben oder oder oder.
>
> Die einzelnen Klassen und Methoden sind in der PHP/Mapscript-Referenz
> auf der Mapserver-Seite sehr gut beschrieben und wenn man dort
> durchguckt, erhält man einen ganz guten Überblick wer was wie
> zurückliefert und mit welchen Argumenten man wiederum andere Methoden
> aufrufen kann.
>
> Hoffe das hat etwas gebracht. Ansonsten weiterfragen... ;)
>
> Sebastian
>
> _______________________________________________
> Mapserver-DE mailing list
> Mapserver-DE at freegis.org
> https://freegis.org/mailman/listinfo/mapserver-de




This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)