← 메인 화면프로젝트 자료·코드
← 자료 목록

map_jochiwon.py

프로그램·코드 · 2.8 KB원본 다운로드

원본 내용을 읽기 전용으로 표시합니다.

  1. # 조치원 골목상권 지도 제작기
  2. #
  3. # 골목 덩어리별 예측 위험도까지 지도에 넣어야 해서
  4. import numpy as np
  5. import folium
  6. from folium.plugins import HeatMap
  7. from common import *
  8. def 조치원지도(T, Tp, alley, CATS):
  9. # 조치원 골목상권 지도
  10. log("\n" + "=" * 70)
  11. log(f"7. 지도 시각화 ②: {TARGET} (output/map2_조치원_골목상권.html)")
  12. log("=" * 70)
  13. m2 = 지도만들기([T["위도"].median(), T["경도"].median()], 15)
  14. # 업종별 업소 위치 (앞에 3개 업종만 켜놓음)
  15. for i in range(8):
  16. c = CATS[i]
  17. 레이어 = folium.FeatureGroup(name=f"현재 업소: {c}", show=(i < 3))
  18. for _, r in T[T["상권업종대분류명"] == c].iterrows():
  19. folium.CircleMarker([r["위도"], r["경도"]], radius=3, color=COLORS[i], fill=True,
  20. fill_opacity=0.8, weight=0,
  21. tooltip=f"{r['상호명']} | {r['상권업종중분류명']} | {r['도로']}").add_to(레이어)
  22. 레이어.add_to(m2)
  23. # 없어진 업소, 새로 생긴 업소 히트맵
  24. HeatMap(Tp.loc[Tp["소멸"] == 1, ["위도", "경도"]].values.tolist(), radius=18, blur=15,
  25. name="1년간 소멸 업소 밀집(히트맵)", show=False).add_to(m2)
  26. HeatMap(T.loc[T["신규"] == 1, ["위도", "경도"]].values.tolist(), radius=18, blur=15,
  27. name="1년간 신규 업소 밀집(히트맵)", show=False).add_to(m2)
  28. # 골목 덩어리 표시 (원 클릭하면 정보 나옴)
  29. 골목레이어 = folium.FeatureGroup(name="골목상권 덩어리(DBSCAN)", show=True)
  30. for k, r in alley.iterrows():
  31. 글 = (f"<b>골목군집 {k}</b><br>대표도로: {r['대표도로']}<br>업소 {int(r['업소수'])}개<br>"
  32. f"주요업종: {r['주요업종']}<br>음식 {r['음식비율']:.0%} · 소매 {r['소매비율']:.0%}<br>"
  33. f"1년 소멸률 {r['소멸률']:.0%} · 신규 {r['신규비율']:.0%}<br>예측위험 {r['평균예측위험']:.2f}")
  34. folium.CircleMarker([r["위도"], r["경도"]], radius=8 + np.sqrt(r["업소수"]), color="black", weight=2,
  35. fill=True, fill_color="#ffffff", fill_opacity=0.3,
  36. popup=folium.Popup(글, max_width=280), tooltip=f"골목군집 {k}: {r['대표도로']}").add_to(골목레이어)
  37. 골목레이어.add_to(m2)
  38. folium.LayerControl(collapsed=False).add_to(m2)
  39. m2.save(os.path.join(결과폴더, "map2_조치원_골목상권.html"))
  40. log("저장 완료")
  41. if __name__ == "__main__":
  42. from jochiwon_alley import 조치원분석, 소멸예측
  43. now, prev, CATS = 데이터준비()
  44. T, Tp, alley = 조치원분석(now, prev)
  45. 소멸예측(prev, Tp, alley)
  46. 조치원지도(T, Tp, alley, CATS)
파일 확인 정보

SHA-256: 85e068cb74993d114b2da854f3996470edbc001bb1a55be0ea5e384ba7b0decc