잡동사니
[logj4] 좌표변환 본문
안녕하세요. yeTi입니다.
오늘은 logj4를 활용하여 좌표계를 변환하는 방법에 대해서 알아보겠습니다.
환경
- 전자정부프레임워크
- Proj4j-0.1.0
1. SVN을 통하여 소스를 다운받습니다. (http://svn.osgeo.org/metacrs/proj4j/)
2. Ant를 활용하여 빌드합니다.
3. 2번에서 생성한 라이브러리를 활용할 프로젝트에 추가합니다.
- proj4j-0.1.0.jar
4. 다음과 같이 활용합니다.
import org.osgeo.proj4j.CRSFactory;
import org.osgeo.proj4j.CoordinateReferenceSystem;
import org.osgeo.proj4j.CoordinateTransform;
import org.osgeo.proj4j.CoordinateTransformFactory;
import org.osgeo.proj4j.ProjCoordinate;
/**
* logj4를 활용한 좌표계 변환 객체
* @author HHS
*
*/
public class CRSConverter {
private CoordinateTransform trans;
public CRSConverter(String srcCrsSpec, String destCrsSpec) throws Exception {
CoordinateReferenceSystem srcCRS = this.createCRS(srcCrsSpec);
CoordinateReferenceSystem destCRS = this.createCRS(destCrsSpec);
CoordinateTransformFactory ctFactory = new CoordinateTransformFactory();
this.trans = ctFactory.createTransform(srcCRS, destCRS);
}
/**
* CRS creator
* @param crsSpec
* @return
*/
private CoordinateReferenceSystem createCRS(String crsSpec) {
CRSFactory crsFactory = new CRSFactory();
CoordinateReferenceSystem crs = null;
if (crsSpec.indexOf("+") >= 0 || crsSpec.indexOf("=") >= 0) {
// title 검색
String title = null;
String[] arr = crsSpec.split(" ");
for (int i = 0; i < arr.length; i++) {
if ("title".equalsIgnoreCase(arr[i].split("=")[0].replace("+", ""))) {
title = arr[i].split("=")[1];
break;
}
}
crs = crsFactory.createFromParameters(title, crsSpec);
}
else {
crs = crsFactory.createFromName(crsSpec);
}
return crs;
}
public ProjCoordinate transform(String coordX, String coordY) {
/*
* Create input and output points.
* These can be constructed once per thread and reused.
*/
ProjCoordinate srcCoord = new ProjCoordinate();
ProjCoordinate destCoord = new ProjCoordinate();
srcCoord.x = Double.parseDouble(coordX);
srcCoord.y = Double.parseDouble(coordY);
/*
* Transform point
*/
return trans.transform(srcCoord, destCoord);
}
}
5. 참고 문헌
- Proj4J 홈페이지 : https://trac.osgeo.org/proj4j/
'IT > Open Source' 카테고리의 다른 글
[Bitnami Redmine Stack] 서버 이전하기 (2) | 2016.09.21 |
---|---|
[Notepad++] XML 텍스트 정렬하기 (2) | 2016.06.10 |
[Bitnami Redmine] Window환경에서 SVN 연동시 404 오류 해결방법 (0) | 2016.05.25 |
[Geotools] 좌표변환 (2) | 2016.05.20 |
[AngularJS] SPAs를 위한 JS 프레임워크 소개 (0) | 2015.10.19 |