Python

[파이썬] 지진 데이터 지도 시각화 - 히트맵, 클러스터링, folium

weweGH 2025. 4. 17. 09:00
반응형

지진 데이터 지도 시각화
지진 데이터 지도 시각화


지진 데이터 지도 시각화 - 히트맵, 클러스터링, folium


들어가며


파이썬으로 지도를 시각화하는 여러 방법 중 folium 패키지를 활용하여 시각화하는 방법을 소개합니다. folium은 leaflet.js를 기반으로 하여 웹 지도를 만들 수 있는 라이브러리입니다. 인터랙티브 지도를 웹브라우저에서 렌더링 할 수 있으며, 간단한 사용법으로 다양한 마커, 경로 등을 추가할 수 있습니다. 이 글에서는 folium을 활용하여 지진 데이터를 히트맵으로 시각화하는 방법을 소개합니다.



지진 데이터


이 글에서 활용할 데이터는 미국 지질조사국(USGS)에서 제공하는 지진 데이터입니다. USGS는 전 세계 지진 데이터를 제공하는 가장 중요한 기관 중 하나로 최신 지진 데이터, 지진 활동 지도, 역사적 지진 기록 등을 제공합니다. 최근 한 달 이내 지진이 발생한 위치와 진도를 히트맵으로 시각화해보겠습니다.

USGS Earthquake
USGS Earthquake


지진 데이터를 활용한 히트맵 시각화


먼저 필요한 패키지를 import합니다.

import folium
from folium.plugins import HeatMap
import pandas as pd

데이터의 구성은 다음과 같습니다. 이 글에서는 위치를 나타낼 수 있는 latitude, longtitude와 지진 진도를 나타내는 mag 변수만 사용합니다.

df = pd.read_csv('earthquake.csv')
df[['latitude','longitude','mag']].head()

df head
df head


중심점과 함께 지도를 생성합니다. 중심점은 위 데이터 기준 지진의 진도가 가장 심했던 칠레의 San Pedro de Atacama 지역으로 설정했습니다.

map = folium.Map(location=[-23.0813, -67.8098], zoom_start=5)

히트맵의 가중치를 설정하기 위해 진도를 나타내는 mag 변수를 사용합니다.

heat_data = [[row['latitude'], row['longitude'], row['mag']] for index, row in df.iterrows()]

히트맵을 지도에 추가하고, html 파일로 저장합니다. 결과는 다음과 같습니다.

HeatMap(heat_data).add_to(map)
map.save('earthquake_heatmap.html')

earthquake_heatmap
earthquake_heatmap

반응형

지진 데이터를 활용한 클러스터링 시각화


데이터가 많을 경우, 마커를 클러스터링하여 시각화하면 지도를 더 깔끔하게 표현할 수 있습니다. 먼저 필요한 패키지를 import 하고, 데이터를 불러옵니다. (위와 동일한 데이터입니다.)

import folium
from folium.plugins import MarkerCluster
import pandas as pd

df = pd.read_csv('earthquake.csv')
df.head()

중심점과 함께 지도를 생성합니다. 중심점은 위 데이터 기준 지진의 진도가 가장 심했던 칠레의 San Pedro de Atacama 지역으로 설정했습니다.

map_cluster = folium.Map(location=[-23.0813, -67.8098], zoom_start=5)

MarkerCluster를 지도에 추가합니다.

marker_cluster = MarkerCluster().add_to(map_cluster)

데이터의 각 지점에 대해 지도에 마커를 표시합니다.

for index, row in df.iterrows():
    folium.Marker(
        location=[row['latitude'], row['longitude']],
        popup=f"Magnitude: {row['mag']}"
    ).add_to(marker_cluster)

생성한 클러스터링 지도를 html 파일로 저장합니다. 결과는 다음과 같습니다. 지도에 표시된 숫자는 지진의 건수를 나타내며, 지도를 확대하면 마커에 진도를 확인할 수 있습니다.

map_cluster.save('earthquake_cluster.html')

earthquake_cluster


전체 코드


## 지진 데이터를 활용한 히트맵 시각화

import folium
from folium.plugins import HeatMap
import pandas as pd

df = pd.read_csv('earthquake.csv')
df[['latitude','longitude','mag']].head()

map = folium.Map(location=[-23.0813, -67.8098], zoom_start=5)

heat_data = [[row['latitude'], row['longitude'], row['mag']] for index, row in df.iterrows()]

HeatMap(heat_data).add_to(map)
map.save('earthquake_heatmap.html')

# --------------------------------------------------------------------------------- */

## 지진 데이터를 활용한 클러스터링 시각화

import folium
from folium.plugins import MarkerCluster
import pandas as pd

df = pd.read_csv('earthquake.csv')
df.head()

map_cluster = folium.Map(location=[-23.0813, -67.8098], zoom_start=5)

marker_cluster = MarkerCluster().add_to(map_cluster)

for index, row in df.iterrows():
    folium.Marker(
        location=[row['latitude'], row['longitude']],
        popup=f"Magnitude: {row['mag']}"
    ).add_to(marker_cluster)


map_cluster.save('earthquake_cluster.html')

# --------------------------------------------------------------------------------- */
반응형