Eu tenho um PostGIS db e quero encontrar os pontos que estão dentro de alguma região (uma caixa delimitadora). Eu tenho dois conjuntos de coordenadas, dos quais posso obter todos os quatro pontos retangulares que formam a caixa (se necessário). Minha coluna de dados em questão é denominada 'point' e também é do tipo point.
- Existe uma maneira de especificar quatro conjuntos de coordenadas (lat / long) e obter todos os pontos que estão dentro da caixa.
- Ou especifique dois pontos e deixe o DB calcular os cantos do retângulo e retorne os pontos dentro de
Apenas no caso de eu não estar sendo claro quanto ao que quero alcançar. O equivalente ao 'vanilla' sql se eu tivesse um campo longo e um latão em vez de um ponto seria:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
EDIÇÃO ATUALIZADA:
Estou tentando a solução do underdark. No começo, eu não tinha o construtor ST_MakePoint (agora tenho) e ainda recebo um erro muito semelhante (apenas em um caractere diferente).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
e estou recebendo este erro:
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
EDITAR:
No curto prazo, posso resolvê-lo com:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
Mas terei que descobrir por que nenhuma das funções do PostGIS não está funcionando para mim.