지난 이야기
2023.03.16 - [프로젝트 정리/애완동물 종합 솔루션(CatDogForest)] - Kakao Map API with 애완동물병원 #5
정부에서 제공한 동물병원 데이터 중 현재 운영중인 4586개 데이터를 카카오 api를 통해 변환하고 marker 배열에 사용하기 위한 hospitalDto로 변경하여 insert해줬다.
@Test
@Transactional
@DisplayName("convert goverment data to kakao location")
public void convertDBTest() {
RestTemplate restTemplate = new RestTemplate();
String url = "https://dapi.kakao.com/v2/local/geo/coord2regioncode.json";
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Authorization", String.format("KakaoAK APP_KEY"));
List<GovermentDTO> all = goverMentService.getAll();
List<HospitalDTO> hospitalDTOS = new ArrayList<>();
int bCnt = 0;
int hCnt = 0;
for(int idx = 0; idx < all.size(); idx++) {
Double x = all.get(idx).getLongitude();
Double y = all.get(idx).getLatitude();
UriComponents uri = UriComponentsBuilder.newInstance()
.fromHttpUrl(url)
.queryParam("x",x)
.queryParam("y",y)
.queryParam("input_coord","TM")
.build();
// when
HttpEntity requestMessage = new HttpEntity(httpHeaders);
ResponseEntity response = restTemplate.exchange(
uri.toUriString(),
HttpMethod.GET,
requestMessage,
String.class);
// then
// 해당 JObject와 Response 객체간의 매핑
Gson gson = new Gson();
KaKaoMapResponse mapped_data = gson.fromJson(response.getBody().toString(),KaKaoMapResponse.class);
hospitalDTOS.add(
new HospitalDTO(all.get(idx).getHospital_id(), all.get(idx).getBusiness_name(), all.get(idx).getTel(),
all.get(idx).getLongitude(), all.get(idx).getLatitude(),
mapped_data.getDocuments().get(0).getRegion_type(), mapped_data.getDocuments().get(0).getAddress_name(),
mapped_data.getDocuments().get(0).getRegion_1depth_name(), mapped_data.getDocuments().get(0).getRegion_2depth_name(),
mapped_data.getDocuments().get(0).getRegion_3depth_name(), mapped_data.getDocuments().get(0).getRegion_4depth_name(),
mapped_data.getDocuments().get(0).getCode(), mapped_data.getDocuments().get(0).x, mapped_data.getDocuments().get(0).y,
mapped_data.getDocuments().get(1).getRegion_type(), mapped_data.getDocuments().get(1).getAddress_name(),
mapped_data.getDocuments().get(1).getRegion_1depth_name(), mapped_data.getDocuments().get(1).getRegion_2depth_name(),
mapped_data.getDocuments().get(1).getRegion_3depth_name(), mapped_data.getDocuments().get(1).getRegion_4depth_name(),
mapped_data.getDocuments().get(1).getCode(), mapped_data.getDocuments().get(1).x, mapped_data.getDocuments().get(1).y));
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
}
for(int idx = 0; idx < hospitalDTOS.size(); idx++) {
hospitalService.insert(hospitalDTOS.get(idx));
}
}
BUILD SUCCESSFUL in 8m 6s가 걸렸다.
성공적으로 4586개의 데이터를 맵에 표시 및 클러스터로 보여준 줄 알았다.
공공데이터를 변환한 값의 위치가 정확하게 해당 병원과 일치하지 않았다.
아무래도 상호명으로 검색한 위, 경도 값을 가져와서 x, y값 update시켜야 겠다.
그리고 전체 데이터를 지도에서 보려니 지도가 굉장히 느려졌다.
유저가 보고있는 지도의 중앙값, 좌상, 좌하, 우상, 우하의 값을 가지고 해당 위치에 들어가 있는 병원을 비동기로 가져와서 보여주는 편이 성능적으로 유리 할 듯 싶다.
'프로젝트 정리 > 애완동물 종합 솔루션(CatDogForest)' 카테고리의 다른 글
Kakao Map API with 애완동물병원 #8 (0) | 2023.03.22 |
---|---|
Kakao Map API with 애완동물병원 #7 (2) | 2023.03.21 |
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 |