[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)