최대 절전 모드, Postgre, PostGIS, Grails를 사용하고 있습니다.Hibernate와 PostGIS를 사용하여 동일한 쿼리에서 거리와 도메인 속성 가져 오기
주어진 반경 내에서 모든 사용자를 검색하려면 HibernnateSpetial을 사용하고 있으며 정상적으로 작동합니다.
def criteria = sessionFactory.currentSession.createCriteria(User)
criteria.createAlias('location', 'location')
criteria.add(SpatialRestrictions.within("location.point", boundingPolygon))
criteria.list()
이제 동일한 기준 실행에서 지정된 지점의 모든 사용자의 거리를 원합니다. 그것은 나에게 데이터베이스와 SQL에 공급되는 시점에 저장 기하 (포인트) 사이의 거리를 반환하지만 사용자 도메인의 속성을 무시
def criteria = sessionFactory.currentSession.createCriteria(User)
criteria.createAlias('location', 'location')
criteria.add(SpatialRestrictions.within("location.point", boundingPolygon))
String[] columnAlias = new String[1]
columnAlias[0] = "distance"
org.hibernate.type.Type[] types = new StandardBasicTypes[1]
types[0] = StandardBasicTypes.DOUBLE
criteria.setProjection(Projections.sqlProjection("ST_Distance(point, ST_GeomFromText('POINT(-84.3346473 33.9462125)', 4326)) as distance", columnAlias, types))
criteria.list()
. 기준 실행 후 [- 0.0, 0.20430178027717, 0.0]과 같은 것을 얻었습니다.
주어진 Lat/lng에서 모든 사용자 + 거리를 얻을 수 있는지 궁금합니다. Groovy/Java 코드를 사용하여 결과의 거리를 계산할 수 있지만 기준 실행에서 정렬 된 결과가 필요하므로 페이지 매김도 적용 할 수 있습니다. 다시 거리를 얻기 위해 단지을 원하는 경우에
안녕하세요 manish, 귀하의 질문에 아무런 대답이 없지만 나는 성공 grails와 postGIS를 사용하려고합니다. 이 작업을 수행하는 방법을 보여주는 최신 리소스를 참조 할 수 있습니까? –