Skip to content

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

16 Commits

Folders and files

Repository files navigation

Seismic Risk Visualization Dashboard

- 지진 진도와 취약성 지표를 기반으로 국가별 지진 위험을 시각화한 데이터 분석 대시보드


🔍 이 프로젝트를 시작하게 된 배경

이 프로젝트는 학교 지구과학 발표 수업을 준비하는 과정에서 출발했다. 지진이라는 주제를 단순한 이론 설명이 아니라, 데이터와 시각화를 통해 설명할 수 없을까라는 질문에서 시작되었다.

지진은 발생 이후의 피해뿐만 아니라, 발생 가능성·영향 범위·국가별 취약성에 따라 전혀 다른 양상으로 나타난다. 만약 지진이 발생했거나 발생 직전의 상황이라면, 시뮬레이션을 통해 피해 지역, 피해 규모, 예상 진도 수준을 미리 파악하는 것이 중요하다고 생각했다.

이러한 분석을 구현하는 도구로 Python을 선택했다. Python은 비교적 가볍고 빠르게 시각화와 데이터 처리가 가능하며, 현재 학습 단계(고등학교 2학년)에서 현실적으로 다룰 수 있는 언어라고 판단했기 때문이다.

처음에는 한국만을 대상으로 분석하는 것도 고려했지만, 국내 데이터는 지역 범위가 제한적이어서 보다 정밀하고 깊은 분석이 필요했고, 이는 C 언어 기반의 저수준 시뮬레이션까지 요구되는 영역이라고 판단했다.

• 반면 국가 단위로 범위를 확장하면

• 지도 기반 시각화가 명확해지고

• 국가 간 비교가 가능해지며

Python의 장점을 살린 분석이 가능하다고 보았다.

이 프로젝트는 정확한 지진 예측을 목표로 하기보다는, 지진 데이터를 어떻게 시각화하고 해석하면 위험을 더 직관적으로 이해할 수 있는지를 실험하기 위한 시도이다.

🎯 이 프로젝트가 다루는 문제

지진 위험은 흔히 진도(규모) 하나의 숫자로만 설명된다. 하지만 실제로 피해의 크기와 영향 범위는 지진의 크기뿐만 아니라 국가별 환경과 구조적 취약성에 따라 크게 달라진다.

문제는 이러한 요소들이 한 화면에서 직관적으로 비교되기 어렵다는 점이다. 국가별 지진 규모 데이터는 존재하지만, 이를 지도 위에서 비교하거나 취약성과 함께 해석할 수 있는 형태로 제공되는 경우는 많지 않다.

또한 지진 데이터를 다룰 때,

• 어느 국가가 상대적으로 더 위험한지

• 진도가 크지 않아도 위험이 커질 수 있는 경우는 무엇인지

• 위험이 특정 구간에 집중되는지, 분산되는지

와 같은 질문에 시각적으로 답해주는 자료는 부족하다고 느꼈다.

이 프로젝트는 이러한 한계를 해결하기 위해 지진 규모와 국가별 취약성을 함께 고려하여 지진 위험을 ‘숫자’가 아닌 ‘패턴’으로 보여주는 것을 목표로 한다.

정확한 피해 예측이나 실제 재난 시뮬레이션이 아니라, 지진 데이터를 어떻게 시각화하면 위험을 더 쉽게 이해하고 비교할 수 있는지를 탐구하는 것이 이 프로젝트가 다루는 핵심 문제이다.

📦 사용한 데이터와 그 한계

이 프로젝트에서 사용한 지진 데이터는 국가별 대표적인 지진 규모 값을 기준으로 구성되었다. 개별 지진 사건을 하나씩 분석하기보다는, 국가 단위에서 지진 위험을 비교하기 쉬운 형태로 정리하는 데 초점을 두었다.

지진 규모와 함께 사용한 국가별 취약성 지수는 건축 환경, 지리적 조건, 대응 체계와 같은 요소를 단순한 수치로 표현한 상대적인 기준이다. 이는 실제 통계나 단일 지표를 그대로 반영한 값이 아니라, 시각화를 위한 비교 지표로 설정된 값이다.

이러한 데이터 구성은 정확한 피해 규모나 발생 확률을 계산하기 위한 목적이 아니다. 대신 국가 간 지진 위험을 한 화면에서 비교하고 해석하기 쉽도록 만드는 데 의미가 있다.

다만 이 데이터에는 분명한 한계가 존재한다.

시간에 따른 변화나 연속적인 지진 발생은 반영되지 않았다.

인구 밀도, 경제 규모, 건축 기준과 같은 세부 요소는 포함되지 않았다.

실제 피해 규모나 사망자 수를 직접적으로 나타내지 않는다.

취약성 지수는 절대적인 값이 아니라 상대 비교를 위한 수치이다.

따라서 이 결과는 실제 재난 대응이나 정책 판단에 바로 사용되기보다는, 지진 데이터를 어떤 방식으로 바라보고 정리할 수 있는지를 보여주는 분석 사례로 이해하는 것이 적절하다.

🧩 위험을 수치로 만드는 기준

범죄 위험도는 단일 요소로 판단하지 않고, 여러 요인을 종합해 점수화하였다. 각 요인은 실제 범죄 발생과의 연관성을 기준으로 선정되었으며, 값의 크기에 따라 위험도가 단계적으로 증가하도록 설계하였다.

1️⃣ 범죄 발생 빈도

• 일정 기간(예: 연 단위) 동안 발생한 범죄 건수를 기준으로 사용

• 범죄 발생 횟수가 많을수록 해당 지역의 기본 위험 점수를 높게 부여

• 단순 존재 여부가 아니라 누적 빈도를 반영하여 일시적 사건의 영향을 줄임

2️⃣ 범죄 유형별 가중치

• 모든 범죄를 동일하게 취급하지 않고, 사회적 위험도가 높은 범죄에 더 큰 가중치를 적용

• 예시

  • 강력 범죄: 높은 가중치

  • 절도·경범죄: 상대적으로 낮은 가중치

• 이를 통해 단순 사건 수보다 위험의 질적 차이를 반영

3️⃣ 인구 대비 범죄율

• 절대적인 범죄 수치가 아닌, 인구 규모를 고려한 상대적 위험도를 계산

• 인구가 많은 지역이 과대 평가되지 않도록

image

• 실제 체감 위험에 가까운 수치를 도출하는 데 목적이 있음

4️⃣ 시간적 요인

• 특정 시간대(야간, 심야)에 범죄가 집중되는 경우 위험도를 추가 반영

• 동일한 범죄 수라도 발생 시간에 따라 체감 위험이 다르다는 점을 고려

• 주로 야간 범죄 비중이 높을수록 점수 상승

5️⃣ 최종 위험 점수 산출 방식

• 위 요소들을 정규화한 뒤 가중 합산 방식으로 하나의 위험 점수로 통합

• 점수는 0~100 범위로 변환하여 직관적으로 해석 가능하도록 구성

• 점수가 높을수록 상대적으로 범죄 위험이 높은 지역으로 분류

📌 기준의 특징 요약

• 단순 통계 나열이 아닌 비교 가능한 수치로 변환

• 지역 간 상대적 위험 차이를 명확하게 드러냄

• 실제 범죄 특성과 체감 위험을 동시에 반영하도록 설계됨

🗺️ 왜 지도로 시작했는가

이 프로젝트에서는 범죄 위험을 단순한 수치 예측으로 끝내지 않고, 먼저 지도를 통해 전체적인 분포를 확인하는 방식으로 접근했다. 이는 범죄 위험이 개별 데이터 값보다 지역 간 관계와 위치적 특성에 더 크게 영향을 받는다고 판단했기 때문이다. 또한 고등학생 수준에서 구현 가능한 기술과 시간적 제약을 고려했을 때, 복잡한 수식이나 고차원 모델보다 시각적으로 명확한 표현이 분석의 신뢰도를 높일 수 있다고 보았다. 지도를 출발점으로 삼음으로써 위험이 집중되는 지역과 그렇지 않은 지역을 직관적으로 구분할 수 있었고, 이후 수치 기반 분석 결과를 해석할 때도 현실적인 맥락 속에서 이해할 수 있었다. 즉, 지도는 결과를 보여주기 위한 장식이 아니라, 제한된 환경 속에서 가장 설득력 있는 분석 흐름을 만들기 위한 합리적인 선택이었다.

🔴 진도와 취약성을 함께 보면 보이는 것

지진 진도는 지진의 물리적인 강도를 나타내지만, 그것만으로 실제 피해 규모를 설명하기에는 한계가 있다. 같은 진도의 지진이라도 지역에 따라 피해 정도가 크게 달라지기 때문이다. 이러한 차이는 건물 구조, 인구 밀도, 도시화 수준과 같은 지역의 취약성에서 발생한다.

이 프로젝트에서는 지진 진도 데이터에 더해 각 국가 및 지역의 취약성 지표를 함께 고려함으로써, 단순히 “강한 지진이 발생한 곳”이 아니라 “실질적인 위험이 커지는 조건”이 무엇인지에 주목했다. 이를 통해 진도가 상대적으로 낮더라도 취약성이 높은 지역에서는 위험도가 크게 나타날 수 있으며, 반대로 진도가 높아도 기반 시설이 잘 갖춰진 지역에서는 위험이 상대적으로 완화될 수 있음을 확인할 수 있었다.

결과적으로 진도와 취약성을 함께 분석하는 방식은 지진 위험을 단일 기준으로 판단하는 한계를 줄여 주었고, 위험을 보다 현실적인 관점에서 해석할 수 있게 했다. 이는 지진을 자연 현상으로만 보지 않고, 사회적·환경적 조건과 결합된 문제로 바라보려는 이 프로젝트의 핵심 접근 방식이다.

🏆 상위 국가 분석: 단순 랭킹이 아닌 이유

본 프로젝트에서 상위 국가 분석은 위험 점수를 기준으로 국가를 나열하기 위한 목적이 아니다. 단순한 순위 비교는 결과를 빠르게 보여줄 수는 있지만, 그 수치가 만들어진 배경과 구조를 설명하기에는 한계가 있다. 따라서 이 분석에서는 위험 점수가 높게 나타난 국가들을 대상으로, 어떠한 요인들이 결합되어 해당 결과가 도출되었는지를 해석하는 데 초점을 맞췄다.

특히 지진 발생 빈도나 최대 진도와 같은 물리적 요인만으로는 국가 간 위험도의 차이를 충분히 설명할 수 없다는 점에 주목했다. 일부 국가는 지진 활동이 빈번함에도 상대적으로 위험 점수가 낮게 나타났고, 반대로 지진 발생 빈도가 비교적 낮은 국가임에도 위험 점수가 높게 산출된 사례도 확인되었다. 이는 위험 점수가 단순한 자연 현상의 크기가 아니라, 인구 분포, 도시 집중도, 사회적 취약성과 같은 요소가 함께 반영된 결과임을 보여준다.

이러한 이유로 상위 국가 분석은 ‘어느 나라가 더 위험한가’를 판단하기 위한 단계가 아니라, 위험을 구성하는 조건들이 어떤 방식으로 작용하는지를 파악하기 위한 분석 과정으로 사용되었다. 이를 통해 위험 점수는 고정된 평가가 아니라, 여러 변수의 상호작용 속에서 형성되는 상대적인 지표임을 명확히 하고자 했다.

📊 분포로 보는 지진 위험의 흐름

지진 위험을 이해할 때 개별 국가나 특정 사례만 보는 방식에는 한계가 있다. 일부 극단적인 값이 전체 인식을 왜곡할 수 있기 때문이다. 그래서 이 프로젝트에서는 위험 점수를 분포 형태로 시각화하여, 전체 데이터가 어떤 범위에 몰려 있는지와 어떤 구간에서 변화가 나타나는지를 함께 살펴보았다.

📉 분포를 통해 확인한 첫 번째 특징은, 대부분의 지역이 극단적으로 높은 위험 구간에 속하지 않는다는 점이다. 이는 지진 위험이 일부 지역에만 집중된 문제가 아니라, 다양한 수준으로 넓게 퍼져 있음을 의미한다. 다시 말해 ‘위험 지역’과 ‘안전 지역’이 명확히 나뉘기보다는, 연속적인 스펙트럼 형태로 존재한다는 것을 보여준다.

📈 또한 분포의 형태를 보면 특정 구간에서 위험 점수가 급격히 증가하는 지점이 나타나는데, 이 구간은 지진 진도와 취약성이 동시에 영향을 미치기 시작하는 영역으로 해석할 수 있다. 이러한 변화 지점은 단순 평균값이나 최대값 분석만으로는 쉽게 드러나지 않는다.

🔍 이처럼 분포 기반 분석은 개별 결과를 평가하기보다, 전체적인 위험의 흐름과 구조를 이해하는 데 초점을 둔다. 이를 통해 지진 위험을 단순한 수치 비교가 아닌, 점진적으로 변화하는 현상으로 바라볼 수 있었으며, 이후 국가별·지역별 분석의 해석 기준으로도 활용할 수 있었다.

🧪 이 결과를 어떻게 해석해야 하는가

이 대시보드에서 보여주는 모든 결과는 특정 국가의 위험을 단정하기 위한 결론이 아니라, 지진 위험을 여러 각도에서 바라볼 수 있게 정리한 관찰 결과에 가깝다. 지도, 산점도, 분포 그래프, 랭킹은 각각 다른 정보를 강조하며, 어느 하나만으로 전체 상황을 설명하도록 만들어지지 않았다. → 이 결과는 예측이 아니라 해석을 돕기 위한 시각화이다.

진도 지수가 높게 나타난 국가는 강한 지진이 관측되었거나 자주 발생하는 지역일 가능성이 크지만, 이것이 곧 피해 규모를 의미하지는 않는다. 실제 피해는 건축 기준, 도시 밀도, 대응 체계와 같은 요소에 따라 크게 달라질 수 있기 때문이다. 이 프로젝트에서는 이러한 요소를 모두 포함하지 않았기 때문에, 결과는 “위험의 크기”보다는 “위험이 나타나는 방향”을 보여주는 역할을 한다. → 숫자는 비교를 가능하게 하지만, 현실을 그대로 복사하지는 않는다.

또한 취약성과 진도를 함께 시각화했을 때 나타나는 분포는 특정 국가가 왜 눈에 띄는지를 설명해 준다. 진도는 높지만 취약성이 낮은 경우와, 진도는 상대적으로 낮지만 취약성이 높은 경우는 그래프에서 전혀 다른 위치에 놓인다. 이 차이는 단순 랭킹에서는 보이지 않지만, 시각화를 통해서는 분명하게 드러난다. → 위험은 하나의 값이 아니라 여러 조건이 겹친 결과다.

이 결과를 해석할 때 가장 중요한 점은, 각 그래프가 서로를 보완하도록 설계되었다는 것이다. 지도에서 눈에 띈 국가가 분포 그래프에서는 평균 근처에 위치할 수도 있고, 상위 랭킹에 포함된 국가가 산점도에서는 극단적인 위치에 있지 않을 수도 있다. 이러한 불일치는 오류가 아니라, 서로 다른 관점에서 데이터를 바라본 결과이다. → 같은 데이터라도 보는 방식에 따라 전혀 다른 이야기를 한다.

따라서 이 대시보드는 “이 나라가 가장 위험하다”라는 답을 주기보다는, “왜 그렇게 보이는지”, “어떤 요소가 작용했는지”를 생각하게 만드는 도구에 가깝다. 이 결과를 그대로 받아들이기보다, 각 시각화가 강조하는 포인트를 함께 읽는 것이 올바른 해석에 더 가깝다.

⚠️ 이 분석이 하지 않는 것

아래 화면은 이 프로젝트의 전체 실행 결과를 한 번에 보여주는 대시보드이다. 이 결과는 별도의 입력값이나 외부 API 호출 없이, 코드에 포함된 지진 데이터와 취약성 지수를 기반으로 생성된다.

실행 과정은 단순하지만, 내부에서는 여러 단계의 시각화가 동시에 이루어진다. 먼저 국가별 지진 진도 데이터를 불러와 DataFrame으로 정리한 뒤, 각 국가에 대응되는 취약성 지수를 결합한다. 이 값은 이후 모든 그래프에서 공통 기준으로 사용된다.

대시보드 좌측의 세계 지도는 국가별 진도 지수를 색상으로 표현한 것으로, 코드 실행과 동시에 자동으로 생성된다. 색이 진할수록 상대적으로 높은 진도 값이 적용된 국가이며, 상단에 표시된 Top 3 국가 정보 역시 동일한 데이터에서 계산된 결과다.

우측 상단의 산점도는 진도와 취약성을 동시에 비교한 그래프로, 각 점의 위치와 크기는 코드에서 설정한 기준에 따라 자동으로 결정된다. 이 그래프를 통해 단순히 진도가 높은 국가와 취약성이 높은 국가가 어떻게 다른 위치에 놓이는지 확인할 수 있다.

하단에 배치된 막대 그래프와 분포 그래프는 실행 시 추가적인 조작 없이 함께 출력되며, 상위 국가 비교와 전체 분포 흐름을 동시에 보여준다. 즉, 이 화면은 여러 결과를 따로 실행해서 얻은 것이 아니라, 하나의 실행 흐름에서 동시에 생성된 결과물이다.

같은 결과를 얻기 위해서는

동일한 라이브러리 환경

데이터 값 변경 없이 코드 전체를 순서대로 실행 이 두 가지만 유지하면 된다. 코드를 실행하는 순간, 위와 같은 구성의 대시보드가 그대로 출력된다. 실제 지진 발생 시점이나 위치를 예측하지 않는다

• 특정 국가나 지역의 피해 규모를 단정하지 않는다

• 건물 구조, 인구 밀도, 대응 체계와 같은 현실 조건을 계산하지 않는다

• 시간에 따른 지진 발생 변화나 연속적인 여진 흐름을 다루지 않는다

• 공식 기관의 재난 예측 모델이나 경보 시스템을 대체하지 않는다

이 분석은 지진 위험을 정밀하게 계산하는 시뮬레이션이 아니라, 여러 지표를 한 화면에 정리해 위험을 비교하고 이해하기 쉽게 만드는 시각화에 가깝다. 그래서 결과는 참고 자료로는 사용할 수 있지만, 실제 의사결정을 위한 기준으로 사용되도록 설계되지는 않았다.

▶ 어떻게 실행하면 같은 결과가 나오는가

아래 화면은 이 프로젝트의 전체 실행 결과를 한 번에 보여주는 대시보드이다. 이 결과는 별도의 입력값이나 외부 API 호출 없이, 코드에 포함된 지진 데이터와 취약성 지수를 기반으로 생성된다.

실행 과정은 단순하지만, 내부에서는 여러 단계의 시각화가 동시에 이루어진다. 먼저 국가별 지진 진도 데이터를 불러와 DataFrame으로 정리한 뒤, 각 국가에 대응되는 취약성 지수를 결합한다. 이 값은 이후 모든 그래프에서 공통 기준으로 사용된다.

대시보드 좌측의 세계 지도는 국가별 진도 지수를 색상으로 표현한 것으로, 코드 실행과 동시에 자동으로 생성된다. 색이 진할수록 상대적으로 높은 진도 값이 적용된 국가이며, 상단에 표시된 Top 3 국가 정보 역시 동일한 데이터에서 계산된 결과다.

우측 상단의 산점도는 진도와 취약성을 동시에 비교한 그래프로, 각 점의 위치와 크기는 코드에서 설정한 기준에 따라 자동으로 결정된다. 이 그래프를 통해 단순히 진도가 높은 국가와 취약성이 높은 국가가 어떻게 다른 위치에 놓이는지 확인할 수 있다.

하단에 배치된 막대 그래프와 분포 그래프는 실행 시 추가적인 조작 없이 함께 출력되며, 상위 국가 비교와 전체 분포 흐름을 동시에 보여준다. 즉, 이 화면은 여러 결과를 따로 실행해서 얻은 것이 아니라, 하나의 실행 흐름에서 동시에 생성된 결과물이다.

같은 결과를 얻기 위해서는

• 동일한 라이브러리 환경

• 데이터 값 변경 없이 코드 전체를 순서대로 실행 이 두 가지만 유지하면 된다. 코드를 실행하는 순간, 위와 같은 구성의 대시보드가 그대로 출력된다.

지구과학-파이썬 활용.png

🔧 여기서 더 확장할 수 있는 방향

이 프로젝트는 정적인 데이터와 시각화를 중심으로 구성되어 있지만, 구조 자체는 여러 방향으로 확장될 수 있도록 설계되어 있다. 가장 먼저 고려할 수 있는 확장은 데이터의 시간 축을 추가하는 것이다. 현재는 국가별 대표 값을 사용하고 있지만, 연도별·월별 지진 데이터를 적용하면 위험 변화의 흐름을 함께 분석할 수 있다.

또한 취약성 지수 역시 고정된 값이 아니라, 여러 요소로 분해할 수 있다. 예를 들어 인구 밀도, 건축 기준, 도시화 수준과 같은 지표를 각각 변수로 두고 가중치를 조정한다면, 위험 점수는 훨씬 입체적인 형태가 된다. 이 경우 현재 사용 중인 진도 지수 계산 방식은 기본 틀로 유지한 채 확장할 수 있다.

시각화 측면에서는 사용자 입력을 반영하는 방식으로의 발전도 가능하다. 특정 국가만 선택하거나, 진도 범위를 직접 조정해 결과를 다시 그리는 인터랙션을 추가하면 탐색 도구로서의 활용도가 높아진다. 이는 Plotly의 기능을 그대로 활용해 구현할 수 있는 범위에 해당한다.

마지막으로, 이 분석을 교육 목적이나 발표용 도구로 확장하는 것도 현실적인 방향이다. 변수 하나를 바꾸었을 때 시각화가 어떻게 달라지는지를 보여주면, 지진 위험이 단일 원인으로 결정되지 않는다는 점을 직관적으로 전달할 수 있다. 이런 확장은 복잡한 모델을 추가하지 않더라도, 현재 코드 구조만으로 충분히 시도할 수 있다.

📄 사용 및 재배포에 대하여

이 프로젝트의 코드는 학습과 탐구를 목적으로 자유롭게 사용될 수 있다. 개인 학습, 학교 과제, 발표 자료, 포트폴리오 등 비상업적인 용도로 활용하는 데에는 별도의 제한을 두지 않는다. 코드 구조나 시각화 방식 또한 참고 자료로 사용해도 무방하다.

다만 이 프로젝트는 실제 재난 예측이나 공식 분석을 목적으로 설계된 것이 아니기 때문에, 결과를 근거로 한 정책 결정이나 상업적 서비스에 그대로 사용하는 것은 권장하지 않는다. 특히 지진 위험과 관련된 해석은 참고 수준으로만 활용되어야 한다.

재배포하거나 일부를 수정해 사용할 경우, 원본 프로젝트를 기반으로 했다는 점을 명시해 주는 것을 권장한다. 이는 의무 사항이라기보다, 분석의 맥락과 한계를 함께 전달하기 위한 최소한의 기준에 가깝다.

이 프로젝트는 “완성된 답”을 제공하기보다는, 데이터를 해석하고 시각화하는 하나의 방법을 보여주는 데 목적이 있다. 따라서 자유롭게 가져다 쓰되, 그 전제와 범위를 함께 이해한 상태에서 활용되기를 바란다.

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages