본문 바로가기

Language/Java / JSP

[Java] Proj4j를 이용한 좌표계 변환

반응형

가끔씩 위치정보 관련된 개발을 진행하거나 할때 좌표계 변환이 필요한 경우가 종종 있다. 
좌표 변환을 하는데 있어 여러 라이브러리가 있지만 오늘은 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