[QGIS] QNEAT3 - OD Matrix (점과 점 사이의 최단 거리 구하기)
안녕하십니까, '데 박' 입니다.
오늘은 강력한 QGIS 공간 네트워크 분석 기능중 QNEAT3의 OD Matrix 를 배워보도록 하겠습니다!
□ OD Matrix의 목적
: 점과 점의 직선상 거리는 실제 사람이 비행기를 타고 날라가는 것이 아니라면 다닐 수 없는 거리다.
따라서 도로망과 좌표를 사용하여 점과 점 사이의 “최소 이동거리” 를 계산하는 것에 목적이 있다


이해를 돕기 위해 서울역에서 서강대역까지의 거리를 예로 들어보겠습니다.
[서울역 - 서강대역]의 직선상 거리는 약 3.3km이지만
현실에서 우리가 이동해야할 거리는 4.0km입니다.
3.3km를 날라갈 것이 아니라면 우리에게 4.0km가 "최단거리" 가 되는 것입니다.
OD Matrix의 활용방안 예시
: 배달 최적 경로 추천서비스 https://techblog.woowahan.com/2608/
배달아~ 배달 가는길 알려줘!(단호함) | 우아한형제들 기술블로그
{{item.name}} 서론 배민라이더스에서는 배달거리를 업소와 고객의 주소 정보를 이용해서 지구는 적당히(?) 둥글다는 계산으로 거리계산을 하고 있습니다. ~대충대충코드~ double theta = from.getLongitude()
techblog.woowahan.com
1. 데이터 출처
- 서울 중학교 좌표 데이터 : 서울 열린데이터 광장https://data.seoul.go.kr/dataList/OA-20556/S/1/datasetView.do
- 서울 도로망 shp 데이터 : 국가공간정보포털 http://data.nsdi.go.kr/dataset/12902
(도로명주소)도로구간 - 오픈마켓
도로의 시점과 종점, 도로명부여의 기본정보
data.nsdi.go.kr
2. [ QNEAT3 ] 플러그인 설치
[ 플러그인 ] - [ QNEAT3 검색 ] - [ 플러그인 설치 ]

3. 데이터 불러오기 및 라벨링
- 도로망, 중학교 좌표계 = 5179 통일

concat("학교명" ,'(',"OBJECTID",')') #라벨링 코드
4. [ 공간처리 툴박스 ] - [ QNEAT3 ]
빨간 화살표와 네모 박스ㅁ 대로 하시면 됩니다.
(사진 클릭해서 보시면 더 잘 보입니다.)






5. Output OD Matrix의 속성(column) 개념
- origin_id = 출발지 id
- destination_id = 도착지 id
- entry_cost = (좌표->도로) 나가는 이동거리
- network_cost = (도로 -> 도로) 이동거리
- exit_cost = (도로 ->좌표) 들어가는 이동거리
- total_cost = 총이동 거리

6. [ 라인 길이 측정 ]으로 OD Matrix가 잘 계산되었는지 확인


"라인 길이 측정"으로 측정된 거리와 OD Matrix결과를 비교하였을때 미세한 차이가 날뿐 잘 계산된 것을 확인하실 수 있습니다! 약 4~6m 차이가 나는 것은 제 손이 자가 아니기 때문입니다^^ㅠ
다음 시간엔 OD Matrix 시각화를 배워보겠습니다!

여기서 글을 마치겠고, 혹시 이해가 안되시는, 혹은 더 궁금한 부분이 있으시다면 댓글 남겨주시면 감사하겠습니다.