Hilfe Bitte.. ERROR: Operation on two GEOMETRIES with different

Hallo,

irgendwie stehe ich total auf dem Schlauch.


Ich habe eine Tabelle Poi(name, bla, blu, geom)

Ich schreibe eine Abfrage in Java (arbeite mit JSP) die lautet (Funktion vereinfacht):


//Parameter:
double lat = [SIZE=-1]48.2189102173[/size]
double lon = [SIZE=-1]11.6243076324[/size]
double radius = 300.0

SELECT name, bla, blu 
FROM Poi p
WHERE distance(p.geom, 'POINT("+lat+" "+lon+")') < radius

Hierbei wird der Fehler:
org.postgresql.util.PSQLException: ERROR: Operation on two GEOMETRIES with different SRIDs

ausgeworfen.

Wenn ich versuche die SRID an das POINT anzuhängen à la

WHERE distance(p.geom, 'POINT("+lat+" "+lon+")', 4326) < radius

erkennt Postgis die Funktion distance wegen falschen Parametern (das letzte zuviel) nicht mehr an…

SRID für poi.geom ist in der DB: 4326; ich nahm an, dass GPS Koordinaten (long, latauch SRID 4326 haben…??


Kann mir jemand erklären warum? bzw. wie ich das beheben kann? hab einiges leider ohne Erfolg probiert :frowning:

Vielen vielen Dank im Voraus :slight_smile:

lg,
hugo

WHERE distance(p.geom, 'POINT("+lat+" "+lon+"), 4326') < radius

Versuchs mal so :wink:

Gruß Uwe

Danke :slight_smile:

ich habe das jetzt so gelöst gehbat:

WHERE distance(p.geom, GeometryFromText('POINT("+lon+" "+lat+")',4326)) < radius

aber dein Vorschalg werde ich auch noch ausprobieren… Lieber scön den einfachen weg gehen… :slight_smile:
Aber p.geom ist eine GEOMETRYCOLLECTION, würde das ein unterschied machen?

lg,
hugo

So ist die Syntax richtig, beim ersten Versuch war die SRID ein Attribut von Distance und nicht des Punkts (und das GeomFromText hat gefehlt wie gerade sehe…Mein Tip war demzufolge auch nur halb richtig :wink: ). Das kann nicht gehen :wink:
Ob es Einschränkungen für Geometrycollections gibt weiß ich auf Anhieb nicht, da solltest du die Postgis Referenz konsultieren oder einfach ausprobieren. Einige Sachen gingen nicht mit Geometrycollections. Du kannst aber einzelne Geometrien z.B. über eine Funktion mit GeometryN(geom,n) abfragen.

Gruß Uwe