H2GIS - Hibernate Spatial 테스트

wanuki·2023년 9월 18일
0

지난 포스트에서 PostGIS와 Hibernate Spatial을 이용해서 위치 데이터를 찾았다.

PostGIS

이번엔 H2GIS를 추가하여 테스트 환경을 구축하겠다.

의존성 추가

H2GIS

H2GIS 확장 초기화

H2GIS 확장자를 초기화하려면 SQL 구문을 적용해야한다

CREATE ALIAS IF NOT EXISTS H2GIS_SPATIAL FOR "org.h2gis.functions.factory.H2GISFunctions.load";
CALL H2GIS_SPATIAL();

쿼리 수정

테스트를 위한 준비가 끝났다.
그런데 테스트를 하기에 앞서 지난 포스트에서 작성한 쿼리를 수정하였다.

쿼리 수정 이유 1

degrees and meters 변환 참고
h2gis ST_DWithin 참고

  • PostGIS에서는 st_dwithin 함수 선언이 2개이다. 매개변수 3개, 4개
  • H2GIS에서는 매개변수가 3개인 st_dwithin 하나 뿐이다.
  • 차례대로 point1, point2, distance_of_srid, 3번째 인자가 degree값이다
  • postgis의 매개변수가 4개인 함수에서 3번째 인자는 meter였지만 h2gis는 값을 변환해 줘야 한다. 따라서 0.03(3km)이다. (0.01는 약 1.11km)

쿼리 수정 이유 2

postgis에서는 정상적으로 잘 동작하지만, h2gis에서는org.locationtech.jts.geom.Point 타입을 사용하면 에러가 발생한다

Data conversion error converting "JAVA_OBJECT to GEOMETRY"

버전 문제인가 싶어서 공식문서에 나온 버전으로 h2gis, h2, jts 버전을 낮춰서 해봤지만 문제를 해결하지못했다.

또한 columnDefinition을 추가하여도 마찬가지로 에러가 계속 발생하였다.

@Column(columnDefinition = "geometry(Point,4326)")
private Point point;

그래서 double 타입의 latitude, longitude를 이용하여 st_point함수로 point값을 계산하였다.

profile
하늘은 스스로 돕는 자를 돕는다

0개의 댓글