<jupyter_start><jupyter_text>Menampilkan peta gempa hari ini Sebagai penutup, penyusun akan mengajak sidang pembaca (yang umumnya dari kalangan geosains) untuk melakukan kegiatan pemetaan gempa selama 24 jam terakhir dari data USGS. Diharapkan modul ini akan membantu pembaca untuk mengaplikasikan materi pembelajaran Cartopy pada bidang keilmuannya masing - masing. Untuk memulai proyek mini ini, kita wajib mengimpor tiga buah pustaka Python, yakni: pandas (untuk membaca data tabular), matplotlib (untuk visualisasi), dan Cartopy (untuk pemetaan).<jupyter_code>import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import cartopy.crs as ccrs<jupyter_output><empty_output><jupyter_text>Selain itu, kita juga perlu mengatur tampilan plot agar tampak lebih estetik.<jupyter_code>%matplotlib inline
matplotlib.rcParams['figure.figsize'] = (14,10)<jupyter_output><empty_output><jupyter_text>Kita membaca data tabular secara *remote* dengan menggunakan pandas.<jupyter_code>df = pd.read_csv('http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/1.0_week.csv')
df.head()<jupyter_output><empty_output><jupyter_text>Karena kolom time belum berupa objek datetime, maka kita perlu melakukan konversi sebagai berikut:<jupyter_code>df['time'] = pd.to_datetime(df['time'])
type(df['time'][1])
df.head()<jupyter_output><empty_output><jupyter_text>Untuk mendapatkan data gempa hari ini, kita perlu melakukan operasi masking. Sebagai catatan, Notebook ini dibuat pada tanggal 8 Juli 2020. Oleh karena itu, penyusun akan melakukan masking waktu dari tanggal 7 hingga 8 Juli 2020 (hal ini patut disesuaikan oleh pembaca).<jupyter_code>mask = ((df['time'] >= '2020-07-07') & (df['time'] < '2020-07-08'))
gempaHariIni = df.loc[mask]
gempaHariIni.head()<jupyter_output><empty_output><jupyter_text>Kita dapat mengetahui besaran gempa maksimum dan minimum yang terjadi secara global pada hari ini dengan menggunakan perintah sebagai berikut:<jupyter_code>print(df[df['mag'] == df['mag'].min()]) # besaran gempa minimum
print(df[df['mag'] == df['mag'].max()])<jupyter_output>time  latitude  longitude   depth  mag  \
328 2020-07-06 22:54:46.856000+00:00   -5.6368   110.6783  528.66  6.6   

    magType  nst   gap   dmin   rms  ...                   updated  \
328     mww  NaN  20.0  1.422  0.92  ...  2020-07-07T23:00:40.068Z   

                            place        type horizontalError depthError  \
328  93 km N of Batang, Indonesia  earthquake             8.3        6.4   

     magError  magNst    status  locationSource magSource  
328     0.068    21.0  reviewed              us        us  

[1 rows x 22 columns]<jupyter_text>Sesudah itu, kita akan mengekstraksi data bujur, lintang, dan besaran gempa (dalam skala Richter) dalam bentuk objek *list*:<jupyter_code>bujur = list(df['longitude'])
lintang = list(df['latitude'])
besaran = list(df['mag'])<jupyter_output><empty_output><jupyter_text>Kemudian kita akan mengklasifikasikan titik - titik gempa dengan menggunakan warna - warna tertentu (hijau untuk gempa di bawah 3 SR, kuning untuk gempa dengan rentang 3 - 5 SR, dan merah untuk gempa di atas 5 SR) dengan menggunakan fungsi sebagai berikut:<jupyter_code>def warna(besaran):
    if besaran < 3.0:
        return 'g'
    elif 3.0 <= besaran < 5.0:
        return 'y'
    else:
        return 'r'<jupyter_output><empty_output><jupyter_text>Kemudian kita tinggal melakukan pemetaan dengan menggunakan Cartopy:<jupyter_code>ax = plt.axes(projection = ccrs.PlateCarree())
ax.coastlines(resolution='50m')
ax.stock_img()

for i in range(len(besaran)):
    warnaEpi = warna(besaran[i])
    plt.scatter(bujur[i], lintang[i], s=besaran[i]*10, c=warnaEpi)

plt.title('Peta gempa bumi global pada 7 - 8 Juli 2020');<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09984025559105432, 'fraction_numerical': 0.04153354632587859, 'mean_word_length': 4.574183976261128, 'pattern_counts': {'":': 0, '<': 40, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '511744', 'license': 'CC0-1.0', 'n_tokens_mistral': 1592, 'n_tokens_neox': 1436, 'n_words': 356, 'path': 'notebooks/mini_proyek_gempa.ipynb', 'repo_name': 'sandyherho/cepatBelajarCartopy', 'size': '3756'}