Ich habe eine PostGIS-Datenbank und möchte die Punkte finden, die in einer Region liegen (ein Begrenzungsrahmen). Ich habe zwei Koordinatensätze, aus denen ich alle vier Rechteckpunkte erhalten kann, die die Box bilden (falls erforderlich). Meine fragliche Datenspalte heißt 'Punkt' und ist auch vom Typ Punkt.
- Gibt es sowieso vier Koordinatensätze (lat / long) anzugeben und alle Punkte zu erhalten, die innerhalb der Box liegen.
- Oder geben Sie zwei Punkte an und lassen Sie die DB die Ecken des Rechtecks berechnen und die darin enthaltenen Punkte zurückgeben
Nur für den Fall, dass mir nicht klar ist, was ich erreichen möchte. Das Äquivalent zu 'Vanilla' SQL, wenn ich ein Lat- und Long-Feld anstelle eines Punktes hätte, wäre:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
AKTUALISIERTE BEARBEITUNG:
Ich versuche die Lösung von underdark. Zuerst hatte ich den ST_MakePoint-Konstruktor nicht (jetzt schon) und ich bekomme immer noch einen sehr ähnlichen Fehler (nur bei einem anderen Zeichen).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
und ich erhalte diesen Fehler:
ERROR: function st_makepoint(point) does not exist
LINE 1: SELECT * FROM triples WHERE ST_Within(ST_MakePoint(point),Ge...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function st_makepoint(point) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 39
BEARBEITEN:
Kurzfristig kann ich es lösen mit:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
Aber ich muss herausfinden, warum keine der PostGIS-Funktionen für mich nicht funktioniert.