ساختن لیست تمام زمین‌لرزه‌ها

ابتدا لیستی می‌سازیم که شامل تمام اطّلاعات هر زمین‌لرزه‌ی رخ‌داده باشد:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import json

# Explore the structure of the data.
filename = 'data/eq_data_1_day_m1.json'

with open(filename) as f:
    all_eq_data = json.load(f)

all_eq_dicts = all_eq_data['features']

print(len(all_eq_dicts))

ما داده‌های متناظر با کلید 'features' را گرفته و همه را در all_eq_dicts ذخیره می‌کنیم. می‌دانیم که این فایل داده‌های ۱۵۸ زمین‌لرزه را در بر گرفته و خروجی تایید می‌کند که داده‌ی تمام زمین‌لرزه‌های داخل فایل را گرفته‌ایم:

1
158

توجّه کنید که این کد چه‌قدر کوتاه است. فایل readable_eq_data.json که آن را شکلی مرتّب درآوردیم بیشتر از ۶۰۰۰ خط است. امّا توانستیم در تنها چند خط کد تمام آن داده‌ها را خوانده و در یک لیست پایتون ذخیره کنیم. در ادامه بزرگی هر زمین‌لرزه را بیرون می‌کشیم.

استخراج بزرگی زمین‌لرزه‌ها

می‌توانیم در لیستی که شامل داده‌های هر زمین‌لرزه است، حلقه بزنیم و هر اطّلاعاتی را که بخواهیم استخراج کنیم. اکنون بزرگی هر زمین‌لرزه را بیرون می‌کشیم:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
--snip--

all_eq_dicts = all_eq_data['features']

mags = []
for eq_dict in all_eq_dicts:
    mag = eq_dict['properties']['mag']
    mags.append(mag)

print(mags[:10])

لیستی خالی برای ذخیره کردن بزرگی‌ها می‌سازیم و سپس در دیکشنری all_eq_dicts حلقه می‌زنیم. داخل این حلقه هر زلزله با دیکشنری eq_dict نمایش داده می‌شود. بزرگی هر زلزله در بخش 'properties' دیکشنری ذیل کلید 'mag' ذخیره شده است. هر بزرگی را در متغیّر mag ذخیره و سپس آن را به لیست mags الحاق می‌کنیم.

۱۰ بزرگی اوّل را چاپ می‌کنیم تا ببینیم که داده‌های صحیح را گرفته‌ایم یا نه:

1
[0.96, 1.2, 4.3, 3.6, 2.1, 4, 1.06, 2.3, 4.9, 1.8]

در ادامه داده‌های موقعیّت هر زمین‌لرزه را به دست می‌آوریم تا پس از آن بتوانیم نقشه‌ی زمین‌لرزه‌ها را بسازیم.

استخراج داده‌ی موقعیّت

داده‌ی موقعیّت ذیل کلید "geometry" ذخیره شده است. داخل این دیکشنری کلید "coordinates" وجود دارد و دو مقدار اوّل این لیست طول و عرض جغرافیایی‌ست.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
--snip--

all_eq_dicts = all_eq_data['features']

mags, lons, lats = [], [], []
for eq_dict in all_eq_dicts:
    mag = eq_dict['properties']['mag']
    lon = eq_dict['geometry']['coordinates'][0]
    lat = eq_dict['geometry']['coordinates'][1]
    mags.append(mag)
    lons.append(lon)
    lats.append(lat)

print(mags[:10])
print(lons[:5])
print(lats[:5])

دو لیست خالی برای طول و عرض جغرافیایی می‌سازیم. کد eq_dict['geometry'] به دیکشنری‌ای دست می‌یابد که بیانگر عنصر هندسی زمین‌لرزه است. کلید دوم، 'coordinates' لیست مقدارهای مرتبط با 'coordinates' را بیرون می‌کشد. سرانجام شاخص صفرم اوّلین مقدار در لیست مختصّات را درخواست می‌کند که متناظر با طول جغرافیایی زمین‌لرزه است.

زمانی که پنج طول و عرض جغرافیایی اوّل را چاپ می‌کنیم خروجی نشان از استخراج صحیح داده‌ها دارد:

1
2
3
4
5
[0.96, 1.2, 4.3, 3.6, 2.1, 4, 1.06, 2.3, 4.9, 1.8]

[-116.7941667, -148.9865, -74.2343, -161.6801, -118.5316667]

[33.4863333, 64.6673, -12.1025, 54.2232, 35.3098333]

با این داده‌ها می‌توانیم به سمت نگاشت هر زمین‌لرزه حرکت کنیم.