cwadayi commited on
Commit
b30ee3e
·
verified ·
1 Parent(s): 49c245f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -10
app.py CHANGED
@@ -77,8 +77,8 @@ def _to_float(x):
77
 
78
  def parse_ea0015(obj):
79
  """
80
- CWA E-A0015-001 結構:
81
- records.earthquake[] 裡主要欄位在 EarthquakeInfo.*
82
  取出:OriginTime, Lat, Lon, Depth_km, Magnitude, Location, ReportURL
83
  """
84
  records = obj.get("records") or obj.get("Records") or {}
@@ -90,14 +90,20 @@ def parse_ea0015(obj):
90
  for q in quakes:
91
  ei = q.get("EarthquakeInfo") or q.get("earthquakeInfo") or {}
92
  epic = ei.get("Epicenter") or ei.get("epicenter") or {}
93
- mago = ei.get("Magnitude") or ei.get("magnitude") or {}
 
 
 
 
 
 
94
 
95
  origin = (
96
  ei.get("OriginTime") or ei.get("originTime")
97
  or q.get("OriginTime") or q.get("originTime")
98
  )
99
 
100
- # 經緯度:同時嘗試多種鍵名(不同版本可能不同)
101
  lat_raw = (
102
  epic.get("EpicenterLat") or epic.get("epicenterLat")
103
  or epic.get("EpicenterLatitude") or epic.get("epicenterLatitude")
@@ -109,11 +115,21 @@ def parse_ea0015(obj):
109
  or epic.get("Lon") or epic.get("lon")
110
  )
111
 
112
- depth = ei.get("Depth") or ei.get("depth")
113
- mag = (
 
 
 
 
 
 
 
114
  mago.get("MagnitudeValue") or mago.get("magnitudeValue")
 
115
  or mago.get("Magnitude") or mago.get("magnitude")
 
116
  )
 
117
  loc = epic.get("Location") or epic.get("location")
118
  url = q.get("Web") or q.get("ReportURL") or q.get("reportURL")
119
 
@@ -121,8 +137,8 @@ def parse_ea0015(obj):
121
  "OriginTime": origin,
122
  "Lat": _to_float(lat_raw),
123
  "Lon": _to_float(lon_raw),
124
- "Depth_km": _to_float(depth),
125
- "Magnitude": _to_float(mag), # ← 修正:用 mag,不是 m
126
  "Location": loc,
127
  "ReportURL": url,
128
  })
@@ -203,8 +219,7 @@ def plot_map_path(df):
203
  sc = ax.scatter(df["Lon"], df["Lat"], s=s, c=depth, alpha=0.85, edgecolor="black")
204
  cb = plt.colorbar(sc, ax=ax, fraction=0.046, pad=0.04)
205
  cb.set_label("Depth (km)")
206
- ax.set_xlabel("Longitude (°E)")
207
- ax.set_ylabel("Latitude (°N)")
208
  ax.set_title("Epicenters in Taiwan Region (119–123E, 21–26N)")
209
  ax.grid(True, linestyle="--", alpha=0.3)
210
  return _save_fig_to_tmp(fig)
 
77
 
78
  def parse_ea0015(obj):
79
  """
80
+ 解析 CWA E-A0015-001
81
+ 主要欄位在 records.earthquake[].EarthquakeInfo.*
82
  取出:OriginTime, Lat, Lon, Depth_km, Magnitude, Location, ReportURL
83
  """
84
  records = obj.get("records") or obj.get("Records") or {}
 
90
  for q in quakes:
91
  ei = q.get("EarthquakeInfo") or q.get("earthquakeInfo") or {}
92
  epic = ei.get("Epicenter") or ei.get("epicenter") or {}
93
+
94
+ # Magnitude 可能在 Magnitude 或 EarthquakeMagnitude 物件裡
95
+ mago = (
96
+ ei.get("Magnitude") or ei.get("magnitude")
97
+ or ei.get("EarthquakeMagnitude") or ei.get("earthquakeMagnitude")
98
+ or {}
99
+ )
100
 
101
  origin = (
102
  ei.get("OriginTime") or ei.get("originTime")
103
  or q.get("OriginTime") or q.get("originTime")
104
  )
105
 
106
+ # 經緯度多種鍵名
107
  lat_raw = (
108
  epic.get("EpicenterLat") or epic.get("epicenterLat")
109
  or epic.get("EpicenterLatitude") or epic.get("epicenterLatitude")
 
115
  or epic.get("Lon") or epic.get("lon")
116
  )
117
 
118
+ # 深度:Depth / FocalDepth / FocalDepthKm / depth / focalDepth...
119
+ depth_raw = (
120
+ ei.get("Depth") or ei.get("depth")
121
+ or ei.get("FocalDepth") or ei.get("focalDepth")
122
+ or ei.get("FocalDepthKm") or ei.get("focalDepthKm")
123
+ )
124
+
125
+ # 規模:MagnitudeValue / value / Magnitude / magnitude
126
+ mag_raw = (
127
  mago.get("MagnitudeValue") or mago.get("magnitudeValue")
128
+ or mago.get("Value") or mago.get("value")
129
  or mago.get("Magnitude") or mago.get("magnitude")
130
+ or ei.get("MagnitudeValue") or ei.get("magnitudeValue")
131
  )
132
+
133
  loc = epic.get("Location") or epic.get("location")
134
  url = q.get("Web") or q.get("ReportURL") or q.get("reportURL")
135
 
 
137
  "OriginTime": origin,
138
  "Lat": _to_float(lat_raw),
139
  "Lon": _to_float(lon_raw),
140
+ "Depth_km": _to_float(depth_raw),
141
+ "Magnitude": _to_float(mag_raw),
142
  "Location": loc,
143
  "ReportURL": url,
144
  })
 
219
  sc = ax.scatter(df["Lon"], df["Lat"], s=s, c=depth, alpha=0.85, edgecolor="black")
220
  cb = plt.colorbar(sc, ax=ax, fraction=0.046, pad=0.04)
221
  cb.set_label("Depth (km)")
222
+ ax.set_xlabel("Longitude (°E)"); ax.set_ylabel("Latitude (°N)")
 
223
  ax.set_title("Epicenters in Taiwan Region (119–123E, 21–26N)")
224
  ax.grid(True, linestyle="--", alpha=0.3)
225
  return _save_fig_to_tmp(fig)