CREATE OR REPLACE FUNCTION schnittpunkt(gid_a integer,gid_b integer)
RETURNS geometry AS
$BODY$
DECLARE
schnittpunkt geometry;
i integer;
j integer;
BEGIN
RAISE NOTICE 'BeGINN';
schnittpunkt:= astext(intersection(a.the_geom, b.the_geom)) from (select the_geom from ways where gid=$1)a, (select the_geom from ways where gid = $2) b;
i:=NumPoints(the_geom) from ways where gid=$1;
FOR j IN 1 .. i LOOP
RAISE NOTICE 'Anzahl der Punkte:%',j;
END LOOP;
RETURN schnittpunkt;
RETURN i;
END;
$BODY$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
Die Funktion errechnet mir über PostGIS den Schnittpunkt zweier Geometrien (funktioniert auch sauber).
Zudem wird mir eine Anzahl von Knotenpunkten einer Straßengeometrie ausgegeben (auch korrekt).
Was merkwürdig ist:
Ich rufe die Funktion auf und erhalte alle Notices doppelt, als ob die Funktion doppelt aufgerufen wird:
test=# SELECT schnittpunkt(14730,14717);
NOTICE: BeGINN
NOTICE: BeGINN
NOTICE: Anzahl der Punkte:1
NOTICE: Anzahl der Punkte:2
NOTICE: Anzahl der Punkte:3
NOTICE: Anzahl der Punkte:4
NOTICE: Anzahl der Punkte:5
NOTICE: Anzahl der Punkte:6
NOTICE: Anzahl der Punkte:7
NOTICE: Anzahl der Punkte:1
NOTICE: Anzahl der Punkte:2
NOTICE: Anzahl der Punkte:3
NOTICE: Anzahl der Punkte:4
NOTICE: Anzahl der Punkte:5
NOTICE: Anzahl der Punkte:6
NOTICE: Anzahl der Punkte:7
schnittpunkt
Hallo allerseits, zunächst einmal vielen Dank für die Antworten.
Es liegt leider nicht daran, dass VAriablenname und Funktionssname gleich sind.
“Kannst du mal bitte den Ausführungsplan für deine Anfrage posten?”
Was genau meinst Du damit. Meinst Du das Ziel der Funktion. Es geht letztlich darum eine MULTILINE-Geometrie zu zerlegen, und das von einem Routing-Schnittpunkt ausgehend.
Die Funktion ist deklariert als RETURNS geometry, Du versuchst aber, auch noch einen INT auszugeben und behauptest, daß dies auch erfolgen würde. Geht aber nicht, zumindest nicht so, wie oben gezeigt.
Ich rufe die Funktion auf und erhalte alle Notices doppelt, als ob die Funktion doppelt aufgerufen wird:
Hat jemand eine Ahnung woran das liegen kann?
Danke jetzt schon mal, Kai
Ich vermute, daß Du beim basteln nicht nur diese eine Funktion mit diesem Namen hast, sondern weitere, mit unterschiedlichen Return-Parametern, und da irgend was durcheinander kommt.