Wolfram Language

Umfassenderer Zugang zur Knowledgebase

Erstellen Sie einen Boliden-EntityStore

Die Wolfram Knowledgebase enthält eine Vielzahl von Informationen, die ein breites Spektrum von Bereichen umspannen. Sie bietet außerdem eine mächtige Palette an Funktionen, um dieses Wissen darzustellen, darauf zuzugreifen und Berechnungen damit durchzuführen. Nun können Nutzer auch (und zwar ganz im Handumdrehen) ihre eigene Sammlungen aus Entitäten und Eigenschaften anlegen und genauso mit ihnen arbeiten, wie mit den eingebauten Datensammlungen. In diesem Beispiel illustrieren wir den Vorgang des Erstellens und Benutzens eines Entity-Stores für Feuerbälle auf der Grundlage einer bestehenden Datenquelle.

Importieren Sie mit Import Daten über Boliden (besonders helle Meteore) vom Jet Propulsion Laboratory.

In[1]:=
Click for copyable input
(rawdata = Import["http://neo.jpl.nasa.gov/fireballs/", "FullData"])[[3, 9, 2, 12, 1, ;; 5]]
Out[1]=

Definieren Sie eine Funktion, um Einheiten an die Rohdaten anzuhängen.

In[2]:=
Click for copyable input
AddUnits[x_, u_: "Kilometers"/"Seconds"] := If[NumberQ[x], Quantity[Interpreter["Number"][x], u], Missing["NotAvailable"]]

Extrahieren Sie relevante Datenteile und fügen Sie passende Quantity-Tags hinzu.

Den kompletten Wolfram Language-Input zeigen
In[3]:=
Click for copyable input
bolidedata = DeleteCases[{ DateObject[#1], With[{i = Interpreter["GeoCoordinates"][#2 <> " " <> #3]}, If[Head[i] === Missing, i, GeoPosition[Join[i[[1]], If[NumberQ[#4], {#4 10^3}, {}]]]]], AddUnits[#5], AddUnits[#6], AddUnits[#7], AddUnits[#8], AddUnits[#9, "Joules"], AddUnits[#10, "MetricKilotons"] } & @@@ rawdata[[3, 9, 2, 12, 1, 2 ;;]], {_, _Missing, __}];
In[4]:=
Click for copyable input
entities = Association @@ MapIndexed[ "Bolide" <> ToString[First[#2]] -> <| "Date" -> #[[1]], "Position" -> #[[2]], "Velocity" -> #[[3]], "VelocityX" -> #[[4]], "VelocityY" -> #[[5]], "VelocityZ" -> #[[6]], "TotalRadiatedEnergy" -> #[[7]], "CalculatedTotalImpactEnergy" -> #[[8]], "Label" -> "bolide on " <> DateString[#[[1]]] <> " GMT" |> &, bolidedata];
In[5]:=
Click for copyable input
properties = <| "Date" -> <|"Label" -> "date"|>, "Position" -> <|"Label" -> "position"|>, "Velocity" -> <|"Label" -> "velocity"|>, "VelocityX" -> <|"Label" -> "velocity x\[Hyphen]component"|>, "VelocityY" -> <|"Label" -> "velocity y\[Hyphen]component"|>, "VelocityZ" -> <|"Label" -> "velocity z\[Hyphen]component"|>, "TotalRadiatedEnergy" -> <|"Label" -> "total radiated energy"|>, "CalculatedTotalImpactEnergy" -> <|"Label" -> "calculated total impact energy"|> |>;
In[6]:=
Click for copyable input
store = EntityStore["Bolide" -> <| "Label" -> "bolide", "LabelPlural" -> "bolides", "Entities" -> entities, "Properties" -> properties |>]
Out[6]=

Registrieren Sie den Store für diese Sitzung.

In[7]:=
Click for copyable input
PrependTo[$EntityStores, store];

Erstellen Sie eine EntityAssociation aus den Positionen und Energiewerten von Boliden.

In[8]:=
Click for copyable input
ea = EntityValue["Bolide", {"Position", "TotalRadiatedEnergy"}, "EntityAssociation"];

Stellen Sie die Bolidenereignisse basierend auf ihrer Höhe und Himmelspositionen geographisch dar.

In[9]:=
Click for copyable input
GeoGraphics[{GeoVisibleRegion[#] & @@@ Values[ea]}]
Out[9]=

Extrahieren Sie die Energiewerte von Boliden in ein QuantityArray.

In[10]:=
Click for copyable input
energies = QuantityArray[Values[ea][[All, -1]]]
Out[10]=

Visualisieren Sie die Energiewerte von Boliden in einem Histogramm.

In[11]:=
Click for copyable input
Histogram[energies, "Log", AxesLabel -> {"energy (J)", "count"}]
Out[11]=

Wenden Sie eine Skalierungsfunktion an, um ein qualitatives Bild der Bolidenhelligkeit zu erzeugen.

Den kompletten Wolfram Language-Input zeigen
In[12]:=
Click for copyable input
scale[e_] := Quantity[1.*10^4 Sqrt[e/Max[energies]], "Kilometers"]
In[13]:=
Click for copyable input
GeoGraphics[{Red, GeoDisk[#1, scale[#2]] & @@@ Values[ea]}]
Out[13]=

Verwandte Beispiele