전체 목차 열기 · 10부 35장

PART 07 / CHAPTER 26

26 · 서비스권·등시간권과 보행 가정

거리 서비스권과 시간 등시간권의 가정을 읽고 노드 도달권을 계산합니다.

이 페이지에서

학습 목표: 거리 서비스권과 시간 등시간권의 가정을 읽고 노드 도달권을 계산합니다.

준비: 실행 환경 · 도구와 용어. 예제 자료는 별도 표시가 없는 한 합성 자료입니다.

개념

서비스권은 지정한 거리나 비용 안에서 도달 가능한 범위를 뜻합니다. 등시간권(isochrone)은 같은 이동 시간에 도달하는 범위를 표현합니다. 네트워크에서 먼저 계산되는 것은 도달 가능한 노드·간선이며, 이를 둘러싼 폴리곤은 추가적인 표현 모델입니다.

도달 노드의 convex hull은 하천이나 통행 불가능한 부지도 덮을 수 있습니다. 간선 중간에서 제한 시간이 끝나는 부분까지 처리해야 정밀한 경계를 만들 수 있습니다.

왜 필요한가

'공원 5분 생활권'은 속도, 경사, 신호, 계단, 접근 제한을 어떻게 반영하는지에 따라 달라집니다. 지도와 함께 가정을 적어야 결과를 정책 지표로 읽을 수 있습니다.

핵심 API

nx.single_source_dijkstra_path_length(G, source, cutoff=..., weight=...)로 제한 비용 이내의 노드를 찾습니다. 시간 가중치는 length_m / speed_m_per_min으로 계산할 수 있지만 고정 속도는 교육용 가정입니다.

최소 실행 예제

import networkx as nx

g = nx.Graph()
g.add_edge("gate", "A", length=160)
g.add_edge("A", "B", length=160)
g.add_edge("B", "C", length=160)
speed_m_per_min = 80
for _, _, data in g.edges(data=True):
    data["minutes"] = data["length"] / speed_m_per_min
reachable = nx.single_source_dijkstra_path_length(
    g, "gate", cutoff=5, weight="minutes")
assert reachable == {"gate":0, "A":2.0, "B":4.0}
print(reachable)
print("B-C 간선의 앞 80m도 5분 이내지만 노드 결과에는 나타나지 않습니다.")

조경·도시 실무 예제

예제 속도 80m/분은 법적 기준이나 모든 이용자의 속도가 아닙니다. 노약자·휠체어 접근성은 경사, 단차, 보도 유무를 별도 고려하세요. 이 코드는 노드 도달권이며 완성된 등시간권 폴리곤 생성기는 아닙니다.

시각화와 결과 읽기

도달 노드는 녹색, 미도달 노드는 회색으로 두고 제한 시간에 걸친 간선은 일부만 색칠하세요. 직선 버퍼와 겹쳐 그리면 차이를 볼 수 있습니다.

흔한 오류

거리 cutoff에 분 단위를 넣지 않습니다. 자동차 주행시간 추정치를 보행시간으로 사용하지 않습니다. 도달 노드만 연결한 면적을 실제 자유 보행 가능 면적으로 해석하지 않습니다.

연습문제

속도를 60m/분으로 바꿔 5분 이내 노드가 어떻게 달라지는지 계산하세요.

전체 예제 내려받기 · 실행: python chapter26.py

다음 단계

27 · 녹지 접근성·밀도·인구 분모로 이어집니다.

출처

NetworkX Dijkstra cutoff. 확인 2026-09-30.