무약촌 파일럿 — 재현 절차 (2026-08-03)

필요한 것
  1. 공공데이터포털 API 키 (환경변수 DRUG_API_KEY)
     - HIRA 약국 B551182 / HIRA 병원 B551182 / NMC B552657 / 행안부 1741000
  2. 네이버 클라우드 Maps 인증키 (.env.local) — 지오코딩·최종 라우팅용
     X-NCP-APIGW-API-KEY-ID / X-NCP-APIGW-API-KEY
  3. SGIS 자료 (수동 다운로드): 읍면동 경계·인구, 500m/1km 인구격자
  4. Python 3.10+ / OSRM (brew install osrm-backend)

실행 순서
  s00_fetch_apis.py        시설 4종 API 수집 (판매업소·약국·보건기관·영업시간)
  s00b_fill_coords.py      판매업소 좌표결측 보완 (구자료 이식 + 지오코딩)
  s01_clean_facilities.py  정제 + 체인/휴게소 플래그 + NMC 영업시간 결합
  s02_boundaries.py        SGIS 경계 + vuski 이름 보강 → 읍·면 필터
  s03_spatial_join.py      시설 → 행정동 공간조인
  s04_grid.py              500m 격자 + 1km 연령비율 배분
  s05_population.py        읍면동 인구
  s06_master_a.py          A단계 — 무약촌 분류 (헤드라인)
  s07_rep_points.py        대표점 (격자 인구가중 중심점)
  osrm_serve.sh            OSRM 기동 (별도 터미널)
  s08_osrm_screen.py rep   대표점 라우팅
  s08_osrm_screen.py base  격자 전수 × layer 5종  ← 대시보드의 근거
  s09_export_web.py        웹 데이터
  s09b_export_facilities.py 시설 레이어
  s09c_export_combo.py     조합 지표
  s10_export_excel.py      엑셀 마스터
  s11_export_raw.py        검증용 원본 CSV

주의
  - 이동시간은 OSRM 자유흐름 × 1.2 (보정계수). 상용 API로 확정 예정
  - 도서 12곳은 OSRM이 페리를 도로로 취급해 과대추정
  - 65세+ 격자값은 1km 비율 배분 추정치 (500m에 연령 항목 없음)
