@atmosx/event-product-parser 3.0.622 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/CHANGELOGS.md +52 -0
- package/.github/CODE_OF_CONDUCT.md +24 -1
- package/.github/CONTRIBUTING.md +22 -3
- package/.github/FUNDING.yaml +3 -0
- package/.github/LICENSE +24 -1
- package/.github/SECURITY.md +25 -6
- package/.github/docs/chapters/general-configurations.md +109 -0
- package/.github/docs/chapters/sources-and-attributes.md +219 -0
- package/README.md +56 -148
- package/dist/{cjs/index.cjs → index.cjs} +4486 -1471
- package/package.json +13 -8
- package/pnpm-workspace.yaml +1 -0
- package/src/bootstrap.ts +66 -51
- package/src/components/audio/GenerateAudioMessage.ts +149 -0
- package/src/{@modules/@eas → components/audio/components}/GetCleanDescription.ts +2 -2
- package/src/{@modules/@eas → components/audio/components}/GetFloatPCM16.ts +2 -2
- package/src/{@modules/@eas → components/audio/components}/GetMergedPCM16.ts +2 -2
- package/src/{@modules/@eas → components/audio/components}/GetPCM16.ts +13 -8
- package/src/{@modules/@eas → components/audio/components}/GetPCMToFloat.ts +2 -2
- package/src/{@modules/@eas → components/audio/components}/GetSampledPCM16.ts +14 -8
- package/src/{@modules/@eas → components/audio/components}/GetTTS.ts +15 -8
- package/src/{@modules/@eas → components/audio/components}/GetWavPCM16.ts +7 -7
- package/src/{@modules/@eas → components/audio/components}/SetAFSK.ts +13 -8
- package/src/{@modules/@eas → components/audio/components}/SetAsciiToBits.ts +2 -2
- package/src/{@modules/@eas → components/audio/components}/SetAttentionTone.ts +11 -6
- package/src/{@modules/@eas → components/audio/components}/SetNoise.ts +12 -7
- package/src/{@modules/@eas → components/audio/components}/SetRadioEffect.ts +12 -7
- package/src/{@modules/@eas → components/audio/components}/SetSameHeader.ts +22 -14
- package/src/components/database/CreateQuery.ts +39 -0
- package/src/components/database/InitializeDatabase.ts +71 -0
- package/src/components/database/imports/Boundaires.ts +168 -0
- package/src/{@modules/@database/ImportBroadcastify.ts → components/database/imports/Broadcastify.ts} +15 -25
- package/src/components/database/imports/Census.ts +87 -0
- package/src/{@modules/@database/ImportShapefiles.ts → components/database/imports/Shapefiles.ts} +18 -21
- package/src/{@modules/@database/ImportStanza.ts → components/database/imports/Stanza.ts} +15 -19
- package/src/components/events/CreateEvents.ts +88 -0
- package/src/components/events/FilterEvents.ts +149 -0
- package/src/{@building/CreateEvent.ts → components/events/ProcessStanza.ts} +22 -22
- package/src/components/events/RemoveEvents.ts +74 -0
- package/src/{@building → components/events/components}/GetCleanedEvent.ts +2 -2
- package/src/{@building → components/events/components}/GetEventAttachments.ts +14 -12
- package/src/components/events/components/GetEventDirection.ts +28 -0
- package/src/{@building → components/events/components}/GetEventEnhancedName.ts +5 -6
- package/src/{@building → components/events/components}/GetEventGeometry.ts +19 -13
- package/src/{@building → components/events/components}/GetEventHeader.ts +13 -13
- package/src/components/events/components/GetEventMerged.ts +51 -0
- package/src/{@building → components/events/components}/GetEventNodes.ts +20 -18
- package/src/{@building → components/events/components}/GetEventOffice.ts +13 -13
- package/src/components/events/components/GetEventPopulation.ts +58 -0
- package/src/components/events/components/GetEventProperties.ts +106 -0
- package/src/{@building → components/events/components}/GetEventSignature.ts +9 -9
- package/src/{@building → components/events/components}/GetEventTags.ts +3 -3
- package/src/{@core/CreateListener.ts → components/events/components/GetEventTheme.ts} +8 -6
- package/src/components/events/components/GetEventTracking.ts +64 -0
- package/src/{@modules/@database → components/events/utilities}/GetCachedEvents.ts +18 -14
- package/src/{@manager → components/events/utilities}/SetHash.ts +18 -13
- package/src/{@manager → components/events/utilities}/UpdateEvents.ts +12 -12
- package/src/{@manager → components/events/utilities}/UpdateNode.ts +14 -14
- package/src/{@parsers/@text → components/formatting}/GetEmbededText.ts +12 -6
- package/src/{@parsers/@text → components/formatting}/GetStringText.ts +13 -9
- package/src/{@modules/@utilities → components/geometry}/GetShapeNearestPoint.ts +24 -19
- package/src/components/geometry/GetUnionPolygon.ts +36 -0
- package/src/components/images/GenerateGraphic.ts +242 -0
- package/src/components/images/components/CreateRectangle.ts +22 -0
- package/src/components/images/components/CreateText.ts +22 -0
- package/src/components/images/modules/CreateSVG.ts +37 -0
- package/src/components/images/modules/GetGeographicalBoundaries.ts +72 -0
- package/src/components/images/modules/GetGeographicalCities.ts +58 -0
- package/src/components/images/modules/GetGeographicalEvents.ts +48 -0
- package/src/components/images/modules/GetGeometryBounds.ts +82 -0
- package/src/components/images/modules/GetParsedBoundary.ts +58 -0
- package/src/components/images/modules/GetSVGPath.ts +53 -0
- package/src/components/images/modules/NormalizePolygon.ts +57 -0
- package/src/{@modules/@stanza → components/stanza}/GetAwipsType.ts +16 -17
- package/src/{@modules/@stanza → components/stanza}/ValidateStanza.ts +27 -15
- package/src/{@modules/@utilities → components/utilities}/CreateHttp.ts +26 -26
- package/src/components/utilities/EmitThread.ts +97 -0
- package/src/{@modules/@utilities → components/utilities}/GetLatestIssuance.ts +2 -2
- package/src/{@modules/@utilities → components/utilities}/GetMatched.ts +10 -5
- package/src/{@modules/@utilities → components/utilities}/QueueManager.ts +7 -8
- package/src/{@modules/@utilities → components/utilities}/SetDebug.ts +13 -13
- package/src/components/utilities/SetEventEmit.ts +42 -0
- package/src/{@modules/@utilities → components/utilities}/SetSettings.ts +7 -7
- package/src/{@modules/@utilities → components/utilities}/SetSleep.ts +5 -5
- package/src/components/utilities/SetTimeoutAction.ts +64 -0
- package/src/components/utilities/SetWarning.ts +47 -0
- package/src/{@modules/@xmpp → components/xmpp}/DeployXMPP.ts +20 -20
- package/src/{@modules/@xmpp → components/xmpp}/ErrorXMPP.ts +6 -6
- package/src/{@modules/@xmpp → components/xmpp}/OfflineXMPP.ts +13 -13
- package/src/{@modules/@xmpp → components/xmpp}/OnlineXMPP.ts +18 -18
- package/src/components/xmpp/ReconnectXMPP.ts +64 -0
- package/src/{@modules/@xmpp → components/xmpp}/StanzaXMPP.ts +26 -26
- package/src/{@enums → enums}/AWIPS.ts +2 -2
- package/src/{@enums → enums}/Actions.ts +2 -2
- package/src/{@enums → enums}/Cancellation.ts +2 -2
- package/src/{@enums → enums}/Causes.ts +2 -2
- package/src/{@enums → enums}/Correlations.ts +2 -2
- package/src/{@enums → enums}/Enhanced.ts +4 -3
- package/src/{@enums → enums}/Events.ts +2 -2
- package/src/{@enums → enums}/Expressions.ts +3 -3
- package/src/{@enums → enums}/GlobalFilter.ts +2 -2
- package/src/{@enums → enums}/Hail.ts +2 -2
- package/src/{@enums → enums}/ICAO.ts +2 -2
- package/src/{@enums → enums}/Matches.ts +8 -3
- package/src/{@enums → enums}/Products.ts +2 -2
- package/src/{@enums → enums}/Records.ts +2 -2
- package/src/{@enums → enums}/Severity.ts +2 -2
- package/src/{@enums → enums}/Shapefiles.ts +2 -2
- package/src/{@enums → enums}/States.ts +68 -4
- package/src/{@enums → enums}/Status.ts +2 -2
- package/src/{@enums → enums}/Strings.ts +2 -2
- package/src/{@enums → enums}/Tags.ts +8 -3
- package/src/{@enums → enums}/Testing.ts +2 -2
- package/src/enums/Themes.ts +70 -0
- package/src/events/ParseAPI.ts +133 -0
- package/src/{@events → events}/ParseText.ts +24 -22
- package/src/{@events → events}/ParseUGC.ts +27 -26
- package/src/{@events → events}/ParseVTEC.ts +37 -36
- package/src/{@core → exports}/ClearEvents.ts +9 -9
- package/src/{@core → exports}/GetEvents.ts +4 -4
- package/src/exports/GetNearestCity.ts +45 -0
- package/src/{@core → exports}/GetNodes.ts +4 -4
- package/src/{@core → exports}/GetRandomEvent.ts +4 -4
- package/src/{@core → exports}/GetVersion.ts +4 -4
- package/src/{@core → exports}/ManualEvent.ts +24 -24
- package/src/{@core → exports}/QueryStanza.ts +12 -11
- package/src/exports/SetNode.ts +100 -0
- package/src/{@core → exports}/StartService.ts +22 -21
- package/src/{@core → exports}/StopService.ts +10 -10
- package/src/index.ts +55 -37
- package/src/{@parsers/@hvtec → parsers/hvtec}/HVExtract.ts +7 -7
- package/src/{@parsers/@text → parsers/text}/GetDescriptionFromProduct.ts +20 -21
- package/src/parsers/text/GetPolygonFromProduct.ts +71 -0
- package/src/{@parsers/@text → parsers/text}/GetTextFromProduct.ts +12 -12
- package/src/parsers/ugc/GetCache.ts +24 -0
- package/src/{@parsers/@ugc → parsers/ugc}/GetExpiry.ts +2 -2
- package/src/{@parsers/@ugc/GetUGCHeader.ts → parsers/ugc/GetHeader.ts} +4 -4
- package/src/{@parsers/@ugc → parsers/ugc}/GetLocations.ts +10 -10
- package/src/parsers/ugc/GetZonePolygon.ts +73 -0
- package/src/{@parsers/@ugc → parsers/ugc}/GetZones.ts +3 -3
- package/src/{@parsers/@ugc → parsers/ugc}/SetCache.ts +13 -8
- package/src/{@parsers/@ugc → parsers/ugc}/UGCExtract.ts +14 -14
- package/src/{@parsers/@pvtec → parsers/vtec}/GetExpiry.ts +2 -2
- package/src/{@parsers/@pvtec → parsers/vtec}/VTECExtract.ts +17 -17
- package/src/tasks/CreateTasks.ts +116 -0
- package/src/{@tasks → tasks}/TaskGenerateJSON.ts +10 -11
- package/src/{@tasks → tasks}/TaskGenerateText.ts +11 -12
- package/src/tasks/TaskSendNTFY.ts +96 -0
- package/src/tasks/TaskSendWebhook.ts +107 -0
- package/src/{@types → types/event}/Attributes.ts +2 -3
- package/src/{@types → types/event}/Event.ts +8 -7
- package/src/{@types → types/event}/HVTEC.ts +2 -2
- package/src/{@types → types/event}/Properties.ts +17 -4
- package/src/{@types → types/event}/Stanza.ts +2 -2
- package/src/{@types → types/event}/VTEC.ts +8 -8
- package/src/{@types → types/standard}/Actions.ts +3 -3
- package/src/{@types → types/standard}/Hash.ts +5 -5
- package/src/{@modules/@utilities/GetSettings.ts → types/standard/Nodes.ts} +15 -7
- package/src/{@types → types/standard}/Settings.ts +19 -12
- package/src/{@types → types/standard}/StanzaCompiled.ts +15 -15
- package/src/{@types → types/standard}/UGC.ts +5 -5
- package/tools/build.js +2 -15
- package/tsconfig.json +29 -17
- package/.github/SUPPORTED_EVENTS.md +0 -370
- package/.github/docs/docs-functions.md +0 -30
- package/.github/docs/docs-general-configurations.md +0 -209
- package/.github/docs/docs-integrations.md +0 -37
- package/.github/docs/docs-listeners.md +0 -28
- package/.github/docs/docs-source-configuration.md +0 -218
- package/.github/docs/docs-technical.md +0 -50
- package/.github/logo.png +0 -0
- package/.github/samples/SAMPLE_EAS_GENERATION.wav +0 -0
- package/.github/samples/SAMPLE_GEOJSON.json +0 -204
- package/.github/samples/SAMPLE_TEXT_PRODUCT.txt +0 -119
- package/dist/esm/index.mjs +0 -22298
- package/src/@building/GetEventProperties.ts +0 -101
- package/src/@building/GetEventTracking.ts +0 -68
- package/src/@core/SetNode.ts +0 -87
- package/src/@events/ParseAPI.ts +0 -122
- package/src/@manager/MakeEvents.ts +0 -109
- package/src/@manager/RemoveEvent.ts +0 -70
- package/src/@manager/ValidateEvents.ts +0 -141
- package/src/@modules/@database/InitializeDatabase.ts +0 -59
- package/src/@modules/@eas/GenerateEASMessage.ts +0 -152
- package/src/@modules/@utilities/GetFormattedTime.ts +0 -43
- package/src/@modules/@utilities/SetCronSchedule.ts +0 -94
- package/src/@modules/@utilities/SetEventEmit.ts +0 -41
- package/src/@modules/@utilities/SetListener.ts +0 -30
- package/src/@modules/@utilities/SetTimeoutAction.ts +0 -64
- package/src/@modules/@utilities/SetWarning.ts +0 -34
- package/src/@modules/@xmpp/ReconnectXMPP.ts +0 -64
- package/src/@parsers/@text/GetPolygonFromProduct.ts +0 -53
- package/src/@parsers/@text/GetXML.ts +0 -61
- package/src/@parsers/@ugc/GetCache.ts +0 -24
- package/src/@parsers/@ugc/GetZonePolygon.ts +0 -111
- package/src/@tasks/CreateTasks.ts +0 -110
- package/src/@tasks/TaskGenerateAudio.ts +0 -35
- package/src/@tasks/TaskSendNTFY.ts +0 -93
- package/src/@tasks/TaskSendWebhook.ts +0 -101
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<div align="center" style="margin-top: 20px;">
|
|
2
|
+
<a href="https://atmosphericx.scriptkitty.cafe">
|
|
3
|
+
<img src="https://scriptkitty.cafe/ftp/@atmosphericx/assets/logo-event-product-parser.png"
|
|
4
|
+
alt="@atmosx/event-product-parser"
|
|
5
|
+
width="800"/>
|
|
6
|
+
</a>
|
|
7
|
+
<p style="font-size: 1.1em; max-width: 700px;">
|
|
8
|
+
A robust TypeScript/JavaScript library for parsing and ingesting NOAA and NWS Weather Text Products, featuring an expanded suite of quality‑of‑life tools for faster, cleaner, and more reliable development.
|
|
9
|
+
</p>
|
|
10
|
+
<small style="display: block; margin-top: 10px;">
|
|
11
|
+
Built and maintained with ❤️ by the AtmosphericX team<br>
|
|
12
|
+
<i>Not affiliated with NOAA or NWS</i>
|
|
13
|
+
</small>
|
|
14
|
+
<hr style="width: 60%; margin: 25px auto; opacity: 0.3;">
|
|
15
|
+
<p style="text-align: center; font-size: 1.05em;">
|
|
16
|
+
<a href="https://atmosphericx.scriptkitty.cafe"><b>Official Documentation</b></a> •
|
|
17
|
+
<a href="https://github.com/AtmosphericX"><b>Github Organization</b></a> •
|
|
18
|
+
<a href="https://www.npmjs.com/search?q=%40atmosx"><b>Packages</b></a> •
|
|
19
|
+
<a href="/.github/CHANGELOGS.md"><b>Changelogs</b></a> •
|
|
20
|
+
<a href="https://atmosphericx-discord.scriptkitty.cafe"><b>Community Discord</b></a>
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
## Changelogs
|
|
25
|
+
|
|
26
|
+
### September 21st, 2026 - b3.1
|
|
27
|
+
|
|
28
|
+
**Features**
|
|
29
|
+
- add(theme): Ability to overwrite the default themes using `Manager.GlobalSettings.Themes`
|
|
30
|
+
- add(nodes): Adds nearest location metadata.
|
|
31
|
+
|
|
32
|
+
**Documentation**
|
|
33
|
+
- feat(github): Added `CHANGELOGS.md` file to the repository for better version tracking and release notes for future releases. See [Changelogs](https://raw.githubusercontent.com/AtmosphericX/AtmosphericX/refs/heads/main/.github/CHANGELOG.md) for prior updates and release notes.
|
|
34
|
+
- feat(github): Added `CODE_OF_CONDUCT.md` and `CONTRIBUTING.md` files to the repository for better community engagement and contribution guidelines.
|
|
35
|
+
- feat(github): Added `SECURITY.md` file to the repository to outline security policies and procedures for reporting vulnerabilities.
|
|
36
|
+
- feat(github): Improved the documentation pathing.
|
|
37
|
+
- feat(docuimentation): Added `FUNDING.yaml` file to the repository to provide information on how to support the project financially.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
**Updates**
|
|
42
|
+
- update(settings): `DebugDisableAllEvents` -> DeveloperDisableEvents.
|
|
43
|
+
- update(settings): `EnableDebugging` -> DeveloperMode.
|
|
44
|
+
- update(settings): `EnhancedEventJournaling` -> DeveloperEventLogging.
|
|
45
|
+
- update(settings): `NodeTTL` -> NodePolygonTTL.
|
|
46
|
+
|
|
47
|
+
**Deprecations**
|
|
48
|
+
- deprecate(esm): ESM support is now deprecated. Please use the CJS version of the library instead.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
------------------------------------------------------------------------------------------------------------------------
|
|
52
|
+
See [Changelogs](https://raw.githubusercontent.com/AtmosphericX/AtmosphericX/refs/heads/main/.github/CHANGELOG.md) for prior updates and release notes.
|
|
@@ -1,4 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center" style="margin-top: 20px;">
|
|
2
|
+
<a href="https://atmosphericx.scriptkitty.cafe">
|
|
3
|
+
<img src="https://scriptkitty.cafe/ftp/@atmosphericx/assets/logo-event-product-parser.png"
|
|
4
|
+
alt="@atmosx/event-product-parser"
|
|
5
|
+
width="800"/>
|
|
6
|
+
</a>
|
|
7
|
+
<p style="font-size: 1.1em; max-width: 700px;">
|
|
8
|
+
A robust TypeScript/JavaScript library for parsing and ingesting NOAA and NWS Weather Text Products, featuring an expanded suite of quality‑of‑life tools for faster, cleaner, and more reliable development.
|
|
9
|
+
</p>
|
|
10
|
+
<small style="display: block; margin-top: 10px;">
|
|
11
|
+
Built and maintained with ❤️ by the AtmosphericX team<br>
|
|
12
|
+
<i>Not affiliated with NOAA or NWS</i>
|
|
13
|
+
</small>
|
|
14
|
+
<hr style="width: 60%; margin: 25px auto; opacity: 0.3;">
|
|
15
|
+
<p style="text-align: center; font-size: 1.05em;">
|
|
16
|
+
<a href="https://atmosphericx.scriptkitty.cafe"><b>Official Documentation</b></a> •
|
|
17
|
+
<a href="https://github.com/AtmosphericX"><b>Github Organization</b></a> •
|
|
18
|
+
<a href="https://www.npmjs.com/search?q=%40atmosx"><b>Packages</b></a> •
|
|
19
|
+
<a href="/.github/CHANGELOGS.md"><b>Changelogs</b></a> •
|
|
20
|
+
<a href="https://atmosphericx-discord.scriptkitty.cafe"><b>Community Discord</b></a>
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
## Code of Conduct
|
|
2
25
|
AtmosphericX is an independent, open source project and is **not** affiliated with, endorsed by, or sponsored by any government agency, meteorological organization, emergency management service, or official weather provider. This project may reference, parse, or process publicly available weather data, including but **not** limited to services operated by the National Weather Service (NWS) and the National Oceanic and Atmospheric Administration (NOAA). All trademarks, service marks, and data rights remain the property of their respective owners. AtmosphericX is provided "as is", without warranty of any kind, express or implied, including but **not** limited to:
|
|
3
26
|
|
|
4
27
|
- Accuracy or completeness of parsed weather data
|
package/.github/CONTRIBUTING.md
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
<div align="center" style="margin-top: 20px;">
|
|
2
|
+
<a href="https://atmosphericx.scriptkitty.cafe">
|
|
3
|
+
<img src="https://scriptkitty.cafe/ftp/@atmosphericx/assets/logo-event-product-parser.png"
|
|
4
|
+
alt="@atmosx/event-product-parser"
|
|
5
|
+
width="800"/>
|
|
6
|
+
</a>
|
|
7
|
+
<p style="font-size: 1.1em; max-width: 700px;">
|
|
8
|
+
A robust TypeScript/JavaScript library for parsing and ingesting NOAA and NWS Weather Text Products, featuring an expanded suite of quality‑of‑life tools for faster, cleaner, and more reliable development.
|
|
9
|
+
</p>
|
|
10
|
+
<small style="display: block; margin-top: 10px;">
|
|
11
|
+
Built and maintained with ❤️ by the AtmosphericX team<br>
|
|
12
|
+
<i>Not affiliated with NOAA or NWS</i>
|
|
13
|
+
</small>
|
|
14
|
+
<hr style="width: 60%; margin: 25px auto; opacity: 0.3;">
|
|
15
|
+
<p style="text-align: center; font-size: 1.05em;">
|
|
16
|
+
<a href="https://atmosphericx.scriptkitty.cafe"><b>Official Documentation</b></a> •
|
|
17
|
+
<a href="https://github.com/AtmosphericX"><b>Github Organization</b></a> •
|
|
18
|
+
<a href="https://www.npmjs.com/search?q=%40atmosx"><b>Packages</b></a> •
|
|
19
|
+
<a href="/.github/CHANGELOGS.md"><b>Changelogs</b></a> •
|
|
20
|
+
<a href="https://atmosphericx-discord.scriptkitty.cafe"><b>Community Discord</b></a>
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
4
23
|
|
|
5
24
|
## How to Contribute
|
|
6
25
|
|
package/.github/LICENSE
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center" style="margin-top: 20px;">
|
|
2
|
+
<a href="https://atmosphericx.scriptkitty.cafe">
|
|
3
|
+
<img src="https://scriptkitty.cafe/ftp/@atmosphericx/assets/logo-event-product-parser.png"
|
|
4
|
+
alt="@atmosx/event-product-parser"
|
|
5
|
+
width="800"/>
|
|
6
|
+
</a>
|
|
7
|
+
<p style="font-size: 1.1em; max-width: 700px;">
|
|
8
|
+
A robust TypeScript/JavaScript library for parsing and ingesting NOAA and NWS Weather Text Products, featuring an expanded suite of quality‑of‑life tools for faster, cleaner, and more reliable development.
|
|
9
|
+
</p>
|
|
10
|
+
<small style="display: block; margin-top: 10px;">
|
|
11
|
+
Built and maintained with ❤️ by the AtmosphericX team<br>
|
|
12
|
+
<i>Not affiliated with NOAA or NWS</i>
|
|
13
|
+
</small>
|
|
14
|
+
<hr style="width: 60%; margin: 25px auto; opacity: 0.3;">
|
|
15
|
+
<p style="text-align: center; font-size: 1.05em;">
|
|
16
|
+
<a href="https://atmosphericx.scriptkitty.cafe"><b>Official Documentation</b></a> •
|
|
17
|
+
<a href="https://github.com/AtmosphericX"><b>Github Organization</b></a> •
|
|
18
|
+
<a href="https://www.npmjs.com/search?q=%40atmosx"><b>Packages</b></a> •
|
|
19
|
+
<a href="/.github/CHANGELOGS.md"><b>Changelogs</b></a> •
|
|
20
|
+
<a href="https://atmosphericx-discord.scriptkitty.cafe"><b>Community Discord</b></a>
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
## Copyright (c) 2026 AtmosphericX
|
|
2
25
|
|
|
3
26
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
27
|
of this software and associated documentation files (the "Software"), to use,
|
package/.github/SECURITY.md
CHANGED
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center" style="margin-top: 20px;">
|
|
2
|
+
<a href="https://atmosphericx.scriptkitty.cafe">
|
|
3
|
+
<img src="https://scriptkitty.cafe/ftp/@atmosphericx/assets/logo-event-product-parser.png"
|
|
4
|
+
alt="@atmosx/event-product-parser"
|
|
5
|
+
width="800"/>
|
|
6
|
+
</a>
|
|
7
|
+
<p style="font-size: 1.1em; max-width: 700px;">
|
|
8
|
+
A robust TypeScript/JavaScript library for parsing and ingesting NOAA and NWS Weather Text Products, featuring an expanded suite of quality‑of‑life tools for faster, cleaner, and more reliable development.
|
|
9
|
+
</p>
|
|
10
|
+
<small style="display: block; margin-top: 10px;">
|
|
11
|
+
Built and maintained with ❤️ by the AtmosphericX team<br>
|
|
12
|
+
<i>Not affiliated with NOAA or NWS</i>
|
|
13
|
+
</small>
|
|
14
|
+
<hr style="width: 60%; margin: 25px auto; opacity: 0.3;">
|
|
15
|
+
<p style="text-align: center; font-size: 1.05em;">
|
|
16
|
+
<a href="https://atmosphericx.scriptkitty.cafe"><b>Official Documentation</b></a> •
|
|
17
|
+
<a href="https://github.com/AtmosphericX"><b>Github Organization</b></a> •
|
|
18
|
+
<a href="https://www.npmjs.com/search?q=%40atmosx"><b>Packages</b></a> •
|
|
19
|
+
<a href="/.github/CHANGELOGS.md"><b>Changelogs</b></a> •
|
|
20
|
+
<a href="https://atmosphericx-discord.scriptkitty.cafe"><b>Community Discord</b></a>
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
2
23
|
|
|
3
24
|
## Reporting Vulnerabilities
|
|
4
25
|
If you discover a security vulnerability or issue in this repository such as exposed sensitive data, misconfigurations, or content that could cause harm. Please report it **immediately and responsibly**.
|
|
5
26
|
|
|
6
27
|
**Do not report security issues publicly.**
|
|
7
|
-
Instead, report privately by emailing
|
|
28
|
+
Instead, report privately by emailing [security@scriptkitty.cafe](mailto:security@scriptkitty.cafe), clearly describing the vulnerability.
|
|
8
29
|
|
|
9
30
|
## What to Include
|
|
10
31
|
When reporting a vulnerability, please include:
|
|
@@ -13,9 +34,7 @@ When reporting a vulnerability, please include:
|
|
|
13
34
|
- Any recommendations
|
|
14
35
|
|
|
15
36
|
## Response
|
|
16
|
-
All reports will be reviewed and addressed as quickly as possible.
|
|
17
|
-
This is a community driven project, so response times may vary. Please allow up to a few weeks for a full response.
|
|
37
|
+
All reports will be reviewed and addressed as quickly as possible. This is a community driven project, so response times may vary. Please allow up to a few weeks for a full response.
|
|
18
38
|
|
|
19
39
|
## Scope
|
|
20
|
-
This repository **does not contain any credentials, keys, tokens, or personally identifiable information (PII)**.
|
|
21
|
-
If you discover any such data, report it immediately.
|
|
40
|
+
This repository **does not contain any credentials, keys, tokens, or personally identifiable information (PII)**. If you discover any such data, report it immediately.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
<div align="center" style="margin-top: 20px;">
|
|
2
|
+
<a href="https://atmosphericx.scriptkitty.cafe">
|
|
3
|
+
<img src="https://scriptkitty.cafe/ftp/@atmosphericx/assets/logo-event-product-parser.png"
|
|
4
|
+
alt="@atmosx/event-product-parser"
|
|
5
|
+
width="800"/>
|
|
6
|
+
</a>
|
|
7
|
+
<p style="font-size: 1.1em; max-width: 700px;">
|
|
8
|
+
A robust TypeScript/JavaScript library for parsing and ingesting NOAA and NWS Weather Text Products, featuring an expanded suite of quality‑of‑life tools for faster, cleaner, and more reliable development.
|
|
9
|
+
</p>
|
|
10
|
+
<small style="display: block; margin-top: 10px;">
|
|
11
|
+
Built and maintained with ❤️ by the AtmosphericX team<br>
|
|
12
|
+
<i>Not affiliated with NOAA or NWS</i>
|
|
13
|
+
</small>
|
|
14
|
+
<hr style="width: 60%; margin: 25px auto; opacity: 0.3;">
|
|
15
|
+
<p style="text-align: center; font-size: 1.05em;">
|
|
16
|
+
<a href="https://atmosphericx.scriptkitty.cafe"><b>Official Documentation</b></a> •
|
|
17
|
+
<a href="https://github.com/AtmosphericX"><b>Github Organization</b></a> •
|
|
18
|
+
<a href="https://www.npmjs.com/search?q=%40atmosx"><b>Packages</b></a> •
|
|
19
|
+
<a href="/.github/CHANGELOGS.md"><b>Changelogs</b></a> •
|
|
20
|
+
<a href="https://atmosphericx-discord.scriptkitty.cafe"><b>Community Discord</b></a>
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
# 3.0 - Configurations
|
|
25
|
+
**@atmosx/event-product-parser** provides a wide range of configuration options, from basic event handling and management to advanced filtering capabilities and customizable event properties. This documentation provides an overview of every available configuration, including event settings, filtering options, and parser behavior, along with detailed explanations and practical examples to help you configure the parser for your specific use case.
|
|
26
|
+
|
|
27
|
+
# 3.1 - Core Configurations
|
|
28
|
+
|
|
29
|
+
## 3.1.1 - Timezone Handling
|
|
30
|
+
Timezone handling is used to ensure that all event timestamps, push notifications, and other time sensitive operations are correctly aligned with the desired timezone. The parser supports both local and UTC timezones, allowing you to configure the parser to match your application's requirements.
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
new Manager({
|
|
34
|
+
Timezone: 'UTC', // 'America/New_York', 'Europe/London', etc. are also valid options
|
|
35
|
+
})
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 3.1.2 - Database Management
|
|
39
|
+
Databases are used to store and manage stanzas, geographic data, population, broadcastify feeds, and other relevant information that must be stored and easily accessed by the parser. By default, a path is already defined for the database, but you can customize the path to suit your application's needs.
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
new Manager({
|
|
43
|
+
Database: `product-parser-operations.db`, // Custom database path
|
|
44
|
+
})
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
> [!DANGER]
|
|
48
|
+
> It is imperative that you wait for **ALL** database operations to complete before forcing your application to close. Failure to do so may prevent important data from being fully processed, resulting in missing or incomplete records. If the application is restarted before the database has finished building, you must delete the existing database and allow the parser to rebuild it from scratch. A message will be logged to the console if the database is fully built and ready for use. All event processing is haulted until the database is fully built and ready for use.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## 3.1.3 - Broadcastify Management & Filtering
|
|
53
|
+
Broadcastify feeds can be attached to events based on their geographical location. The parser can filter available feeds by proximity, ensuring that events are associated only with relevant nearby feeds and providing additional audio context when available.
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
new Manager({
|
|
57
|
+
BroadcastifySettings: {
|
|
58
|
+
BroadcastifyAttachments: true, // Enable atatchment of Broadcastify feeds to events
|
|
59
|
+
BroadcastifyDatabase: `https://scriptkitty.cafe/ftp/@atmosphericx/assets/broadcastify.json`,
|
|
60
|
+
BroadcastifyTags: [`Ham`, `Air`, `Fire`, `Public Safety`, `Weather`, `EMS`, `Police`, `Rail`] // Filter by specific tags
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
> [!IMPORTANT]
|
|
66
|
+
> The availability of Broadcastify feeds are sourced from `scriptkitty.cafe` and are updated once per month. If you have any questions regarding the availability of Broadcastify feeds, please feel free to contact me directly.
|
|
67
|
+
|
|
68
|
+
## 3.1.4 - Boundary & Population Data Management
|
|
69
|
+
Boundary and population data provide additional geographic context for events, support the generation of graphics, and contribute to the calculation of a severity index based on the population potentially affected by an event. The parser uses proximity to associate events with relevant boundary and population data. This feature does not require any configuration. The required `.json` files are statically sourced from the `scriptkitty.cafe` server and are automatically retrieved by the parser.
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
new Manager({
|
|
73
|
+
BoundarySettings: {
|
|
74
|
+
BoundaryDatabase: `https://scriptkitty.cafe/ftp/@atmosphericx/assets/counties-10m.json`,
|
|
75
|
+
CityDatabase: `https://scriptkitty.cafe/ftp/@atmosphericx/assets/cities500.json`
|
|
76
|
+
},
|
|
77
|
+
})
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 3.1.5 - NTFY Mobile Push Notifications
|
|
81
|
+
This core parser feature enables mobile push notifications through the ntfy service. Notifications can be configured to trigger for specific event types, with options to customize the notification content, priority, media attachments, and other delivery settings. The feature is optional and can be enabled or disabled depending on your application's requirements.
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
new Manager({
|
|
85
|
+
NotifyServer: {
|
|
86
|
+
Enabled: false,
|
|
87
|
+
Server: `https://ntfy.sh`,
|
|
88
|
+
MediaStorage: {
|
|
89
|
+
AUDIO: `http_path_to_audio_storage`,
|
|
90
|
+
TEXT: `http_path_to_text_storage`,
|
|
91
|
+
JSON: `http_path_to_json_storage`,
|
|
92
|
+
IMAGE: `http_path_to_image_storage`,
|
|
93
|
+
},
|
|
94
|
+
Credentials: {
|
|
95
|
+
Username: `your_ntfy_username`,
|
|
96
|
+
Password: `your_ntfy_password`
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
```
|
|
101
|
+
> [!WARNING]
|
|
102
|
+
> If you plan on self hosting your own ntfy server, please ensure that you set the **upstream-base-url** to **https://ntfy.sh** in your **server.yml** file. This is required for proper delivery of push notifications.
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
> [!TIP]
|
|
106
|
+
> It's best to set your message retention to a maximum of **12 hours**. This ensures that messages are not retained for too long, which could lead to unnecessary storage usage and potential delays in message delivery.
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
## 3.1.6 - Action Settings
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
<div align="center" style="margin-top: 20px;">
|
|
2
|
+
<a href="https://atmosphericx.scriptkitty.cafe">
|
|
3
|
+
<img src="https://scriptkitty.cafe/ftp/@atmosphericx/assets/logo-event-product-parser.png"
|
|
4
|
+
alt="@atmosx/event-product-parser"
|
|
5
|
+
width="800"/>
|
|
6
|
+
</a>
|
|
7
|
+
<p style="font-size: 1.1em; max-width: 700px;">
|
|
8
|
+
A robust TypeScript/JavaScript library for parsing and ingesting NOAA and NWS Weather Text Products, featuring an expanded suite of quality‑of‑life tools for faster, cleaner, and more reliable development.
|
|
9
|
+
</p>
|
|
10
|
+
<small style="display: block; margin-top: 10px;">
|
|
11
|
+
Built and maintained with ❤️ by the AtmosphericX team<br>
|
|
12
|
+
<i>Not affiliated with NOAA or NWS</i>
|
|
13
|
+
</small>
|
|
14
|
+
<hr style="width: 60%; margin: 25px auto; opacity: 0.3;">
|
|
15
|
+
<p style="text-align: center; font-size: 1.05em;">
|
|
16
|
+
<a href="https://atmosphericx.scriptkitty.cafe"><b>Official Documentation</b></a> •
|
|
17
|
+
<a href="https://github.com/AtmosphericX"><b>Github Organization</b></a> •
|
|
18
|
+
<a href="https://www.npmjs.com/search?q=%40atmosx"><b>Packages</b></a> •
|
|
19
|
+
<a href="/.github/CHANGELOGS.md"><b>Changelogs</b></a> •
|
|
20
|
+
<a href="https://atmosphericx-discord.scriptkitty.cafe"><b>Community Discord</b></a>
|
|
21
|
+
</p>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
# 2.0 - Sources & Attributes
|
|
25
|
+
|
|
26
|
+
**@atmosx/event-product-parser** supports multiple source attributes that allow you to customize how event products are ingested and processed. These configurations define the external services, connection methods, and parsing used by the parser to receive weather products. The available source configurations provide flexibility for different data ingestion requirements, allowing you to choose the appropriate source based on your application's needs while maintaining a consistent parsing experience.
|
|
27
|
+
|
|
28
|
+
> [!IMPORTANT]
|
|
29
|
+
> You can only use one source at any given time. Attempting to use multiple sources simultaneously will result in event conflicts and parsing issues.
|
|
30
|
+
# 2.1 - NOAA Weather Wire Service
|
|
31
|
+
[NOAA Weather Wire Service](https://www.weather.gov/nwws) is a real-time dissemination service that delivers official weather information, alerts, forecasts, products, and warnings in text format from NWS Weather Forecast Offices and National Centers. This service is designed for television and radio broadcasters, emergency managers, commercial alerting providers, private weather services, and other organizations that require rapid access to weather products.
|
|
32
|
+
|
|
33
|
+
Each alert, forecast, and observation is delivered over [XMPP](https://xmpp.org/) using the standardized [WMO Header Format](#242---world-meteorological-organization-wmo-format). This provides a consistent structure for automated processing.
|
|
34
|
+
|
|
35
|
+
Accessing the NOAA Weather Wire Service requires credentials, which can be obtained by sending an email to [NWWS.Issue@noaa.gov](mailto:NWWS.Issue@noaa.gov).
|
|
36
|
+
|
|
37
|
+
When requesting access, provide the following information:
|
|
38
|
+
|
|
39
|
+
* Name (First and Last)
|
|
40
|
+
* Company
|
|
41
|
+
* Address
|
|
42
|
+
* State, City, and ZIP Code
|
|
43
|
+
* Telephone Number
|
|
44
|
+
* Account Information: Single or Multiple Accounts
|
|
45
|
+
|
|
46
|
+
NWS processing of your request may take as long as 10 days or more depending on critical weather days and NWS priority requirements.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
> [!IMPORTANT]
|
|
51
|
+
> The National Weather Service (NWS) has officially proposed the retirement of the Satellite Broadcast Network (SBN), commonly known as NOAAPort, which could take effect as early as August 31, 2027. This means that this project will no longer look into supporting NOAAPort/SBN as a source for ingesting weather products. The NOAA Weather Wire Service (NWWS) will remain the primary source for ingesting weather products in real-time, and the NWS RESTful API will continue to provide on-demand access to weather data and products.
|
|
52
|
+
|
|
53
|
+
## 2.1.1 - Basic Settings
|
|
54
|
+
To configure properly, you must set **EnableWireService** to `true` and provide your credentials within **NOAAWeatherWireServiceSettings**. The following example demonstrates how to configure the parser to use the NOAA Weather Wire Service source using the `Manager` class.
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
new Manager({
|
|
58
|
+
EnableWireService: true, // Enable NOAA Weather Wire Service (NWWS)
|
|
59
|
+
NOAAWeatherWireServiceSettings: {
|
|
60
|
+
CredentialSettings: {
|
|
61
|
+
Username: `PUT_YOUR_USERNAME_HERE`, // Case sensitive
|
|
62
|
+
Password: `PUT_YOUR_PASSWORD_HERE`, // Case sensitive
|
|
63
|
+
Nickname: `PUT_YOUR_NICKNAME_HERE`, // Visible to other connected users
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 2.1.2 - Connection Settings
|
|
70
|
+
By default, the parser will attempt to reconnect if a stanza has not been received within the configured timeout period. The default reconnection interval is **60 seconds**. You can adjust this interval by modifying the **ReconnectInterval** property in **NOAAWeatherWireServiceSettings**.
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
NOAAWeatherWireServiceSettings: {
|
|
74
|
+
ReconnectionSettings: {
|
|
75
|
+
Enabled: true, // Enable auto reconnect
|
|
76
|
+
ReconnectionInterval: 60, // Time since last stanza before reconnecting (seconds)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 2.1.3 - Stanza Caching & Retention
|
|
82
|
+
This package provides support for caching and retaining stanzas received from the XMPP client. Cached stanzas can be retained for later processing, allowing querying and analysis of historical weather products received from the NOAA Weather Wire Service. The following example demonstrates how to configure stanza caching and retention settings.
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
NOAAWeatherWireServiceSettings: {
|
|
86
|
+
CacheSettings: {
|
|
87
|
+
Enabled: true, // Enable stanza caching
|
|
88
|
+
MaxDatabaseHistory: 50000, // Maximum stanzas to store in the database
|
|
89
|
+
MaxRetentionHistory: 1200, // Maximum stanzas to load during startup
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
## 2.1.4 - Stanza Processing & Filtering (Pre-Event Processing)
|
|
96
|
+
While processing stanzas, each one is categorized based on its contents and characteristics. This includes formats such as [CAP (Common Alerting Protocol) v1.2](https://docs.oasis-open.org/emergency/cap/v1.2/CAP-v1.2-os.html), [VTEC](https://www.weather.gov/vtec/), [UGC](https://www.weather.gov/gis/AWIPSShapefiles), and **Text** products. By default, all product categories are enabled by default which includes:
|
|
97
|
+
|
|
98
|
+
* UGC/FIPS Based Products
|
|
99
|
+
* VTEC/HVTEC + UGC/FIPS Products
|
|
100
|
+
* Text (No UGC/FIPS/VTEC Present)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
NOAAWeatherWireServiceSettings: {
|
|
105
|
+
StanzaSettings: {
|
|
106
|
+
DisableUGC: false, // Disables all UGC Categories
|
|
107
|
+
DisableVTEC: false, // Disables all VTEC/HVTEC Categories
|
|
108
|
+
DisableText: false, // Disables all RawText Categories
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
> [!IMPORTANT]
|
|
115
|
+
> Please keep in mind that CAP v1.2 products are not currently supported by this package and will be ignored during processing. Support for CAP v1.2 is planned for a future release.
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
# 2.2 - National Weather Service API
|
|
121
|
+
The [National Weather Service](https://www.weather.gov/) provides a [RESTful API](https://www.weather.gov/documentation/services-web-api) for programmatically accessing weather data and products.
|
|
122
|
+
|
|
123
|
+
Compared to the [NOAA Weather Wire Service](#21---noaa-weather-wire-service), the API introduces additional latency, with data typically delayed by 1 to 2 minutes on average. This delay is one of the primary tradeoffs when using the API instead of NOAA Weather Wire Service for real-time weather product ingestion.
|
|
124
|
+
|
|
125
|
+
The NWS API is best suited for applications that require on demand access to weather data rather than the lowest possible latency delivery of operational weather products. All responses are provided in [GeoJSON](https://geojson.org/) format, making the data straightforward to parse and integrate into applications.
|
|
126
|
+
|
|
127
|
+
# 2.2.1 - Basic Settings
|
|
128
|
+
The **National Weather Service API** source requires minimal configuration and is the **default source** used by the parser. To use the NWS API, simply set **EnableWireService** to `false`. The following example demonstrates how to configure the parser to use the NWS API source using the `Manager` class.
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
new Manager({
|
|
132
|
+
EnableWireService: false, // Disable NOAA Weather Wire Service (NWWS)
|
|
133
|
+
NationalWeatherServiceSettings: {
|
|
134
|
+
CallbackInterval: 30, // How often it retrieves new products (Minimum: 15 seconds)
|
|
135
|
+
EventsEndpoint: `https://api.weather.gov/alerts/active`, // RESTful API
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
You can also configure the **CallbackInterval** to control how frequently the parser retrieves new products from the NWS API. The minimum allowed interval is 15 seconds, and the default is 30 seconds.
|
|
141
|
+
|
|
142
|
+
# 2.3 - NOAA Weather Wire Service vs NWS RESTful API
|
|
143
|
+
There are significant differences between these two sources. [NOAA Weather Wire Service](#21---noaa-weather-wire-service) requires authenticated access and is optimized for real-time product delivery, while the [NWS RESTful API](#22---national-weather-service-api) is publicly accessible and designed for on demand data retrieval.
|
|
144
|
+
|
|
145
|
+
| Feature | NOAA Weather Wire Service | NWS RESTful API |
|
|
146
|
+
| --- | --- | --- |
|
|
147
|
+
| Authentication | ✅ | ❌ |
|
|
148
|
+
| Real-time Delivery | ✅ | ❌ |
|
|
149
|
+
| WMO Formatting | ✅ | ❌ |
|
|
150
|
+
| Persistent Connection | ✅ | ❌ |
|
|
151
|
+
| Low Latency Products | ✅ | ❌ |
|
|
152
|
+
| Easy to Use | ❌ | ✅ |
|
|
153
|
+
| Publicly Accessible | ❌ | ✅ |
|
|
154
|
+
|
|
155
|
+
# 2.4 - Formatting Standards
|
|
156
|
+
The parser supports two primary formatting standards for weather products: **GeoJSON** and **WMO Format**. These formats provide structured representations of weather data, allowing for consistent parsing and processing of weather products.
|
|
157
|
+
|
|
158
|
+
## 2.4.1 - GeoJSON Format
|
|
159
|
+
|
|
160
|
+
[GeoJSON](https://geojson.org/) is a format for encoding a variety of geographic data structures. It is based on the JavaScript Object Notation (JSON) standard and is widely used for representing geographic features in web applications.
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"type": "Feature",
|
|
165
|
+
"geometry": {
|
|
166
|
+
"type": "Polygon",
|
|
167
|
+
"coordinates": [[]]
|
|
168
|
+
},
|
|
169
|
+
"properties": {}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
## 2.4.2 - World Meteorological Organization (WMO) Format
|
|
175
|
+
|
|
176
|
+
**WMO Format** (World Meteorological Organization Format) is a standardized structure used for exchanging meteorological data, including observations, forecasts, and warnings. It provides a consistent format for weather products, allowing meteorological organizations and systems around the world to reliably share and process weather information.
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
000
|
|
181
|
+
WUUS51 KLOT 000000
|
|
182
|
+
SVRGYX
|
|
183
|
+
ILC001-ILC002-
|
|
184
|
+
/O.NEW.XXXX.XX.X.0000.000000T0000Z-000000T0000Z/
|
|
185
|
+
|
|
186
|
+
BULLETIN - IMMEDIATE BROADCAST REQUESTED
|
|
187
|
+
|
|
188
|
+
Severe Thunderstorm Warning
|
|
189
|
+
|
|
190
|
+
National Weather Service
|
|
191
|
+
|
|
192
|
+
XXXX PM Timezone Weekday Month DD 2026
|
|
193
|
+
|
|
194
|
+
TEST EXAMPLE - TEXT EXAMPLE - TEST EXAMPLE
|
|
195
|
+
|
|
196
|
+
&&
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
LAT...LON 4587 6965 4585 6968 4588 6971 4587 6972
|
|
200
|
+
|
|
201
|
+
4584 6970 4576 6972 4576 6976 4577 6978
|
|
202
|
+
|
|
203
|
+
4574 6981 4566 6974 4565 6970 4558 6971
|
|
204
|
+
|
|
205
|
+
4553 6978 4530 6970 4567 7054 4573 7038
|
|
206
|
+
|
|
207
|
+
4580 7042 4589 7026 4596 7026 4598 6968
|
|
208
|
+
|
|
209
|
+
TIME...MOT...LOC 1650Z 313DEG 52KT 4600 7042
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
HAIL THREAT...TEST EXAMPLE
|
|
213
|
+
|
|
214
|
+
MAX HAIL SIZE...TEST EXAMPLE
|
|
215
|
+
|
|
216
|
+
WIND THREAT...TEST EXAMPLE
|
|
217
|
+
|
|
218
|
+
MAX WIND GUST...TEST EXAMPLE
|
|
219
|
+
```
|