이 프로젝트는 data.go.kr의 건축물대장 표제부 API를 활용하여 대한민국 전국의 건물 데이터를 수집하고 처리하는 멀티스레드 시스템입니다. 대용량 데이터를 효율적으로 처리하며, 중단된 지점부터 재시작할 수 있는 기능을 제공합니다.
- 멀티스레드 처리: 여러 스레드를 사용하여 데이터를 병렬적으로 처리합니다.
- 중단점 복구: 프로그램 중단 시 이전에 처리한 지점부터 재시작할 수 있습니다.
- 에러 처리 및 로깅: 포괄적인 로깅 시스템으로 프로그램 실행 중 발생하는 모든 이벤트를 기록합니다.
- 진행 상황 추적:
tqdm라이브러리를 사용하여 실시간 진행률을 표시합니다. - 데이터 필터링: 주용도코드가 '02'로 시작하는 다세대 주택 데이터만 수집합니다.
- 유연한 환경 설정: .env 파일을 통해 쉽게 환경 변수를 설정할 수 있습니다.
project/
│
├── src/
│ ├── common/
│ │ ├── __init__.py
│ │ ├── logging_setup.py
│ │ ├── state.py
│ │ └── utils.py
│ └── data_collector_bunji.py
│
├── config/
│ └── address_code.json
│
├── scripts/
│ ├── main.py
│ ├── collect_all_data.py
│ └── print_stat.py
│
├── tests/
│ ├── __init__.py
│ ├── test_data_collector.py
│ └── test_utils.py
│
├── requirements.txt
├── sample.env
└── README.md
src/: 소스 코드 디렉토리common/: 공통 유틸리티 및 설정 파일__init__.py: 패키지 초기화 파일logging_setup.py: 로깅 설정state.py: 전역 상태 변수 관리utils.py: 유틸리티 함수
data_collector_bunji.py: 데이터 수집 및 처리 로직
config/: 설정 파일 디렉토리address_code.json: 주소 코드 매핑 파일
scripts/: 프로젝트 실행 파일main.py: 단일 지역 데이터 수집 테스트 스크립트collect_all_data.py: 전체 데이터 수집 스크립트print_stat.py: 수집 통계 출력 스크립트
tests/: 단위 테스트 디렉토리__init__.py: 테스트 패키지 초기화 파일test_data_collector.py: 데이터 수집기 테스트test_utils.py: 유틸리티 함수 테스트
requirements.txt: 프로젝트 의존성 목록sample.env: 환경 변수 샘플 파일README.md: 프로젝트 설명 문서
-
레포지토리 클론:
git clone https://github.com/realcoding2003/k-building-data-index.git cd k-building-data-index -
가상 환경 생성 및 활성화:
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
필요한 패키지 설치:
pip install -r requirements.txt
-
.env 파일 설정 (자세한 내용은 환경 설정 참조)
-
address_code.json 파일 확인
python collect_bunji_one.pypython collect_bunji.pypython print_stat.py수집된 데이터는 다음과 같은 JSON 형식으로 저장됩니다:
{
"시군구코드-법정동코드-번지-호": {
"주소": "일반 주소",
"도로명주소": "도로명을 포함한 주소",
"건물명": "건물의 이름",
"주용도코드": "건물의 주용도 코드",
"주용도코드명": "건물의 주용도 이름 (예: 공동주택)",
"보조용도": "건물의 보조 용도"
}
}-
프로젝트 루트 디렉토리에 있는
sample.env파일을.env로 복사합니다:cp sample.env .env
-
새로 생성된
.env파일을 텍스트 에디터로 열고 필요한 값들을 수정합니다:SERVICE_KEY=your_service_key BASE_URL=http://apis.data.go.kr/1613000/BldRgstService_v2/getBrTitleInfo MAX_THREADS=10 SIGUNGU=44210 BJDONG=10400각 변수의 의미:
SERVICE_KEY: API 서비스 키 (data.go.kr에서 발급)BASE_URL: API 기본 URLMAX_THREADS: 최대 스레드 수 (기본값: 10)SIGUNGU: 시군구 코드BJDONG: 법정동 코드
-
SERVICE_KEY에는 반드시 data.go.kr에서 발급받은 실제 서비스 키를 입력해야 합니다. -
필요에 따라
MAX_THREADS,SIGUNGU,BJDONG값을 조정할 수 있습니다.
주의: .env 파일에는 민감한 정보가 포함될 수 있으므로, 이 파일을 버전 관리 시스템에 커밋하지 않도록 주의하세요. .gitignore 파일에 .env가 포함되어 있는지 확인하십시오.
- 프로젝트를 포크합니다.
- 새 기능 브랜치를 생성합니다 (
git checkout -b feature/amazing-feature). - 변경 사항을 커밋합니다 (
git commit -m 'Add some amazing feature'). - 브랜치에 푸시합니다 (
git push origin feature/amazing-feature). - Pull Request를 생성합니다.
이 프로젝트는 MIT 라이선스를 따릅니다. 자세한 내용은 LICENSE 파일을 참조하세요.