J'ai une base de données PostGIS, et je veux trouver les points qui se trouvent dans une région (une boîte englobante). J'ai deux ensembles de coordonnées, à partir desquels je peux obtenir les quatre points rectangulaires qui forment la boîte (si nécessaire). Ma colonne de données en question est nommée «point» et elle est également de type point.
- Existe-t-il de toute façon de spécifier quatre ensembles de coordonnées (lat / long) et d'obtenir tous les points qui se trouvent dans la boîte.
- Ou spécifiez deux points et laissez la DB travailler sur les coins du rectangle, et renvoyez les points dans
Juste au cas où je ne serais pas clair sur ce que je veux réaliser. L'équivalent avec sql 'vanilla' si j'avais un champ lat et long au lieu d'un point serait:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
MODIFICATION MISE À JOUR:
J'essaie la solution d'Underdark. Au début, je n'avais pas le constucteur ST_MakePoint (maintenant j'en ai) et j'ai toujours une erreur très similaire (juste sur un caractère différent).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
et je reçois cette erreur:
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
ÉDITER:
À court terme, je peux le résoudre avec:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
Mais je devrai comprendre pourquoi aucune des fonctions PostGIS ne fonctionne pas pour moi.