2편에서는 xml형식으로 된 파일을 불어 들여서 처리하는 것을 다뤄봤는데,
이번에는 인터넷에서 xml 형식의 데이터를 가져와서 처리하는 것을 다뤄보겠습니다.
1. 공공데이터 포털 등 데이터 제공 형식
가. 공공데이터포털(https://www.data.go.kr/)
파일 형식은 csv, xml과 json으로 되어 있고,
OpenAPI형태로도 제공하고 있는데 2년 전에는 대부분 xml형식으로만 제공했는데 json형태도 많이 제공하고 있습니다.
나. 서울 열린 데이터 광장
공공데이터포털과 유사한 포털인데, 파일 형식은 csv, json이고, OpenApi도 제공하고 있습니다.
OpenApi는 몇 개 찾아보니 xml형식입니다.
2. 토지임야정보서비스 OpenAPI로 조회하기
여러 가지 서비스가 있지만 토지임야정보서비스를 대상으로 데이터포털 사이틀에 접속해서 정보를 가져오고 엑셀에 저장하는 것을 해보겠습니다.
가. 준비사항
(1) 회원가입을 하고, 토지임야정보서비스를 검색한 후 활용신청을 해야 합니다.
활용신청 시 활용목적을 기재하도록 되어 있는데 통계 목적으로 중요하지 않으며, 사업자가 아닌 이상 첨부 파일도 필요 없고, 동의합니다에 체크 후 활용신청 버튼을 누르면 되며, 실제 사용 시까지는 약간의 시간이 걸립니다.
인증키가 없다면 활용신청 시 인증키를 받을 수 있으며, 데이터명과 관계없이 데이터포털 내에서 범용적으로 사용할 수 있습니다.
(2) VBA에서 MSXXML 6.0 추가
도구 - 참조 메뉴를 클릭하면 Microsoft XML의 버전이 3.0과 6.0이 있는데, 버전에 따라 프로그램 작성방법이 다르므로 6.0에 체크합니다.
나. 설명서 찾기
오픈 API 상세 맨 아래에 토지임야정보조회서비스.zip 파일이 있으므로 다운로드한 후 압축을 풀어 내용을 살펴보면서 하면 됩니다.
압축파일을 풀면 OpenAPI활용가이드_국토교통부(토지임야정보조회서비스).docx 와 행정구역코드(법정동코드).xls 파일이 있습니다.
다. 접속 URL(6쪽)
XML 문서의 내용을 가져와서 원하는 정보를 추출하는 것은 동일한데
파일이 아니라 URL에 접속해서 결과를 가져오는 것만이 다릅니다.
http://apis.data.go.kr/1611000/nsdi/eios/LadfrlService/ladfrlList.xml? pnu=1111010100100890025&numOfRows=10&pageNo=1&ServiceKey=인증키 |
URL 다음에 ?pnu=을 입력한 다음 pnu코드를 넣고, 그다음 numOfRows와 p;ageNo는 필요 없으므로 생략하고, 그 다음에&ServiceKey=를 입력하고 인증키를 입력합니다.
(1) PNU(고유번호) 코드
고유번호는 각 필지를 서로 구별하기 위하여 필지마다 붙이는 고유한 번호로 고유번호 체계는 다음과 같습니다.
o 고유번호 체계
행정구역코드는 10자리로 위 엑셀파일을 참고하면 되며(최신 법정동 코드는 http://code.mogaha.go.kr에서 다운로드 가능), 토지(임야) 대장구분에 해당하는 1자리는 1이 일반 지번, 2가 산 지번입니다. 그리고, 본번과 부분은 4자리씩으로 되어 있어, 자리가 짧으면 앞이 0으로 채웁니다. 총 19자리 수입니다.
구분 | 고유번호 아이디 체계 | ||
코드 체계 | ➀➁➂➃➄➅➆➇➈➉⑪⑫⑬⑭⑮⑯⑰⑱⑲ | ||
코드 설명 | ➀➁➂➃➄➅➆➇➈➉ | 숫자 | 행정구역코드 (법정동코드) |
⑪ | 숫자 | 토지(임야)대장구분 | |
⑫⑬⑭⑮ | 숫자 | 지번본번 | |
⑯⑰⑱⑲ | 숫자 | 지번부번 |
따라서, 서울시청의 PNU코드는 서울특별시 중구 태평로1가 31이므로(땅에 집이 없는 경우가 많으므로 도로명 주소는 안됩니다),
서울특별시 중구 태평로1가에 해당하는 행정구역코드 1114010300에 일반이므로 1을 붙이고, 31번지이므로 00000031이 되므로, 모두 합치면 1114010300100000031이 됩니다.
(2) 법정동코드 엑셀 파일의 A열과 B열을 바꿈
엑셀 파일에서 법정동코드가 A열에 법정동명이 B열에 있는데,
Vlookup함수를 사용하려면 찾으려는 값의 오른쪽에서 index에 해당하는 값을 반환하기 때문에 위 파일에서 A열과 B열을 바꿔야 합니다. 따라서, A열을 잘라내기 한 후 C열을 클릭하고 마우스 오른쪽 버튼을 누른 후 잘라낸 셀 삽입 메뉴를 누릅니다.
그러면 아래와 같이 법정동명이 A열, 법정동 코드가 B열이 됩니다.
'EXCEL - VBA' 카테고리의 다른 글
날짜 변환 - DateValue 함수, 선택하여 붙여넣기 VBA(1) (0) | 2023.02.15 |
---|---|
엑셀 VBA - XML Parsing(XML 6.0 기준) (4) (LoadXML - 2) (0) | 2023.02.14 |
엑셀 VBA - XML Parsing(XML 6.0 기준) (1) (0) | 2023.02.08 |
CurrentRegion 속성을 이용한 합계 등 계산(3) (0) | 2023.02.07 |
CurrentRegion 속성을 이용한 합계 등 계산(2) (0) | 2023.02.06 |