일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 사회
- 정치
- 횡스크롤
- 공간밀도
- python
- Latent Dirichlet Allocation
- 과학의과학
- 사회면
- 공부
- 파이썬 기초
- 주요일간지
- 연구하며
- LDA
- 사법
- 다정한것이살아남는다
- 지금 다시
- 점프
- 지금다시헌법
- 응답하는
- 인구
- 타인의
- 사법부
- 고통에
- 파이썬
- 네트워크
- 헌법
- 글쓰기
- pygame
- 사회이슈
- 파이게임
- Today
- Total
RoNS 님의 블로그
[Cities]부동산 분석을 위한 OpenStreetMap 활용 (Part 2) 본문

부동산 분석을 위한 다양한 도구가 있지만, OpenStreetMap(OSM)은 강력한 공간 데이터와 경로 분석 기능을 제공하는 무료 오픈소스 플랫폼입니다. 이번 글에서는 OSM을 활용하여 특정 지역 내 이동 경로를 분석하는 방법을 소개합니다. 특히, Python과 OSRM(Open Source Routing Machine)을 활용하여 경로를 시각화하는 방법을 다룹니다.
1. 프로젝트 개요
부동산 분석에서 접근성(accessibility)은 매우 중요한 요소입니다. 특정 위치에서 주요 거점(예: 지하철역, 대형 쇼핑몰, 학교 등)까지의 이동 경로를 분석하면, 해당 부동산의 매력도를 평가할 수 있습니다. 이번 예제에서는 부산광역시 내 부경대학교에서 광안리역까지의 이동 경로를 분석합니다.
2. OSRM을 활용한 경로 분석
OSRM(Open Source Routing Machine)은 OSM 데이터를 기반으로 차량, 보행자, 자전거 등의 경로를 계산할 수 있는 강력한 엔진입니다. 우리는 Python의 requests, folium, polyline 라이브러리를 활용하여 경로 데이터를 가져오고 지도에 시각화합니다.
2.1 Python 코드 설명
아래의 코드를 실행하면 부경대학교에서 광안리역까지의 자전거 및 보행자 경로를 시각적으로 확인할 수 있습니다.
2.2 코드 실행 결과
위의 코드를 실행하면 busan_bike_route.html과 busan_foot_route.html 파일이 생성되며, 브라우저에서 이를 열어보면 다음과 같은 정보를 확인할 수 있습니다:
- 자전거 경로: 파란색 선으로 표시되며, 이동 거리 및 예상 소요 시간이 제공됩니다.
- 보행자 경로: 빨간색 선으로 표시되며, 동일하게 이동 거리 및 예상 소요 시간이 표시됩니다.
- 출발지 및 도착지 마커: 초록색(출발지), 빨간색(도착지) 아이콘으로 경로 시작점과 끝점을 명확히 확인할 수 있습니다.
3. 부동산 분석에서의 활용 방안
이와 같은 경로 분석은 부동산 분석에서 매우 유용하게 활용될 수 있습니다.
- 생활 편의성 분석: 주요 시설(학교, 병원, 쇼핑몰)과의 접근성을 분석하여 거주지 선택에 활용할 수 있습니다.
- 도시 계획 및 정책 수립: 보행자 및 자전거 이동 경로를 분석하여 교통 정책 수립에 활용할 수 있습니다.
def get_route(mode, waypoints):
"""주어진 출발지와 도착지를 기반으로 OSRM에서 경로 데이터 가져오기"""
loc = ";".join([f"{lon},{lat}" for lat, lon in waypoints])
url = f"http://router.project-osrm.org/route/v1/{mode}/{loc}?overview=full"
r = requests.get(url)
if r.status_code != 200:
return {}
res = r.json()
routes = polyline.decode(res['routes'][0]['geometry'])
distance = res['routes'][0]['distance'] # 총 거리 (m)
duration = res['routes'][0]['duration'] # 총 예상 소요 시간 (초)
return {
'route': routes,
'start_point': waypoints[0],
'end_point': waypoints[-1],
'distance_km': round(distance / 1000, 2),
'duration_min': round(duration / 60, 2)
}
def visualize_route(route, mode):
"""경로를 Folium을 사용해 지도에 표시"""
# 지도의 중심을 출발지와 도착지의 중간점으로 설정
map_center = [(route['start_point'][0] + route['end_point'][0]) / 2,
(route['start_point'][1] + route['end_point'][1]) / 2]
route_map = folium.Map(location=map_center, zoom_start=14)
# 경로 그리기
folium.PolyLine(
route['route'],
weight=6,
color='blue' if mode == "bike" else 'red',
opacity=0.7,
tooltip=f"{mode.capitalize()} 경로: {route['distance_km']}km, {route['duration_min']}분"
).add_to(route_map)
# 출발지 마커 (부경대)
folium.Marker(
location=[route['start_point'][0], route['start_point'][1]],
icon=folium.Icon(icon='play', color='green'),
popup="부경대 (출발지)"
).add_to(route_map)
# 도착지 마커 (광안리역)
folium.Marker(
location=[route['end_point'][0], route['end_point'][1]],
icon=folium.Icon(icon='stop', color='red'),
popup="광안리역 (도착지)"
).add_to(route_map)
return route_map
# 부산광역시 (부경대 → 광안리역)
waypoints = [
(35.137635, 129.100531), # 부경대 (출발)
(35.158015, 129.113173) # 광안리역 (도착)
]
# 자전거 경로 요청
bike_route = get_route("bike", waypoints)
# 보행자 경로 요청
foot_route = get_route("foot", waypoints)
# 지도 생성
if bike_route and foot_route:
bike_map = visualize_route(bike_route, "bike")
foot_map = visualize_route(foot_route, "foot")

4. 결론
이번 글에서는 OpenStreetMap과 OSRM을 활용하여 특정 지역 내 경로를 분석하는 방법을 소개했습니다. Python을 사용하여 손쉽게 경로 데이터를 시각화할 수 있으며, 이를 부동산 분석에 적극 활용할 수 있습니다. 다음 글에서는 더 심층적인 GIS 데이터 분석을 다룰 예정입니다.
'Cities' 카테고리의 다른 글
[Cities]지리공간정보의 그래프와 기초분석 : GIS의 시작점(3) (0) | 2025.05.08 |
---|---|
[Cities] 지리공간정보의 그래프와 기초분석(2) (0) | 2025.05.01 |
[Cities]📍지리공간정보 자료 분석, 어디서부터 시작할까? (0) | 2025.04.23 |
[Cities]📘토지거래허가제도와 부동산 공공성과 사적 권리 (0) | 2025.04.06 |
[Cities]부동산 분석을 위한 OpenStreetMap 활용 (0) | 2025.03.14 |