728x90
반응형
EPSG:4326 좌표계를 EPSG:5181 좌표계로 변경해야 하는 일이 생겼습니다.
국토교통부 V-WORLD에서 제공하는 GeocoderAPI를 사용해서 좌표를 주소로 변환하려고 했는데 EPSG:5181 좌표계 (Korean 2000 / Central Belt) 상의 주소값을 구해야 하는데 사용할 수 있는 위도, 경도 데이터는 EPSG:4326 좌표계 (WGS84) 에서 사용하는 데이터여서 위도, 경도 데이터를 5181 좌표값으로 변경을 해야 합니다.
이를 위해 Proj4J 라이브러리를 사용할 수 있습니다.
1. 라이브러리 추가
implementation("org.locationtech.proj4j:proj4j:1.3.0")
implementation("org.locationtech.proj4j:proj4j-epsg:1.3.0")
2. 좌표 변환 코드 작성
@SpringBootTest
class Proj4jTest {
@Test
fun changeCoordinate() {
// EPSG:4326과 EPSG:5181 좌표계 정의
val crsFactory = CRSFactory()
val crs4326 = crsFactory.createFromName("EPSG:4326")
val crs5181 = crsFactory.createFromName("EPSG:5181")
// 변환할 좌표 (위도와 경도)
val latitude = 37.19631245
val longitude = 126.82248613
// 좌표 변환을 위한 객체 생성
val srcCoord = ProjCoordinate(longitude, latitude)
val destCoord = ProjCoordinate()
// 좌표 변환 수행
val transform: CoordinateTransform = BasicCoordinateTransform(crs4326, crs5181)
transform.transform(srcCoord, destCoord)
// 결과 출력
println("EPSG:4326 좌표 (위도: " + latitude + ", 경도: " + longitude + ")를 EPSG:5181 좌표 (X: " + destCoord.x + ", Y: " + destCoord.y + ")로 변환")
}
}
위의 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
728x90
반응형
'개발 > kotlin' 카테고리의 다른 글
Spring Boot JPA와 Kotlin Reflect 오류 해결 방법 (0) | 2024.08.08 |
---|---|
JSON을 Kotlin DTO로 변환하는 방법 - Kotlinx.Serialization 활용 가이드 (0) | 2024.08.02 |
object, companion object, 최상위 함수 정리 (0) | 2024.07.06 |
[kotlin] ByteArray를 Int, Int를 ByteArray로 변경하는 방법 (0) | 2024.05.29 |