PostGIS db가 있고 일부 지역 (경계 상자)에있는 점을 찾고 싶습니다. 나는 두 세트의 좌표를 가지고 있는데, 필요한 경우 상자를 형성하는 네 개의 직사각형 점을 모두 얻을 수 있습니다. 해당 데이터 열의 이름은 'point'이며 point 유형이기도합니다.
- 어쨌든 4 개의 좌표 세트 (위도 / 경도)를 지정하고 상자 안에있는 모든 점을 가져옵니다.
- 또는 두 점을 지정하고 DB가 사각형의 모서리를 계산하게하고 그 점을 반환하십시오
내가 달성하고자하는 것에 대해 명확하지 않은 경우를 대비하여. 점 대신 위도 및 경도 필드가있는 경우 'vanilla'sql과 동등한 내용은 다음과 같습니다.
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
업데이트 된 편집 :
underdark의 해결책을 찾고 있습니다. 처음에는 ST_MakePoint 구성자가 없었지만 (지금은 그렇습니다) 여전히 매우 비슷한 오류가 발생합니다 (다른 문자에서만).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
이 오류가 발생합니다.
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
편집하다:
단기적으로는 다음과 같이 해결할 수 있습니다.
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
그러나 PostGIS 기능 중 어느 것도 나를 위해 작동하지 않는 이유를 해결해야합니다.
선호하는 방법은 한 곳에만 게시하는 것입니다. 해당 장소가 부적절하거나 해결되지 않으면 쉽게 이전 할 수 있습니다. GIS는 귀하의 질문이 있어야 할 위치이기 때문에 어떤 조치도 취하지 않겠지 만 SO에 대한 교차 게시물을 삭제하도록 촉구합니다.
—
whuber
@whuber .. 완료.
—
Ankur
select GeometryFromText ( 'POLYGON ((75 20,80 30,90 22,85 10,75 20))', 4326)-작동합니까?
—
Sean
무슨 말인지 잘 모르겠습니다. 나는 당신이 말한 것에 대한 다양한 변형을 시도했지만 작동하지 않았습니다
—
Ankur
은 "포인트"열은 무엇 ST_MakePoint (점)에서 참조
—
언더 다크