Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 폴더조사
- geopandas
- 3d데이터
- 도커 레이어
- 3d
- MESH
- 좌표거리
- graph
- osmnx
- python최단거리
- geojson
- 지하철역좌표
- 동명이인찾기
- 알고리즘
- 이미지빌드
- docker
- 데이터입수
- Set
- GIS
- 도커
- GCN
- pyvista
- 귀여운고래
- 패치분할
- Python
- 컨테이너
- GNN
- STL
- 파이썬
- 그리드분할
Archives
- Today
- Total
이것저것 기록
[python, GIS] OSMnx를 이용한 최단경로탐색 및 계산 본문
1. 필요한 라이브러리 및 그래프 생성
import osmnx as ox
place = 'Piedmont, California, USA'
G = ox.graph_from_place(place, network_type='drive')
2. 두 점 간의 (거리기반) 최단경로 찾기
'''
1. Basic routing by distance
'''
# 출발지와 목적지 설정
orig = list(G)[0]
dest = list(G)[120]
# 거리 기반 최단경로 1개 탐색
route = ox.shortest_path(G, orig, dest, weight='length')
fig1_1, ax = ox.plot_graph_route(G, route, route_color='y', route_linewidth=6, node_size=0.5)
# 거리 기반 최단경로 여러개 탐색
routes = ox.k_shortest_paths(G, orig, dest, k=30, weight='length')
fig1_2, ax = ox.plot_graph_routes(G, list(routes), route_colors='y', route_linewidth=4, node_size=0.5)
3. 속도와 시간 정보 그래프에 넣기
'''
2. Imputing travel speeds and times
'''
# impute speed on all edges missing data
G = ox.add_edge_speeds(G)
# calculate travel time (seconds) for all edges
G = ox.add_edge_travel_times(G)
# see mean speed/time values by road type
edges = ox.graph_to_gdfs(G, nodes=False)
edges['highway'] = edges['highway'].astype(str)
mean_num = edges.groupby('highway')[['length', 'speed_kph', 'travel_time']].mean().round(1)
4. 거리기반 or 시간기반 최단경로 비교
'''
3. Compare two routes
'''
# calculate two routes by minimizing travel distance vs travel time
orig = list(G)[1]
dest = list(G)[120]
route1 = ox.shortest_path(G, orig, dest, weight='length')
route2 = ox.shortest_path(G, orig, dest, weight='travel_time')
# plot the routes
fig2, ax = ox.plot_graph_routes(G, routes=[route1, route2], route_colors=['r', 'y'],
route_linewidth=6, node_size=0)
route1(빨간색)은 거리 기반의 최단경로이고,
route2(노랑색)은 시간 기반의 최단경로이다.
위의 출력 결과에서 볼 수 있듯이, 동일한 두 개의 노드의 최단 경로가 거리 기반이냐, 시간 기반이냐에 따라 다르게 표시된다.
'코린이 > 실무를 위한 코딩 기록' 카테고리의 다른 글
[python, GIS] OSMnx로 도로 네트워크 단순화 (3) | 2020.12.07 |
---|---|
[python, GIS] OSMnx로 지역명을 geodataframe으로 불러오기 (0) | 2020.11.06 |
[python, GIS] OSMnx로 OSM 지도를 그래프로 불러오는 방법 (1) | 2020.11.04 |
[python, GIS] OSMnx을 이용한 성남시 도로망 분석 및 시각화 (2) | 2020.11.03 |
[python] NetworkX를 이용한 왕좌의 게임 등장인물 네트워크 분석 (0) | 2020.11.02 |
Comments