AW: [Mapserver-DE] Query via Mapscript?
Peter Korduan
peter.korduan at uni-rostock.de
Mit Jul 20 10:09:56 CEST 2005
> -----Ursprüngliche Nachricht-----
> Von: mapserver-de-bounces at freegis.org [mailto:mapserver-de-
> bounces at freegis.org] Im Auftrag von Ralph Anthes
> Gesendet: Dienstag, 19. Juli 2005 13:02
> An: mapserver-de at freegis.org
> Betreff: [Mapserver-DE] Query via Mapscript?
>
> Hallo Liste,
>
> ich verzweifele irgendwie am Query via Mapscript. Es kommt immer
> folgende Meldung:
> *Warning*: [MapServer Error]: msQueryByPoint(): No matching record(s)
> found. in */home/anthes/gis/mapserver/europa/query.php* on line *56
>
> *Was mache ich falsch bzw. wo ist der Denkfehler?
>
> Vielen Dank
> Ralph
>
> Hier meine Abfrage:
> $map->preparequery();
> $shapepath = $map->shapepath;
> $my_point = ms_newpointObj();
> $my_point->setXY($HTTP_POST_VARS["map_x"],$HTTP_POST_VARS["map_y"]);
> for ($i = 1; $i <= count($pLayer); $i++) {
> $layer = $map->getLayerByName($pLayer[$i]);
> if ($pLayerStatus[$i] == "ON") {
> $layer->set("status",MS_ON);
> if ($layer->queryByPoint($my_point, MS_SINGLE, 0) == MS_SUCCESS ) {
> for ($j=0; $j<$layer->getNumResults(); $j++) {
> $result = $layer->getResult($j);
> printf("lay=%d, res=%d, si=%d, ti=%d, ci=%d\n",
> $i, $j, $result->shapeindex, $result->tileindex,
> $result->classindex);
> }
> }
> }
> if ($pLayerStatus[$i] == "ON") {
> $layer->set("status",MS_ON);
> } else {
> $layer->set("status",MS_OFF);
> }
>
> Hier ein Ausschnitt aus meinem Mapfile:
> ############################################################
> Kartenbeschreibung
> DEBUG ON
> NAME EUROPA
> IMAGETYPE PNG
> SIZE 800 600
> STATUS ON
> SHAPEPATH "/home/anthes/gis/mapserver/europa/data/"
> FONTSET "fonts/fonts.list"
> IMAGECOLOR 86 131 249
>
> ############################################################
> Projektionseinstellung
> #################### Mode latlong
> EXTENT -11.1185 40 25.5 54
> PROJECTION "init=epsg:31297" END # 4326" END
> UNITS DD
>
> ############################################################ QUERY
> anschalten
> QUERYMAP
> STATUS ON
> STYLE HILITE
> END
>
> ############################################################ Layer
> Stadtgebiete
> LAYER
> NAME CityArea
> TYPE POLYGON
> STATUS OFF
> DATA city_area
> TOLERANCE 10
> # LABELREQUIRES ([Cities] = 1)
> LABELITEM 'NAME'
> LABELMAXSCALE 1000000
> CLASS
> TEMPLATE dummy.foo
> NAME "Citiesarea"
> COLOR 255 150 130
> LABEL
> POSITION AUTO
> PARTIALS TRUE
> TYPE TRUETYPE
> FONT "Arial-bold"
> ANTIALIAS TRUE
> SIZE 8
> COLOR 0 0 0
> MAXSIZE 15
> MINSIZE 5
> OUTLINECOLOR 255 255 255
> WRAP " "
> END
> END
> TOLERANCE 10
> TOLERANCEUNITS PIXELS
> END
>
> LAYER
> NAME CityQuery
> TYPE QUERY
> STATUS ON
> DATA city_area
> CLASS
> TEMPLATE dummy.foo
> END
> TOLERANCE 10
> TOLERANCEUNITS PIXELS
> END
>
>
>
> --
> Dipl.-Ing. Ralph Anthes
>
> Ingenieurgesellschaft für Verkehrs- und Eisenbahnwesen mbH
> Vahrenwalder Platz 3, 30165 Hannover
> Telefon: 0511/984228-18
> Fax: 0511/984228-29
> http://www.ive-mbh.de
>
[Peter Korduan: ]
Hallo Ralph
Wie die Meldung sagt, findet queryByPoint keine Punkte an der Stelle, die
mit $my_point übergeben wird zur Suche.
Überprüfe doch mal was in $HTTP_POST_VARS["map_x"],$HTTP_POST_VARS["map_y"]
drin steht. Wenn es einfach nur die Pixelkoordinaten Deiner Karte sind, die
mit einem <input img="[img]"... übergeben wurden, kann MapServer nichts
finden. Dann musst Du die Pixelwerte erst umrechnen in Dein System, in dem
die Daten vorliegen. Das über MapExtent und Scale.
Viel Glück
Dr.-Ing. Peter Korduan
Universität Rostock, Institut für Management ländlicher Räume
Professur für Geodäsie und Geoinformatik
Justus v. Liebig Weg 6, 18059 Rostock
Tel.: ++49-381-4982164, Fax: ++49-381-4982188
WWW: http://www.auf.uni-rostock.de/gg/korduan
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)