728x90
이 파이썬 스크립트는 지진 데이터를 포함한 GeoJSON 파일을 읽고, 해당 데이터를 활용하여 전 세계 지진의 크기와 위치를 시각화하는 기능을 수행합니다.
import json
from pathlib import Path
import plotly.express as px
def read_geo_json_data():
# 데이터를 문자열로 읽어 파이썬 객체로 변환합니다.
path = Path('eq_data/eq_data_30_day_m1.geojson')
contents = path.read_text(encoding='utf-8')
all_eq_data = json.loads(contents)
# 데이터 파일을 더 읽기 쉬운 형태로 바꿉니다.
# path = Path('eq_data/eq_data.geojson')
# readable_contents = json.dumps(all_eq_data, indent=4)
# path.write_text(readable_contents,encoding='utf-8')
# 데이터 집합의 지진 데이터를 모두 읽습니다.
all_eq_dicts = all_eq_data['features']
mags, lons, lats, eq_titles = [],[],[],[]
for eq_dict in all_eq_dicts:
mag = eq_dict['properties']['mag']
lon = eq_dict['geometry']['coordinates'][0]
lat = eq_dict['geometry']['coordinates'][1]
eq_title = eq_dict['properties']['title']
mags.append(mag)
lons.append(lon)
lats.append(lat)
eq_titles.append(eq_title)
# print(mags[:10])
# print(lons[:5])
# print(lats[:5])
title = 'Global Earthquakes'
fig = px.scatter_geo(lat=lats, lon=lons, size=mags, title=title,
color=mags,
color_continuous_scale='Viridis',
labels={'color':'Magnitude'},
projection='natural earth',
hover_name=eq_titles)
fig.show()
if __name__ == '__main__':
read_geo_json_data()
eq_data_30_day_m1.geojson
4.30MB
필요한 모듈 임포트
import json
from pathlib import Path
import plotly.express as px
json
: JSON 데이터를 파싱하고 처리하기 위해 사용되는 내장 모듈입니다.pathlib.Path
: 파일 경로를 객체로 다루기 위한 모듈로, 플랫폼 독립적인 파일 시스템 경로를 제공합니다.plotly.express
: 데이터 시각화를 위한 라이브러리로, 이 스크립트에서는 지도상에 지진 데이터를 표현하는 데 사용됩니다.
함수 read_geo_json_data
def read_geo_json_data():
path = Path('eq_data/eq_data_30_day_m1.geojson')
contents = path.read_text(encoding='utf-8')
all_eq_data = json.loads(contents)
path.read_text()
:Path
객체를 사용하여 지정된 경로의 파일 내용을 문자열로 읽어옵니다. 인코딩 옵션으로 'utf-8'이 명시되어 있어, 다양한 언어가 포함된 텍스트도 올바르게 처리됩니다.json.loads()
: 읽어온 문자열 형태의 JSON 데이터를 파이썬 객체로 변환합니다.
데이터 추출 및 리스트 생성
all_eq_dicts = all_eq_data['features']
mags, lons, lats, eq_titles = [], [], [], []
for eq_dict in all_eq_dicts:
mag = eq_dict['properties']['mag']
lon = eq_dict['geometry']['coordinates'][0]
lat = eq_dict['geometry']['coordinates'][1]
eq_title = eq_dict['properties']['title']
mags.append(mag)
lons.append(lon)
lats.append(lat)
eq_titles.append(eq_title)
- GeoJSON 데이터에서 지진 정보를 담고 있는
features
배열에 접근합니다. - 각 지진 정보(
eq_dict
)는properties
와geometry
라는 키를 포함하고 있습니다. mag
: 지진의 크기,lon
: 경도,lat
: 위도,eq_title
: 지진의 제목 또는 설명을 각 리스트에 추가합니다.
데이터 시각화
title = 'Global Earthquakes'
fig = px.scatter_geo(lat=lats, lon=lons, size=mags, title=title,
color=mags,
color_continuous_scale='Viridis',
labels={'color':'Magnitude'},
projection='natural earth',
hover_name=eq_titles)
fig.show()
px.scatter_geo
: Plotly Express를 사용하여 지리적 데이터를 시각화하는 함수입니다. 이 함수는 위도(lat
), 경도(lon
), 지진 크기(size
), 색상(color
) 등 다양한 파라미터를 받아 지진의 위치와 크기를 나타내는 지도를 생성합니다.color_continuous_scale
: 지진의 크기에 따라 색상을 부여합니다. 'Viridis'는 데이터 값에 따라 색상이 변하는 연속적인 컬러 스케일을 나타냅니다.labels
: 색상 바의 라벨을 사용자 정의하는 옵션입니다.projection
: 지도의 투영 방식을 지정합니다. 여기서는 'natural earth'가 사용되었습니다.hover_name
: 마우스를 각 점 위에 놓았을 때 표시되는 텍스트로, 여기서는 지진의 제목이 사용됩니다.fig.show()
: 생성된 그래피를 화면에 표시합니다.
메인 실행 블록
if __name__ == '__main__':
read
_geo_json_data()
- 이 스크립트가 직접 실행될 때
read_geo_json_data()
함수를 호출하여 지진 데이터를 읽고 시각화합니다.
728x90
'Python for Beginners' 카테고리의 다른 글
[추가자료] 8.3 웹 프레임워크 - Django 소개 (0) | 2024.06.19 |
---|---|
REST API 데이터 시각화 (0) | 2024.06.18 |
CSV 데이터 파일을 이용한 데이터 시각화 (0) | 2024.06.17 |
[추가자료] 9.3 데이터 시각화 plotly- dice (주사위) (1) | 2024.06.13 |
[추가자료] 9.3 데이터 시각화 Matplotlib - RandomWalk(무작위 이동) (1) | 2024.06.11 |