공공데이터 포털에서 동물병원 정보를 찾았다.
https://www.data.go.kr/data/15045050/fileData.do
CSV파일이어서 csv to sql로 테이블로 집어넣었고 위도 경도를 사용하려는데 문제가 발생했다.
제공해주는 좌표값이 다음과 같다.
좌표계 : 중부원점TM(EPSG:2097)
카카오 맵 API는 위도, 경도를 기준으로 생성되는데 이에 맞게 변환과정이 필요하다.
구글링 해보니 파이썬이나 자바스크립트 위주의 레퍼런스가 많은데 선구자가 계셨다.
https://fascinate-zsoo.tistory.com/29
EPSG에 대한 설명글
http://www.gisdeveloper.co.kr/?p=8942
https://wooble52.tistory.com/32
위의 자료들을 이해하고 EPSG:2097로 구성된 좌표를
카카오맵에서 사용하는 EPSG:5181로 변환하여 카카오에 적합하게 변경하는 작업을 하자.
Chat GPT가 알려준 솔루션
import org.geotools.referencing.CRS;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
public class CoordinateConverter {
public static void main(String[] args) throws Exception {
CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:2097");
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:5181");
System.out.println("Source CRS: " + sourceCRS.getName());
System.out.println("Target CRS: " + targetCRS.getName());
// Define your source coordinate here
double[] sourceCoord = new double[] { 10.0, 20.0 };
// Convert the coordinate from source CRS to target CRS
double[] targetCoord = CRS.transform(sourceCRS, targetCRS, sourceCoord);
System.out.println("Source coordinate: " + sourceCoord[0] + ", " + sourceCoord[1]);
System.out.println("Target coordinate: " + targetCoord[0] + ", " + targetCoord[1]);
}
}
package tobyspring.helloboot;
import org.locationtech.proj4j.BasicCoordinateTransform;
import org.locationtech.proj4j.CRSFactory;
import org.locationtech.proj4j.CoordinateReferenceSystem;
import org.locationtech.proj4j.ProjCoordinate;
public class TransCoord {
public ProjCoordinate transform(String strLon, String strLat) {
//parse to Double
Double dblLon = Double.parseDouble(strLon);
Double dblLat = Double.parseDouble(strLat);
CRSFactory factory = new CRSFactory();
CoordinateReferenceSystem srcCRS = factory.createFromName("EPSG:2097");
CoordinateReferenceSystem tgtCRS = factory.createFromName("EPSG:5181");
System.out.println("Source CRS: " + srcCRS.getName());
System.out.println("Target CRS: " + tgtCRS.getName());
BasicCoordinateTransform transformer = new BasicCoordinateTransform(srcCRS, tgtCRS);
ProjCoordinate beforeCoord = new ProjCoordinate(dblLon, dblLat);
ProjCoordinate afterCoord = new ProjCoordinate();
//변환된 좌표
System.out.println(afterCoord.x + "," + afterCoord.y);
return transformer.transform(beforeCoord, afterCoord);
}
}
위 에러 메시지는일반적으로 Proj4J 라이브러리가 사용하는 좌표 참조 시스템(CRS) 정보 파일을 찾을 수 없어서 발생하는 문제입니다.
이 문제를 해결하기 위해서는 다음과 같은 단계를 따르면 됩니다.
먼저, 프로젝트의 클래스 패스(classpath)에 Proj4J 라이브러리 jar 파일이 제대로 추가되어 있는지 확인해 주세요. 만약 Maven이나 Gradle과 같은 빌드 도구를 사용한다면, 라이브러리 의존성을 빌드 파일에 추가하고,
제대로 다운로드되고 있는지 확인해야 합니다.
사용하는 EPSG 코드가 올바르고 유효한 CRS와 일치하는지 확인하세요.
epsg.io와 같은 웹사이트를 사용하여 올바른 코드와 CRS 정보를 확인할 수 있습니다.
사용하는 EPSG 코드의 CRS 정보가 들어있는 파일이 Proj4J 라이브러리의 클래스 패스에 있는지 확인하세요.
이 파일은 보통 "epsg"라는 이름으로 "proj4/nad" 디렉토리에 위치합니다.
이 파일이 클래스 패스에 존재하고, 라이브러리가 이 파일을 읽을 수 있는지 확인해야 합니다.
만약 파일이 누락되거나 손상된 경우,
Proj4J 라이브러리를 다시 다운로드하여 프로젝트의 클래스 패스에 추가해 보세요.
위 방법으로도 문제를 해결할 수 없다면,
인터넷에서 비슷한 문제나 에러 메시지를 검색하거나, Proj4J 라이브러리의 문서나 지원 자료를 참고해 보세요.
'프로젝트 정리 > 애완동물 종합 솔루션(CatDogForest)' 카테고리의 다른 글
Kakao Map API with 애완동물병원 #6 (0) | 2023.03.17 |
---|---|
Kakao Map API with 애완동물병원 #5 (0) | 2023.03.16 |
Kakao Map API with 애완동물병원#4 (0) | 2023.03.15 |
Kakao Map Api with 애완동물병원 #3 (0) | 2023.03.14 |
Kakao Map API with 애완동물병원 #1 (0) | 2023.03.13 |