네이버 지도 API를 활용하여 부산 대학가 상권의 거리뷰 이미지를 자동으로 수집하는 프로그램입니다. ChatGPT Vision API와 연동하여 1층 점포의 공실 여부를 자동으로 분석하기 위한 데이터 수집 단계입니다.
- 대상 상권: 부산대 vs 부경대/경성대
- 비교 분석: 높은 공실률 vs 낮은 공실률
- 수집 방식: 도로망 기반 자동 수집 (좌우 양측 촬영)
- 최종 목표: AI 기반 공실 자동 분석 시스템 구축
1. vacancy_analyzer_api.js (메인 프로그램, 18KB)
2. package.json (프로젝트 설정, 471 bytes)
3. package-lock.json (의존성 버전 고정, 41KB)
4. SETUP_GUIDE.md (환경 설정 가이드, 15KB)
5. COORDINATE_GUIDE.md (좌표 정보, 8KB)
6. QUICK_START.md (빠른 시작, 4.4KB)
7. README.md (이 파일)
# Node.js 설치 (https://nodejs.org/)
node --version
# 프로젝트 폴더로 이동
cd vacancy-analyzer
# 의존성 설치
npm install// vacancy_analyzer_api.js 파일 19번 줄 수정
const CONFIG = {
CLIENT_ID: '여기에_네이버_클라우드_API_키_입력', // ← 수정
// ...
};API 키 발급: https://console.ncloud.com/ → Application 등록 → Maps 서비스 선택
node vacancy_analyzer_api.js- 부산대 상권: 224장 (메인거리 180 + 골목 44)
- 부경대/경성대 상권: 204장 (메인거리 120 + 골목 84)
- 전체: 약 428장
- 소요 시간: 30-40분
- 저장 용량: 250-350MB
street_view_data/
├── 부산대/
│ ├── 메인거리_북측/
│ │ ├── left/ (왼쪽 상가)
│ │ │ ├── 0000_left.png
│ │ │ ├── 0000_left_meta.json
│ │ │ └── ...
│ │ └── right/ (오른쪽 상가)
│ ├── 메인거리_남측/
│ ├── 북쪽골목_부리단길/
│ └── 남쪽골목_외식거리/
└── 부경대_경성대/
├── 부경대_정문_동측/
├── 부경대_정문_서측/
├── 경성대_문화골목_북측/
├── 경성대_문화골목_남측/
├── 먹자골목_1/
└── 먹자골목_2/
- 무료 한도: 하루 25,000건, 월 750,000건
- 이 프로젝트: 428건 (1.7%)
- 총 비용: 0원 (무료 범위 내)
- Node.js: v18.0.0 이상 (LTS 권장)
- npm: v9.0.0 이상
- Chrome: 최신 버전
- OS: Windows 10/11, macOS 10.15+, Ubuntu 20.04+
- RAM: 4GB 이상 (8GB 권장)
- 디스크: 1GB 여유 공간
- 네트워크: 안정적인 인터넷 연결
1️⃣ README.md (이 파일) - 전체 개요 파악
2️⃣ SETUP_GUIDE.md - 환경 설정 (필수!)
3️⃣ QUICK_START.md - 빠른 실행
4️⃣ COORDINATE_GUIDE.md - 좌표 수정 (필요시)
📖 SETUP_GUIDE.md의 "문제 해결" 섹션 참고
- 네이버 지도 API 정식 인증: 공식 라이선스 사용
- 버전 고정: package-lock.json으로 환경 일관성 보장
- 오류 처리: 실패 시 자동 재시도 및 로깅
- 도로망 기반 수집: 실제 도로를 따라 이동
- 자동 방향 계산: Bearing 알고리즘으로 도로 진행 방향 자동 계산
- 좌우 양측 촬영: 도로 방향 기준 ±90도 자동 설정
- 우선순위 수집: 메인거리 먼저, 골목상권 나중
- 간격 조절: 도로별 수집 간격 설정 (8m ~ 10m)
- 병렬 처리: 가능한 부분 자동 최적화
- 메타데이터: 파노라마 ID, 촬영일자, 주소, 위치 정보
- 위치 검증: 요청 좌표 vs 실제 좌표 차이 기록
- JSON 형식: 구조화된 데이터 저장
{
"requestedPosition": { "lat": 35.231628, "lng": 129.084364 },
"actualPosition": { "lat": 35.231625, "lng": 129.084360 },
"positionDifference": {
"lat": 0.000003,
"lng": 0.000004,
"distance": 5.2
},
"panoId": "Qa5xv08YdFVzQ0FPT1BV...",
"title": "금정로",
"address": "부산광역시 금정구 장전동",
"photodate": "2024-03",
"pov": { "pan": 90, "tilt": 0, "fov": 90 },
"timestamp": "2025-01-01T10:30:00.000Z"
}import openai
# 수집된 이미지 분석
for image in images:
response = openai.ChatCompletion.create(
model="gpt-4-vision-preview",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "1층 점포 분석 (12개 조건)"},
{"type": "image_url", "image_url": image}
]
}]
)
# 결과: 점포명, 운영상태(영업중/영업종료/임대), 위치 등
save_to_database(response)- 가로 좌우측 촬영
- 여러 점포 각각 분석
- 교차로 너머 제외
- 2층 간판 제외
- 점포명 (간판 기준)
- 운영상태: 영업중/영업종료/임대
- "임대" 정의 8-9. 영업중/종료 정의
- 판단 기준
- 층수
- 중심픽셀 좌표
1. https://map.naver.com 접속
2. 원하는 위치 우클릭 → "이곳이 궁금해요"
3. 주소 옆 화살표 → 위도/경도 복사
4. 코드에 붙여넣기
// vacancy_analyzer_api.js 파일의 ROAD_NETWORKS 객체
waypoints: [
{ lat: 35.231628, lng: 129.084364, description: '시작점' }, // ← 수정
{ lat: 35.231400, lng: 129.085500, description: '중간' }, // ← 수정
{ lat: 35.230352, lng: 129.089011, description: '끝' } // ← 수정
]자세한 내용은 COORDINATE_GUIDE.md 참고
→ Node.js 설치: https://nodejs.org/
rm -rf node_modules package-lock.json
npm install→ 네이버 클라우드 콘솔에서 키 재확인
→ Chrome 설치: https://www.google.com/chrome/
자세한 문제 해결은 SETUP_GUIDE.md 참고
- 네이버 Maps API: https://navermaps.github.io/maps.js.ncp/docs/
- 네이버 클라우드: https://console.ncloud.com/
- Node.js: https://nodejs.org/docs/
- Puppeteer: https://pptr.dev/
- 네이버 클라우드: 1544-3688
- 이메일: support@ncloud.com
MIT License
이 프로젝트는 부산 대학가 상권의 공실 문제를 데이터 기반으로 분석하기 위해 시작되었습니다. 연구에 도움이 되길 바랍니다.
실행 전:
- Node.js 설치 확인
- 6개 파일 모두 확인
-
npm install실행 - API 키 발급
- API 키 입력 및 저장
- Chrome 설치 확인
실행 후:
- street_view_data 폴더 생성 확인
- 이미지 파일 확인 (실제 거리뷰)
- 메타데이터 확인 (actualPosition 있음)
버전: 1.1
최종 업데이트: 2025-11-12
제작: 부산 대학가 상권 공실 분석 프로젝트
행운을 빕니다! 🍀