친애 유래 리더,최대 절전 모드 - 공간 쿼리
나는 현재의 좌표에 따라 특정 항목을로드하기위한 요구 사항이있는 응용 프로그램에서 일하고 있어요. 예 : 모든 상점을 x 좌표 또는 15km 이내에 위치해야합니다.
저는 Java EE 6에서이 웹 응용 프로그램을 빌드하고 Postgres 데이터베이스에 데이터 지속성을 위해 Hibernate 3.3을 사용했습니다. 일부 reseach 후 나는 Hibernate-Spatial이 나의 목표를 달성 할 수있는 가능성을 발견했다. Postgis를 설치하고 Hibernate-Spatial을 실행 시켰습니다.
나는 Hibernate 3.3, Hibernate-Spatial 1.0, PostgreSQL 9.2 및 postgis-jdbc 1.3.3을 사용하고 있습니다.
@Column(columnDefinition = "Geometry", nullable = true)
@Type(type = "org.hibernatespatial.GeometryUserType")
private Point location;
가 처음에 내가 원을 생성하고 기본적으로 원 위치한 모든 지점에서 조회 할 수 있다고 생각 :
나는 위치 필드가 엔티티를 만들었습니다. 그러나 이것은 내가 생각했던 것보다 더 어려워 보인다. 그래서 나는 Hibernate-Spatial을 잘못 선택했다고 생각하기 시작했다.
내 질문은 Hibernate-Spatial을 사용하여 특정 경계 (해당 지점에서 x와 y km의 좌표) 내의 모든 Point를 쿼리 할 수 있는지 의문입니다.
다른 요구 사항도 해결하고 싶습니다. 나는 다음과 같은 가능성에 대해 생각을 해 봤는데 :
이- 다만, PostgreSQL을에 기본 쿼리를 사용 기관에 그 결과를지도하고 응용 프로그램의 다른 부분에서 사람들을 사용 (기본적으로 최대 절전 모드 - 공간 제거하고 기본 쿼리를 사용) .
- 최대 절전 모드로 전환하고 Lucene을 사용하여 작업을 수행하십시오. 완전히 다른
이것은 더 많은 코멘트입니다 - 그렇지 않습니까? 그것은 실제로 대답으로 홀로 서 있지 않습니다. –
네 말이 맞아! 그러나 나는 논평 할 명성이 없기 때문에 답변에 투표하거나 의견이 일치하지 않는다. 하지만 그 대답은 미묘하게 잘못된 것입니다. 그래서 저는 무언가를해야했습니다! – Ghoughpteighbteau
OP가 lat-lng와 같은 비 계획 CRS를 사용하는 경우 모두가 말하는 내용이 사실입니다. 그러나 dwithin은 예상 CRS를 사용하고 있거나 일정 수준의 오류를 기꺼이 받아들이면 기꺼이 잘 작동합니다. 나는 원래의 대답에서 그 복잡성을 무시했지만 현재의 대답에 더 많은 세부 사항을 추가했다. 내 대답은 같은 문제가 OP와 다른 사람을위한 하나의 잠재적 인 솔루션을 제공한다고 생각하지 .. 귀하의 답변은 OP의 문제를 해결 무언가보다 내 대답의 비판이기 때문에 대체 솔루션을 추가하려면 업데이 트를 고려하십시오. – lreeder