국토교통부 건축물대장정보 데이터 조회하기


PNG

파이썬 PublicDataReader 라이브러리를 이용하면 공공데이터포털에서 제공하는 국토교통부 건축물대장정보 데이터를 쉽게 조회할 수 있습니다.


PublicDataReader

PublicDataReader는 공공 데이터를 자동으로 조회할 수 있는 파이썬 라이브러리입니다. 이 라이브러리로 공공데이터포털과 국가통계포털(KOSIS)과 같이 오픈 API 서비스로 제공하는 공공 데이터를 쉽게 조회할 수 있습니다. 인증키가 필요한 공공 데이터는 인증키를 사용하여 조회할 수 있고, 인증키가 필요하지 않은 데이터는 별도의 인증 절차 없이 조회할 수 있습니다. PublicDataReader를 이용하면 일반적인 공공 데이터 조회 과정에서 필요한 API 명세 찾기, 요청 작성, 반환된 데이터 정리 과정을 자동으로 처리할 수 있고, 웹에 공개된 데이터를 조회할 때도 데이터 수집과 가공 과정을 자동화할 수 있습니다. 이를 통해 코드 작성이 간결해지고 공공 데이터 조회 작업이 편리해집니다.


국토교통부 건축물대장정보 서비스

PublicDataReader를 통해 공공데이터포털에서 제공하는 Open API 서비스를 정상적으로 이용하려면 아래 서비스 신청 페이지 링크에 접속 후 서비스 이용 신청을 해야 합니다. 서비스 신청을 완료하면 Open API를 사용할 수 있는 서비스 키가 발급됩니다. 서비스 제공 기관에 따라 서비스 키 발급 후 약 1~2일이 지난 후 접근 권한이 부여될 수 있습니다. 충분한 시간이 지난 후에도 접근 권한이 부여되지 않는다면 서비스 제공처에 문의하는 것을 권장합니다.

서비스명 대장 유형
건축물대장 기본개요 조회 기본개요
건축물대장 총괄표제부 조회 총괄표제부
건축물대장 표제부 조회 표제부
건축물대장 층별개요 조회 층별개요
건축물대장 부속지번 조회 부속지번
건축물대장 전유공용면적 조회 전유공용면적
건축물대장 오수정화시설 조회 오수정화시설
건축물대장 주택가격 조회 주택가격
건축물대장 전유부 조회 전유부
건축물대장 지역지구구역 조회 지역지구구역


국토교통부 건축소유자정보 서비스

| **서비스명** | **대장 유형** | | :---------------------------- | :-------------- | | 건축물소유정보 조회 | 소유자 |


테이블 관계도

PNG


테이블 설명

구분 설명
기본개요 건축물대장 대장 종류별 관리
총괄표제부 총괄표제부 관리
표제부 건축물의 표제부를 관리
층별개요 건축물의 층별개요
전유부 건축물의 호별개요
전유공용면적 호별개요의 전유/공용부분
오수정화시설 건축물의 오수정화시설
지역지구구역 건축물의 총괄/동 단위 지역지구구역
부속지번 건축물의 관련지번(대표지번 외의 지번)
주택가격 건축물대장 공동주택가격 정보

※ 건축물 상위 : 총괄표제부 > 표제부 > 전유부


PublicDataReader 설치하기

  1. 운영체제(OS)에 따라 아래 중 하나를 선택합니다.
  • Windows: CMD(명령 프롬프트) 실행
  • Mac: Terminal(터미널) 실행
  1. 아래 Shell 명령어를 입력 후 실행합니다.
pip install PublicDataReader --upgrade


오픈 API 서비스 키 입력하기

공공데이터포털에서 발급받은 서비스 키를 복사하여 다음과 같이 service_key 변수에 할당합니다. 오픈 API 서비스 키 발급 방법에 대해 궁금하신 분들은 구글에 ‘공공데이터포털 오픈 API 사용법‘을 검색하시면 여러 문서들을 참조할 수 있습니다.

service_key = "공공데이터포털에서 발급받은 서비스 키"


국토교통부 건축물대장정보 조회 API 인스턴스 정의하기

PublicDataReader 라이브러리에서 BuildingLedger라는 클래스를 가져와 api 라는 건축물대장정보 조회 API 인스턴스를 생성합니다. 이 때, service_key 값을 인자로 입력합니다.

from PublicDataReader import BuildingLedger
api = BuildingLedger(service_key)


데이터 조회 시 필요한 입력 항목

이름 설명 데이터 타입 샘플 데이터 항목구분
ledger_type 건축물대장 유형
(기본개요, 총괄표제부, 표제부, 층별개요, 부속지번, 전유공용면적, 오수정화시설, 주택가격, 전유부, 지역지구구역, 소유자)
String 총괄표제부 필수
sigungu_code 시군구의 5자리 지역코드
(서울 서초구: 11650, 경기 성남 분당구: 41135)
String 41135 필수
bdong_code 읍면동의 5자리 지역코드
(서울 서초구 잠원동: 10600, 경기 성남 분당구 백현동: 11000)
String 11000 필수
bun 주소 번지의 본번
(350번지: 350)
String 540 선택
ji 주소 번지의 부번
(350-20번지: 20)
String nan 선택
translate 컬럼명 한글 표시 여부
(한글 표시: True, 영문 표시: False)
※ 기본값: True
Boolean True 선택
verbose 데이터 조회 진행 상황 메시지 출력 여부
(출력: True, 미출력: False)
※ 기본값: False
Boolean False 선택
wait_time API 추가 요청 시 대기 시간(초)
(30초: 30)
※ 기본값: 30
Integer 30 선택


시군구코드와 법정동코드 조회하기

건축물대장정보를 조회하려면 조회할 건축물이 속해 있는 시군구와 법정동 정보를 알아야 합니다. 예를 들어, 경기도 성남시 분당구 백현동에 있는 건축물의 대장 정보를 조회한다고 가정하면, 분당구 백현동에 해당하는 시군구코드와 법정동코드 정보를 알아야 합니다. 아래 코드는 PublicDataReader 라이브러리를 사용하여 분당구 백현동과 일치하는 행을 찾는 작업을 수행합니다.

  1. 먼저 PublicDataReader 라이브러리를 가져와 pdr라는 별칭으로 사용 할 수 있도록 합니다.
  2. ‘sigungu_name = “분당구” bdong_name = “백현동” 이 부분에서 검색할 시군구와 읍면동을 변수에 저장합니다.
  3. code = pdr.code_bdong() code라는 변수에 pdr의 code_bdong() 함수를 실행하여 그 결과값을 저장합니다. 이 함수는 시군구와 읍면동에 해당하는 코드를 포함하는 데이터프레임을 반환합니다.
  4. code.loc[(code[‘시군구명’].str.contains(sigungu_name)) & (code[‘읍면동명’]==bdong_name)] 이 부분에서는 시군구명열에서 ‘분당구’를 포함하는 행과 읍면동명열에서 ‘백현동’인 행을 검색하는 검색식을 작성합니다.

조회 결과를 살펴보면 분당구에 해당하는 시군구코드는 41135이고, 백현동에 해당하는 법정동코드는 4113511000인 것을 알 수 있습니다. 법정동코드 10자리 중 처음 5자리는 시군구코드와 같고, 이후 5자리는 읍면동코드를 의미합니다. 건축물대장 조회 시 시군구코드와 법정동코드를 사용하는데, 이때 사용되는 법정동코드는 5자리 읍면동코드입니다. 즉, 건축물대장 조회 시 사용할 시군구코드는 41135이고, 법정동코드는 11000이 됩니다.

import PublicDataReader as pdr
sigungu_name = "분당구"
bdong_name = "백현동"
code = pdr.code_bdong()
code.loc[(code['시군구명'].str.contains(sigungu_name)) &
         (code['읍면동명']==bdong_name)]
시도코드 시도명 시군구코드 시군구명 법정동코드 읍면동명 동리명 생성일자 말소일자
5162 41 경기도 41135 성남시 분당구 4113511000 백현동 19930115


건축물대장 조회하기

‘건축물대장정보 서비스’ 신청을 완료했다고 가정하고, 건축물대장 총괄표제부를 조회합니다. api.get_data 메서드를 호출하여 데이터를 조회할 수 있습니다. 메서드의 인자들 중 ledger_type은 건축물대장 유형을 의미합니다. 여기에 ‘총괄표제부’라고 입력합니다. sigungu_code는 시군구코드를 의미합니다. 여기에 ‘41135’를 입력합니다. bdong_code는 법정동코드를 의미합니다. 여기에 ‘11000’을 입력합니다. bun과 ji는 선택 변수로 본번과 부번을 의미합니다. bun에 ‘540’을 입력합니다. 메서드 호출 결과를 df 변수에 할당합니다.

# 건축물대장 총괄표제부 조회하기
df = api.get_data(
    ledger_type="총괄표제부", 
    sigungu_code="41135", 
    bdong_code="11000", 
    bun="540", 
    ji="",
    )
df.tail()
건축면적 부속건축물면적 부속건축물수 건폐율 법정동코드 건물명 블록 외필지수 생성일자 ... 대장종류코드명 순번 시군구코드 특수지명 착공일 연면적 총주차수 사용승인일 용적률 용적률산정연면적
0 7756.72 38963.39 3 71.94 11000 힐스테이트 판교역(7-1BL) None 0540 0 20220825 ... 총괄표제부 1 41135 None 20181121 122211.55 883 20220822 599.69 64655.84

1 rows × 65 columns


전체 코드 정리

전체 코드를 정리하면 다음과 같습니다.

# 서비스키 할당하기
service_key = "공공데이터포털에서 발급받은 서비스 키"

# 데이터 조회 인스턴스 만들기
from PublicDataReader import BuildingLedger
api = BuildingLedger(service_key)

# 시군구코드와 법정동코드 조회하기
import PublicDataReader as pdr
sigungu_name = "분당구"
bdong_name = "백현동"
code = pdr.code_bdong()
code.loc[(code['시군구명'].str.contains(sigungu_name)) &
         (code['읍면동명']==bdong_name)]

# 건축물대장 총괄표제부 조회하기
df = api.get_data(
    ledger_type="총괄표제부", 
    sigungu_code="41135", 
    bdong_code="11000", 
    bun="540", 
    ji="",
    )


참고

댓글남기기