Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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[]
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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(
|
| 125 |
-
"Magnitude": _to_float(
|
| 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)
|