[ArcGIS Pro 완전 정복!] ⑧공간 패턴 분석: 교통사고 데이터를 이용한 핫스팟 분석

김 윤지 ArcGIS 가이드 0 Comments

공간 패턴 분석을 수행하면 인지하지 못했던 특성을 파악하거나 어떤 주장에 대한 명확한 근거를 수집할 수 있습니다. 이는 값의 분포, 위치의 공간적 배열을 모두 고려하기 때문에 패턴을 직관적으로 나타낼 수 있습니다.

패턴 분석은 표본 관측치를 기반으로 형상이나 값에 따른 농도를 강조하여 영역을 표시할 수 있습니다. 또한 통제 집단과 실험 집단을 선정하여 현상이나 사건에 대한 영향을 비교함으로써 특성을 도출하도록 지원합니다.

따라서 공간 패턴 분석을 통해 데이터 셋의 집중도 정도를 포함하는 영역을 식별할 수 있으며 패턴이 더욱 명확하게 시각화될 수 있습니다. 데이터 분포의 특성을 이해하면 가설이나 결과에 대한 이성적인 도출을 가능하게 합니다.

공간 패턴을 이해하면 다음과 같은 유형의 질문에 대한 답을 찾을 수 있습니다 🙂

  • 사건의 밀도가 가장 높은 곳은 어디입니까?
  • 발생한 현상의 밀집 정도는 어떻습니까?
  • 발생한 사건에 규칙이나 특이점이 있습니까?
  • 어떤 영역이 위험합니까?

이번 테크스토리에서 준비한 실습은 시간, 위치, 사상자 정보를 포함하는 교통사고 데이터를 이용한 공간 패턴 분석을 수행하려고 합니다. 미국에 있는 A 지역에서 2010년 01월 01일부터 2015년 12월 31일까지 6년간 교통사고가 빈번하게 발생한 장소와 시기를 파악해 위험 지역을 식별하여 예방하려고 합니다. 자, 그럼 시작해볼까요?


[Training : Analyzing traffic accidents in space and time]

☞ 데이터 불러오기

CrashAnalysis 패키지 파일은 충돌 일자, 시간, 사상자 수, 날씨 정보 등을 포함합니다. 


☞ 시공간 큐브 및 핫스팟 생성

[포인트를 집계하여 시공간 큐브 생성(Create Space Time Cube By Aggregating Points)]

핫스팟 분석을 수행하기 위해 시공간 큐브를 생성합니다. 포인트를 집계해 시공간 큐브를 생성하는 도구는 netCDF 데이터 구조로 시공간 저장소에 요약합니다.

  • 입력 피처(Input Features) : AllCrashes10to15
  • 결과 시공간 큐브(Output Space Time Cube) : 사용자 지정 ex)AllCrashes.nc
  • 시간 필드(Time Field) : CRASH_DT
  • 시간 단계 간격(Time Step Interval) : 16주
  • 시간 단계 정렬(Time Step Alignment) : 종료 시간
  • 거리 간격(Distance Interval) : 2마일
  • 집합 모양 유형(Aggregation Shape Type) : 육각형 그리드

결과 메시지를 확인해볼까요? 총 665개 위치 중 221개(33.23%)에 16주 간격으로 포인트가 하나 이상 포함되어 있으며 충돌의 추세가 증가하고 있음을 알 수 있습니다.


[발생 핫스팟 분석(Emerging Hot Spot Analysis)]

생성한 시공간 큐브를 사용하여 발생 핫스팟 분석을 수행합니다. 이때 네이버후드 거리 및 시간 단계는 기본값을 사용하고, 나머지 매개변수는 아래와 같이 입력합니다.

  • 입력 시공간 큐브(Input Space Time Cube) : AllCrashes.nc
  • 분석 변수(Analysis Variable) : COUNT
  • 결과 피처(Output Features) : 사용자 지정 ex)AllCrashes.nc

결과창에는 새로운 핫/콜드스팟, 연속 핫/콜드스팟 등을 포함한 17개의 패턴을 나타내며, 실행 결과에서 표시되는 메시지는 기본값으로 정의한 네이버후드의 정보를 제공하고 있으니 확인해주세요.


☞ 도로망 충돌 핫스팟 생성

이번 단계에서는 스냅 도구를 사용해 충돌 포인트를 도로망 라인에 일치시킬 것입니다. 먼저 스내핑하기 전에 피처 복사를 수행하여 도로에 연결할 포인트를 복사해주세요.

[피처 복사(Copy Feature)]

  • 입력 피처(Input Feature): AllCrashes10to15
  • 결과 피처 클래스(Input Feature Class): 사용자 지정 ex) Crash_Points

[스냅(Snap)]

  • 입력 피처(Input Features) : Crash_Points
  • 스냅 환경(Snap Environment)
    – 피처(Features) : RoadSegments
    – 
    유형(Type) : 엣지(Edge)
    – 
    거리(Distance) : 0.25마일

좌측 그림에서 포인트가 도로 데이터 바깥에 위치하는 것을 볼 수 있는데요, 스냅 도구를 사용한 후 포인트가 도로 데이터에 매치된 것을 우측 그림에서 확인할 수 있습니다.


[공간 조인(Spatial Join)]

공간 도구를 사용하여 각 도로의 구간에서 발생한 사고 발생수를 계산할 수 있습니다. 공간 조인 시 제거하려는 필드 위에 마우스를 가져가면 X표시가 나타나는데, 이때 분석에 필요한 UniqID 및 Fatalities를 제외한 나머지 필드를 제거해주세요.

  • 대상 피처(Target Features) : RoadSegments
  • 조인 피처(Join Features) : Crash_Points
  • 결과 피처 클래스(Output Feature Class) : 사용자 지정 ex) RoadCrash_Counts
  • 조인 피처의 필드 맵(Field Map of Join Features) : UniqID, First; Fatalities, Sum

[필드 추가(Add Field)]

각 도로 구간에 대해 거리/시간에 따른 충돌률은 필드 추가 및 계산 도구를 이용하여 산출합니다.

  • 입력 테이블(Input Table) : Road_Crash_Counts
  • 필드명(Field Name) : CrashRate
  • 필드 유형(Field Type) : Double
  • 필드 별칭(Field Alias) : Average crashes per mile per year

[필드 계산(Calculate Field)]

각 구간에서 발생한 충돌률은 발생한 포인트 수를 거리로 나눠 계산합니다. 단, 충돌 포인트는 6년 동안 수집했으므로 거리에 6을 곱해줍니다.

  • 입력 테이블(Input Table) : Road_Crash_Counts
  • 필드명(Field Name) : Average crashes per mile per year
  • 식(Expression) : !Join_Count! / (6 * !Shape_Length!)

[핫스팟 분석(Hot Spot Analysis(Getis-Ord Gi*))]

필드가 생성됐으면 충돌률에 대한 핫스팟 분석을 수행합니다. 이때 가중치 행렬 파일에 입력되는 CrshNtw360ft30.swm 파일은 다운받은 폴더에 위치해있습니다.

  • 피처 클래스 입력(Input Feature Class) : Road_Crash_Counts
  • 입력 필드(Input Field) : Average crashes per mile per year
  • 결과 피처 클래스(Output Feature Class) : 사용자 지정 ex) RoadCrash_HotSpots
  • 공간 관계 개념화(Conceptualization of Spatial Relationships) : 파일에서 공간 가중치 가져오기(Get spatial weights from file)
  • 가중치 행렬 파일(Weights Matrix File) : CrshNtw360ft30.swm
  • Apply False Discovery Rate (FDR) 보정 적용 체크

핫스팟 분석 결과는 통계적으로 90% 신뢰구간, 95% 신뢰구간, 99% 신뢰구간을 산출하여 나타내며, 이를 통해 A 지역의 도로망에서 충돌률이 높은 구간을 확인할 수 있습니다. 참고로 좌표계가 다르다는 경고는 해당 분석에는 영향을 미치지 않으니 무시하셔도 무방합니다.


☞ 데이터를 차트로 시각화

[선형 차트 생성(Create Line Chart)]

지금까지 충돌 데이터를 이용한 사고 동향 및 빈도를 핫스팟으로 분석해봤습니다. 마지막으로 어느 시간대에 사고가 가장 빈번하게 발생했는지 선형 차트를 통해 알아보겠습니다.

  • AllCrashes10to15 레이어 → 차트 생성(Create Chart) → 선형 차트(Line Chart) 클릭
  • 차트(Chart)창 매개변수
    – 날짜 또는 숫자(Date or Number) : CRASH_HOD
    – 집계(Aggregation) : 개수
    – 시리즈(Data series) : 시리즈로 분할된 하나의 필드를 통해(From one field split into series)
    – 분할 기준(Split by) : CRASH_DOW
  • 일반(General)탭 매개변수
    – 
    차트 제목(Chart title) : Traffic Accidents
    – X축(X axis title) : Hour of the Day (24 hour clock)
    – Y축(Y axis title) : Number of Crashes

생성된 선형 차트는 시간대에 따른 교통사고 발생 수를 시각화한 결과로 오후 3시부터 5시까지 충돌이 가장 많이 발생한 것을 확인할 수 있습니다.

이번 실습에서는 핫스팟 분석을 이용한 충돌 사고 동향 및 충돌률 패턴 분석을 수행하고, 사고 발생 빈도를 선형 차트로 시각화하여 결과를 확인해봤습니다. 이처럼 ArcGIS Pro는 동일한 데이터를 이용하여 분석 목적에 따른 적절한 방법을 선정하고 수행할 수 있도록 지원합니다. 다음 실습에서는 핫스팟 분석 결과를 3차원으로 시각화하는 방법을 소개해드릴 예정이니 기대해주세요 🙂


댓글 남기기