저는 Postgis 9.1 및 rgeo를 사용하여지도 응용 프로그램을 개발하고 있습니다.Postgis ST_DWithin이 특정 반경과 일치하고 오른쪽에있는 점
포인트 중 하나는 현재 포인트에서 XXX 킬로미터이고 포인트 오른쪽에있는 모든 포인트를 찾습니다. 여기 [EDITED] SELECT "environments".* FROM "environments" WHERE (st_dwithin("environments"."location", ST_PointFromText('POINT(170 0)', 4326), 300000)) AND (ST_X(location::geometry) > 170);
I는 170 경도 판정 포인트를 하드 코딩 :
Environment.where{ st_dwithin(location, factory.point(170.0, 0), 300000) }.where('ST_X(location::geometry) > 170')
쿼리의 해당 SQL을 :
I는 다음의 쿼리를 시도했다.
이 문제는 [-170, -180] 경도의 포인트를 매치 할 수 없다는 것입니다.
포스트 기어 기능 만 사용하여이를 해결할 수있는 방법이 있습니까?
[편집] 이것은 전 세계의 포스트 그리 키 문제입니다. 이 응용 프로그램에서 나는 오른쪽과 특정 범위에서 포인트를 찾을 수 있습니다. 난 순수한 SQL과 솔루션을 찾을 수 없습니다 ...
고마워!
제발하지 하드 코드 데이터. 나는 SO에서 아무도 HEXEWKB를 읽을 수 없다고 생각합니다. 정규 좌표로 편집 할 수 있습니까? – Patrick
당신은 효과적으로 데카르트 거리 단위를도 단위로 사용하고 있다는 것을 알고 있습니까? –
패트릭 나는 이진 형식으로 번역 된 루비 라이브러리 rgeo를 사용하고있다. ST_PointFromText ('POINT (-170 0)', 4326), 150000));) "환경"에서 SELECT. "환경"과 동일합니다. –