Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Spring boot
- JVM
- 자바암호
- write by GPT-4
- oracle
- write by chatGPT
- Database
- chatGPT's answer
- 유닉스
- 소프트웨어공학
- kotlin
- android
- GIT
- 리눅스
- 뉴턴역학
- 파이썬
- 코틀린
- python
- 자바네트워크
- 웹 크롤링
- Java
- flet
- GPT-4's answer
- lombok
- NIO
- 시스템
- 인프라
- 역학
- 고전역학
- 자바
Archives
- Today
- Total
Akashic Records
GeoJSON 데이터 파일을 이용한 세계 지진의 크기와 위치 시각화 본문
Python for Beginners
GeoJSON 데이터 파일을 이용한 세계 지진의 크기와 위치 시각화
Andrew's Akashic Records 2024. 6. 17. 15:31728x90
이 파이썬 스크립트는 지진 데이터를 포함한 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()
필요한 모듈 임포트
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 |
Comments