Создание информационной коллекции EntityStore о болидах
Wolfram Knowledgebase содержит информацию, охватывающую множество различных областей в сочетании с функциональными возможностями для представления, доступа и вычислительных операций с этой информацией. Теперь пользователи могут создавать свои собственные коллекции информации и работать с ними, как если бы они изначально были частью базы знаний Wolfram. В данном примере показан процесс создания и использования коллекции информации о болидах на основе существующего информационного источника.
Воспользуемся функцией Import и загрузим данные о болидах, предоставленные Лабораторией реактивного движения.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_100.png)
(rawdata =
Import["http://neo.jpl.nasa.gov/fireballs/",
"FullData"])[[3, 9, 2, 12, 1, ;; 5]]
![](assets.ru/create-a-fireball-meteor-entitystore/O_78.png)
Определим функцию для преобразования необработанных данных на единицы для хранения в Wolfram Knowledgebase.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_101.png)
AddUnits[x_, u_: "Kilometers"/"Seconds"] :=
If[NumberQ[x], Quantity[Interpreter["Number"][x], u],
Missing["NotAvailable"]]
Извлечем необходимые компоненты загруженных данных, добавим соответствующие теги с помощью функции Quantity, а также создадим коллекцию сущностей на основе загруженных данных.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_105.png)
store = EntityStore["Bolide" -> <|
"Label" -> "bolide",
"LabelPlural" -> "bolides",
"Entities" -> entities,
"Properties" -> properties
|>]
![](assets.ru/create-a-fireball-meteor-entitystore/O_79.png)
Зарегистрируем полученную информационную коллекцию для данной сессии.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_106.png)
PrependTo[$EntityStores, store];
Соберем информацию о позициях и энергетической заряженности болид в сеть ассоциаций "EntityAssociation".
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_107.png)
ea = EntityValue["Bolide", {"Position", "TotalRadiatedEnergy"},
"EntityAssociation"];
Создадим географическую карту мест наблюдения болид на основе их высоты и позиций в небе.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_108.png)
GeoGraphics[{GeoVisibleRegion[#] & @@@ Values[ea]}]
![](assets.ru/create-a-fireball-meteor-entitystore/O_80.png)
Извлечем энергетическую заряженность болид (в джоулях) и образуем ряд числовых значений QuantityArray.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_109.png)
energies = QuantityArray[Values[ea][[All, -1]]]
![](assets.ru/create-a-fireball-meteor-entitystore/O_81.png)
Визуализируем энергию болид с помощью гистограммы.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_110.png)
Histogram[energies, "Log", AxesLabel -> {"energy (J)", "count"}]
![](assets.ru/create-a-fireball-meteor-entitystore/O_82.png)
Применим функцию масштабирования, чтобы отобразить яркость болид.
![Click for copyable input](assets.ru/create-a-fireball-meteor-entitystore/In_112.png)
GeoGraphics[{Red, GeoDisk[#1, scale[#2]] & @@@ Values[ea]}]
![](assets.ru/create-a-fireball-meteor-entitystore/O_83.png)