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
- GCN
- pyvista
- 도커 레이어
- 귀여운고래
- 알고리즘
- 폴더조사
- 파이썬
- 좌표거리
- python최단거리
- 3d데이터
- 도커
- 3d
- docker
- STL
- 패치분할
- geojson
- 컨테이너
- MESH
- GIS
- 그리드분할
- 데이터입수
- 이미지빌드
- graph
- Set
- 지하철역좌표
- 동명이인찾기
- geopandas
- Python
- osmnx
- GNN
Archives
- Today
- Total
이것저것 기록
[python, GIS] OSMnx로 도로 네트워크 단순화 본문
한동안 블로그에 글이 뜸했다.
일주일에 적어도 한 두번 이상은 포스팅 하려고 했는데, 코딩 기록 이외에도 해야할 것들이 너무 많아서 도저히 시간이 나지 않았다 ㅠㅠ
겨울방학도 다가오고 있고, 11월보단 조금 여유가 생겨서 이제 다시 꾸준히 포스팅 해야지!!
OSMnx 포스팅을 또 시작해보려고 한다.
오늘은 복잡하고 쓸데없이 redundant 한 도로 네트워크의 노드를 제거하는 방법에 대해서 포스팅 해 보려고 한다.
1. 해당 좌표 인근의 도로 네트워크를 모두 시각화
import networkx as nx
import osmnx as ox
point = 37.858495, -122.267468
G = ox.graph_from_point(point, network_type='drive', dist=500)
위의 코드는 point에 저장된 좌표의 500 거리 이내의 모든 도로 네트워크를 그래프로 만들어준 것이다.
이제 G에서 필요없는 노드들을 제거해서 단순화 해보려고 한다.
2. Simplification
G_proj = ox.project_graph(G)
intersections = ox.consolidate_intersections(G_proj, rebuild_graph=False, tolerance=15, dead_ends=False)
G2 = ox.consolidate_intersections(G_proj, rebuild_graph=True, tolerance=15, dead_ends=False)
print("Intersections: {}, G: {}, G2: {}".format(len(intersections), len(G), len(G2)))
fig, ax = ox.plot_graph(G, node_color='r')
fig, ax = ox.plot_graph(G2, node_color='r')
출력 결과에서 알 수 있듯이 교차점에 해당하는 노드는 67개 였고, 이들을 제거한 G2의 그래프 크기가 줄어든 것을 볼 수 있다.
ox.consolidate_intersections는 노드들이 뭉쳐있는 곳에서 인근 노드들을 하나의 노드로 머지해주는 함수이다.
rebuild_graph=False이면 geometically 가까운 노드들이 머지되고
rebuild_graph=True이면 topologically 가까운 노드들이 머지된다.
- G (networkx.MultiDiGraph) – a projected graph
- tolerance (float) – nodes are buffered to this distance (in graph’s geometry’s units) and subsequent overlaps are dissolved into a single node
- rebuild_graph (bool) – if True, consolidate the nodes topologically, rebuild the graph, and return as networkx.MultiDiGraph. if False, consolidate the nodes geometrically and return the consolidated node points as geopandas.GeoSeries
- dead_ends (bool) – if False, discard dead-end nodes to return only street-intersection points
- reconnect_edges (bool) – ignored if rebuild_graph is not True. if True, reconnect edges and their geometries in rebuilt graph to the consolidated nodes and update edge length attributes; if False, returned graph has no edges (which is faster if you just need topologically consolidated intersection counts).
'코린이 > 실무를 위한 코딩 기록' 카테고리의 다른 글
[python, GIS] geopy로 주소 간단하게 지오코딩 하는 방법 (5) | 2020.12.09 |
---|---|
[python] NetworkX로 넷플릭스 유사 영화 추천 알고리즘 구현 (0) | 2020.12.09 |
[python, GIS] OSMnx로 지역명을 geodataframe으로 불러오기 (0) | 2020.11.06 |
[python, GIS] OSMnx를 이용한 최단경로탐색 및 계산 (0) | 2020.11.04 |
[python, GIS] OSMnx로 OSM 지도를 그래프로 불러오는 방법 (1) | 2020.11.04 |
Comments