Chhaya: A Shade-First Walking Map for Tropical Cities
Chhaya: 그늘을 우선하는 열대 도시 도보 지도
Chhaya는 콜카타의 건물 그림자를 계산해 보행자가 햇볕을 덜 받는 경로를 찾도록 돕는 오픈소스 지도입니다. 작성자는 UTM 기반 그림자 계산과 이중 경로 탐색, 음성 안내를 결합했으며, 미세 조정한 모델의 요청 해석 정확도와 기온 예측 결과도 공개합니다.
- 주제
AI 요약
Chhaya는 콜카타의 보행 경로를 거리뿐 아니라 직사광선 노출 시간으로 비교하는 오픈소스 프로젝트입니다. 사용자가 출발지와 목적지, 출발 시각, 햇볕을 피하려는 정도를 입력하면 건물 그림자와 도로 데이터를 바탕으로 그늘 경로와 최단 경로를 함께 계산합니다. 가족·도움, 단체 하이킹, 혼자 걷기 모드를 제공하며, 작성자는 ElevenLabs 음성 안내를 이용해 화면을 계속 보지 않고 길을 따라가도록 설계했다고 설명합니다.
그림자 계산과 경로 비용
지도와 경로 계산에는 Python, FastAPI, Shapely, PyProj를 사용합니다. 지리정보는 UTM Zone 45N(EPSG:32645)으로 투영해 거리 단위를 미터로 맞춥니다. NOAA 태양 위치 알고리즘으로 분 단위 태양 고도와 방위각을 구하고, 건물 높이를 바탕으로 그림자 다각형을 계산합니다. 프로젝트는 OpenStreetMap(OSM)에서 가져온 건물 650개를 활용합니다.
Park Street와 Camac Street 주변 도로망은 보행 가능한 구간 1,203개와 노드 1,108개로 구성합니다. 각 도로 구간의 햇볕 노출 비율을 0~1 사이 값으로 두고, 길이와 햇볕 회피 가중치를 결합해 비용을 계산합니다. 식은 cₑ = lₑ × (1 + k × sₑ)입니다. k=0으로 최단 경로를 구하고, 햇볕을 덜 받는 경로에는 k=4.5를 적용해 Dijkstra 탐색을 한 번씩 수행합니다. 걷는 속도를 분당 50m로 가정해 예상 직사광선 노출 시간을 ‘sun-minutes’로 표시합니다.
작성자가 제시한 사례에서 Middleton Row부터 Belle Vue Clinic까지 최단 경로는 620m, 직사광선 노출은 8.8분입니다. 그늘 경로는 710m로 더 길지만 노출 시간은 2.4분이며, 구간의 74%가 그늘이라고 안내합니다. Russell Street에서 Flurys까지는 최단 경로 480m에 6.1분, 그늘 경로 535m에 1.2분의 노출 시간을 제시합니다. 작성자는 OSM이 천막이나 반얀나무 그늘을 놓칠 수 있고, 기본 건물 높이 16m 가정과 유리 외벽의 반사광도 정확도에 영향을 준다고 한계를 밝힙니다.
자연어 입력과 기온 예측
요청 해석에는 Qwen-2.5-3B-Instruct를 Tinker로 미세 조정한 모델을 사용합니다. 로마자 표기의 벵골어·힌디어와 영어가 섞인 요청에서 출발지, 목적지, 시간, 햇볕 허용도를 추출하도록 구성했습니다. 작성자가 공개한 홀드아웃 30건 평가에서 파싱 정확도는 기준 모델 66.7%에서 미세 조정 모델 93.3%로 올랐습니다. 로마자 벵골어는 62.5%에서 100%, 로마자 힌디어는 50%에서 83.3%로 개선됐습니다. 지연 시간은 1,120ms에서 285ms로 줄었고, 작성자는 70B급 모델을 기준으로 비용이 4.2배 낮다고 보고합니다.
걷기 좋은 시간대 예측에는 TabPFN-2를 적용합니다. Open-Meteo의 2004~2024년 10월 시간별 기록 7,657건으로 학습하고 2025년 10월 데이터 403건으로 평가했습니다. 평균절대오차(MAE)는 기후 평균 기준선 1.7723°C, TabPFN-2 0.4699°C로 보고됐으며, 작성자 계산으로 오차가 73.49% 감소했습니다. 이 결과는 콜카타 Park Street 자료에 관한 프로젝트 평가입니다.
그룹 걷기와 현장 정보
Chhaya에는 경로 탐색 외에 단체 하이킹 기능도 들어갑니다. 사용자는 다섯 가지 산책 그룹 중 하나에 참여하고, 지도에서 구성원의 위치를 확인하며 채팅과 도착 확인을 이용할 수 있습니다. 3분 이상 뒤처진 참가자가 생기면 대기, 지름길, 후미 지원, 그룹 분리 방안을 점수화해 제안합니다. 이용자는 특정 장소에 사진과 설명을 담은 카드를 남길 수 있고, 다른 사용자는 가까이 다가가야 잠금 해제할 수 있습니다. 카드 유형과 신고 기능, 24시간 만료, 분당 요청 제한도 설명합니다.
그늘에 있는 휴식 장소를 찾는 기능에는 Tiger Data의 pgvector를 사용합니다. 키워드와 벡터 유사도를 함께 조회해 “나무 그늘이 짙고 조용한 곳” 같은 요청에 맞는 장소를 검색하며, 연결이 끊기면 결정론적 오프라인 대체 경로를 사용한다고 합니다. Mastra 에이전트는 경로 계획, 최적 시간대, 그림자 조회, 장소 검색을 FastAPI 백엔드와 연결합니다.
음성 안내는 ElevenLabs가 설정돼 있으면 음성 파일을 생성하고, API 키가 없거나 할당량·오류 문제가 생기면 브라우저 Web Speech API로 전환합니다. 작성자는 Middleton Row에서 Belle Vue Clinic까지 현장 테스트를 진행했으며, 음성으로 방향과 그늘 정보를 들으며 휴대전화를 꺼내지 않고 걸었다고 적었습니다. 다만 글에 소개된 라이브 데모는 당시 Render 배포를 준비 중이라고 안내합니다.
원문: dev.to / 번역·요약: Trawling
dev.to 반응
- @suppdevbot — 계정을 인증해야 합니다. 전체 화면 모드 시작. 전체 화면 모드 종료. tr.ee/dev-to
- @susmita8336biswas — 좋네요. 마음에 들었습니다.