반응형
가끔씩 위치정보 관련된 개발을 진행하거나 할때 좌표계 변환이 필요한 경우가 종종 있다.
좌표 변환을 하는데 있어 여러 라이브러리가 있지만 오늘은 proj4j를 이용한 좌표 변환 방법에 대해 소개한다.
1. 라이브러리 추가
- Gradle
implementation 'org.locationtech.proj4j:proj4j:1.2.2'
- Maven
<dependency>
<groupId>org.locationtech.proj4j</groupId>
<artifactId>proj4j</artifactId>
<version>1.2.2</version>
</dependency>
- Jar 직접 다운로드 : https://repo1.maven.org/maven2/org/locationtech/proj4j/proj4j/1.2.2/proj4j-1.2.2.jar
2. 샘플코드
아래 코드는 WGS84 좌표를 GRS80 UTMK 좌표로 변환하는 샘플코드 이다.
package com.test;
import org.locationtech.proj4j.CRSFactory;
import org.locationtech.proj4j.CoordinateReferenceSystem;
import org.locationtech.proj4j.CoordinateTransform;
import org.locationtech.proj4j.CoordinateTransformFactory;
import org.locationtech.proj4j.ProjCoordinate;
public class Test {
/**
* 좌표 변환
* @throws Exception
*/
public void transformCoordinates() throws Exception {
// CRS 객체 생성
CRSFactory crsFactory = new CRSFactory();
// WGS84 system 정의
String wgs84Name = "WGS84";
String wgs84Proj = "+proj=longlat +datum=WGS84 +no_defs";
CoordinateReferenceSystem wgs84System = crsFactory.createFromParameters(wgs84Name, wgs84Proj);
// UTMK system 정의
String utmkName = "UTMK";
String utmkProj = "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs";
CoordinateReferenceSystem utmkSystem = crsFactory.createFromParameters(utmkName, utmkProj);
// 변환할 좌표계 정보 생성
ProjCoordinate p = new ProjCoordinate();
p.x = 126.9784034;
p.y = 37.5665972;
// 변환된 좌표를 담을 객체 생성
ProjCoordinate p2 = new ProjCoordinate();
CoordinateTransformFactory ctFactory = new CoordinateTransformFactory();
// 변환 시스템 지정. (원본 시스템, 변환 시스템)
CoordinateTransform coordinateTransform = ctFactory.createTransform(wgs84System, utmkSystem);
// 좌표 변환
ProjCoordinate projCoordinate = coordinateTransform.transform(p, p2);
// 변환된 좌표
double x = projCoordinate.x;
double y = projCoordinate.y;
}
}
보다 상세한 자료는 공식 사이트를 참고 - https://github.com/locationtech/proj4j
'Language > Java / JSP' 카테고리의 다른 글
[Java] LocalDateTime, Timestamp 변환 (LocalDateTime To Timestamp) (0) | 2020.11.30 |
---|---|
[JSP]Client IP 가져오기 (3) | 2019.03.05 |
[Java] 경위도 좌표 거리계산 (두 지점간의 거리) (11) | 2016.03.03 |
[JSP] 로그인 세션 유지시간 늘리기 (0) | 2015.06.15 |
[Java] 특정 자리수 만큼 0으로 공백 채우기(String.format()) (3) | 2015.04.27 |