상세 컨텐츠

본문 제목

공공 체육시설 예약 데이터를 활용한 헬스장 자동 추천 시스템 만들기

공공데이터

by contributor-news1 2025. 7. 2. 17:31

본문

 

많은 사람들이 건강을 위해 헬스장에 다니고 싶어 합니다. 하지만 근처에 있는 헬스장이 언제 운영하는지, 예약이 가능한지, 사람이 붐비지 않는 시간은 언제인지 등을 확인하는 과정은 생각보다 번거롭습니다. 특히 공공 체육시설은 비용이 저렴하고 접근성도 좋지만, 정보가 흩어져 있어 예약이나 이용 여부를 일일이 검색해야 하는 불편함이 있습니다.

 

 

공공 체육시설 예약데터터를 활용한 헬스장 자동추천
빅데이터, 공공테이터 활용

 

 

필자는 이러한 불편을 줄이기 위해 공공데이터포털에서 제공하는 체육시설 운영 및 예약 정보를 활용해, 사용자의 위치와 시간대에 맞는 헬스장을 자동으로 추천해주는 시스템을 만들었습니다. 이 시스템은 단순한 정보 나열이 아니라, 데이터 기반 분석과 자동화된 추천 기능이 결합된 생활 밀착형 AI 도구입니다.

이 글에서는 공공 데이터를 활용해 헬스장 추천 시스템을 구현하는 과정을 소개하며, 활용할 수 있는 예시를 제시합니다.

 

 

시스템 개요

 

이 시스템은 다음과 같은 흐름으로 작동합니다:

  1. 사용자의 위치 또는 행정동(예: 서울시 강동구)을 기준으로
  2. 인근의 공공 체육시설(헬스장, 실내 체육관 등)의 예약 가능 여부와 운영 시간 확인
  3. 요일, 시간대, 예약 현황을 고려하여 혼잡도가 낮고 이용 가능한 시설 자동 추천

핵심 포인트: ‘지금 갈 수 있는 헬스장’을 자동으로 추천한다는 점에서 사용자 만족도가 높습니다.

 

활용 공공데이터 API

공공 체육시설 예약 정보는 주로 지자체 및 지방공기업에서 운영하는 시설 정보 API를 통해 수집할 수 있습니다.
대표적으로 사용되는 API는 다음과 같습니다:

  • 공공데이터포털 → 시설정보공유시스템 API
    • 운영기관명, 시설명, 체육종목, 위치, 예약 가능 여부, 시간표 등 포함
  • 서울시 열린데이터광장 → 체육시설 예약 API (ex: i-서울유스, 공공서비스예약)

 

기능 구현 예시

1단계 – 사용자 위치 기반 주소 변환

def get_region_from_coords(lat, lon):
    import requests
    headers = {"Authorization": "KakaoAK API_KEY"}
    url = "https://dapi.kakao.com/v2/local/geo/coord2regioncode.json"
    params = {"x": lon, "y": lat}
    res = requests.get(url, headers=headers, params=params)
    return res.json()['documents'][0]['region_2depth_name']
 

 

 2단계 – 해당 지역 공공 헬스장 예약 정보 수집

 

def get_gym_list(region_name):
    url = "http://api.data.go.kr/openapi/공공체육시설API"
    params = {
        "serviceKey": "API_키",
        "sigun": region_name,
        "category": "헬스장",
        "returnType": "json"
    }
    res = requests.get(url, params=params)
    return res.json()['response']['body']['items']

 

3단계 – 요일과 시간 기준으로 추천 필터링

 

from datetime import datetime

def filter_open_gyms(gym_list):
    now = datetime.now()
    current_time = now.strftime('%H%M')
    weekday = now.weekday()  # 월요일: 0

    open_gyms = []
    for gym in gym_list:
        if gym['openTime'] <= current_time <= gym['closeTime']:
            if weekday in gym['availableDays']:  # 예: [0,1,2,3,4,5]
                open_gyms.append(gym)
    return open_gyms

 

 

4단계 – 사용자에게 자동 추천 메시지 출력

 

def recommend_gym(lat, lon):
    region = get_region_from_coords(lat, lon)
    gym_list = get_gym_list(region)
    open_gyms = filter_open_gyms(gym_list)

    if open_gyms:
        print("지금 이용 가능한 헬스장 추천:")
        for gym in open_gyms:
            print(f"{gym['name']} - {gym['address']} / 예약 가능")
    else:
        print("현재 이용 가능한 헬스장이 없습니다.")

 

실제 사용 시 효과

이 시스템을 활용하면 다음과 같은 실질적인 편의성을 얻을 수 있습니다:

  • ✅ 헬스장 검색에 걸리는 시간 절약
  • ✅ 현재 시간 기준으로 '지금 당장 갈 수 있는' 시설만 확인
  • ✅ 예약 가능한지 여부도 함께 확인 가능
  • ✅ 반복 사용 시 추천 정확도가 향상됨 (기록 기반 개인화 확장 가능)

필자는 이 기능을 매일 저녁 6시에 자동 실행되도록 설정해두어, 퇴근 후 운동 가능한 헬스장을 자동으로 확인합니다.
예약까지 연동되도록 확장하면, 실제 생활에서 매우 유용한 도구가 됩니다.

 

확장 아이디어

  • 💡 예약 인원 수 기반 혼잡도 예측 기능
  • 📆 사용자 캘린더 일정과 연동하여 운동 시간 추천
  • 📍 가장 가까운 거리 순, 별점 순 정렬 기능
  • 🔁 자주 가는 헬스장 자동 등록 및 '알림 우선' 기능

 

공공 체육시설 데이터를 활용한 헬스장 자동 추천 시스템은 단순한 위치 기반 정보 제공을 넘어,
실시간 예약 가능 여부, 혼잡도, 운영 시간까지 고려한 ‘실행 가능한 추천 서비스’입니다.

관련글 더보기