{"id":21707820,"url":"https://github.com/flightaware/mdsplib","last_synced_at":"2025-08-11T14:49:51.636Z","repository":{"id":12622057,"uuid":"15293284","full_name":"flightaware/mdsplib","owner":"flightaware","description":"Updated METAR Decoder Software Package Library","archived":false,"fork":false,"pushed_at":"2022-12-06T07:57:37.000Z","size":280,"stargazers_count":26,"open_issues_count":1,"forks_count":17,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-04-12T16:16:16.922Z","etag":null,"topics":["aviation","c","metar","metar-decoder","weather-conditions"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"codefellows-portland-javascript-401d4/http-single-resource","license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flightaware.png","metadata":{"files":{"readme":"README.MDSP","changelog":"HISTORY","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-12-18T20:19:54.000Z","updated_at":"2024-12-07T22:01:20.000Z","dependencies_parsed_at":"2023-01-11T18:22:07.902Z","dependency_job_id":null,"html_url":"https://github.com/flightaware/mdsplib","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/flightaware/mdsplib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fmdsplib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fmdsplib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fmdsplib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fmdsplib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flightaware","download_url":"https://codeload.github.com/flightaware/mdsplib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fmdsplib/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269906360,"owners_count":24494329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aviation","c","metar","metar-decoder","weather-conditions"],"created_at":"2024-11-25T22:19:23.929Z","updated_at":"2025-08-11T14:49:51.611Z","avatar_url":"https://github.com/flightaware.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"METAR DECODER SOFTWARE PACKAGE (MDSP)\n\nUpdate History:     \n\nNEW\n\n29 June 1998    (Posting of METAR Decoder,\n                                      Upgrade,Version 1.8)\n\n15 July 1996      (Posting of METAR Decoder,\n                                       Upgrade,Version 1.7)\n\n                         1)   METAR date/time groups that are not\n                              postfixed with 'Z' will be\n                              recognized and decoded along with \n                              date/time groups that are correctly\n                              encoded.\n                         2)   Station identifiers that include a\n                              mix of alphanumeric characters\n                              following the first alpha character\n                              will be accepted as a valid station\n                              ID.\n                         3)   Incorrectly coded prevailing\n                              visibility groups (e.g. 1/SM) will\n                              be ignored as spurious or\n                              extraneous groups.\n                         4)   Indeterminant 3/6-HR precipitation \n                              groups (i.e. 6////) are flagged\n                              using a boolean variable.  The\n                              boolean variable is TRUE, if 6////\n                              appears in the observation\n                              or FALSE, if 6//// does not appear\n                              in the observation.\n                         5)   The keyword 'COR', a positionally\n                              dependent METAR group, will be\n                              recognized and decoded whether it\n                              appears before or after the\n                              date/time group.\n                         6)   Spurious or extraneous groups that\n                              occur within the body of a METAR\n                              observation will be skipped without\n                              compromising the positional\n                              integrity of groups that may\n                              follow.\n                         7)   Code has been added to the\n                              DCDMETAR.C and DCDMTRMK.C files\n                              to protect against attempts at\n                              using NULL pointers in string\n                              functions.\n\n     \n                    26 June 1996      (Posting of METAR Decoder,\n                                       Upgrade,Version 1.6)\n                    21 May 1996       (Posting of METAR Decoder,\n                                       Upgrade,Version 1.5)\n                    15 May 1996       (Posting of METAR Decoder,\n                                       Upgrade,Version 1.4)\n                    07 May 1996       (Posting of METAR Decoder,\n                                       Upgrade,Version 1.3)\n                    26 February 1996  (Posting of METAR Decoder, \n                                       Upgrade,Version 1.2)\n                    20 December 1995  (Posting of METAR Decoder, \n                                       Upgrade,Version 1.1)\n                    11 June 1995      (Posting of METAR Decoder, \n                                       Version 1.0)\n                    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nGeneral Information:\n--------------------\n\n     The Systems Operations Center (SOC) of the National Weather\nService (NWS) has developed a \"C\" language software package\nto decode WMO FM 15-IX Ext. (METAR) and FM 16-IX Ext. (SPECI)\nformatted reports.  The format specifications for these report\ntypes are described in the Federal Meteorological Handbook Number\n1 (FMH-1), Surface Weather Observations and Reports (December\n1995).  \n\n     A METAR report may consist of two parts - \n\n     1)   the main body of the report consists of observational  \n          data that meets aviation requirements (e.g. wind speed\n          and direction, sky condition, temperature and dew\n          point temperature, etc.)\n\n     2)   the remarks section may consist of one or more sections\n          (i.e. Automated and Manual, Plain Language (Manual     \n          Only), and Additive Data and Automated Maintenance)    \n\n     The MDSP is specifically designed to meet SOC operational \nrequirements.  Nevertheless, it is a comprehensive decoder.  As a\nresult, SOC management decided to make the MDSP available to any\ninterested party via the Internet.  However, as the SOC makes this\nsoftware available, it neither implies or guarantees the accuracy\nor dependability of the MDSP.\n\n     The MDSP makes no attempt to decode any METAR/SPECI group\nthat does not conform to the METAR/SPECI format outlined in FMH-1\n(METAR).\n\n\n\n\n\n\n\n\n\n\n\n\n\nHow Do You Use It?:\n-------------------\n\n     The METAR Decoder (DCDMETAR) is a \"C\" language routine that\ntakes two arguments.  The 1st argument is a pointer to a METAR\nreport character string.  The 2nd argument is a pointer to a\nDecoded_METAR data type (defined in METAR.H).  DCDMETAR returns\n12, if it encounters an invalid station ID (i.e. a station that\ndoes not contains 4 characters statino ID and/or whose first\ncharacter is not alpha).  Otherwise, it returns 0.  \n\n     All decoded groups/elements are assigned to members of the\nstructure whose address is that of the 2nd input argument.  If\nthe decoder encounters a multiple instance of the same\ngroup/element in the Remarks section of the Decoder, then that\ngroup/element is not decoded.\n\n     The input METAR report must be a character string that is\nterminated by a sentinel (i.e. '\\0').  The report string should\nalso be free of any communication transmission characters (e.g.\ncarriage returns, linefeeds, etc.).  Each group in the report\nmust be separated by at least one blank character.\n\n     The decoded groups/elements of the METAR report are\nevaluated as one of 4 basic data types - int, bool, char, or\nfloat.  All decoded METAR structure members are initialized prior\nto decoding each input METAR report.  All int variables are set\nto MAXINT ( defined in LOCAL.H).  All bool variables are set to\nFALSE (i.e. 0).  All char and char strings are set to '\\0'(s). \nAll float variables are set to (float) MAXINT.\n\n     METAR decoded structure members retain their initialization\nvalues, if no groups/elements were decoded from the METAR report\nand assigned to those members. \n\n     The METAR Decoder has the following function prototype:     \n\n   \n        int decode_metar( char *observation, Decoded_METAR *Mptr ),\n\n     The following program segment illustrates how the decode_metar\nfunction might be invoked:\n\n\n\n\n     #include \u003cmetar h\u003e\n        main()\n        {\n                /***************************/\n                /* DECLARE LOCAL VARIABLES */\n                /***************************/\n\n                Decoded_METAR MetarStruct,\n                              *Mptr = \u0026MetarStruct;\n                char *observation;\n                .\n                .\n                .\n                if ( (observation = getMETAR( selectionParms ))  \n\n                                 != NULL ) { \n                        if( decode_metar( observation, Mptr) != 0 )  \n\n                              printf(\"Error Msg\\m\");             \n\n                        else {                           \n                                'Process decoded METAR           \n\n                                       groups/elements'\n                             }\n                }\n                .\n                .\n                .\n\n\n     Within the routine that calls decode_metar, a variable must be\ndeclared as a Decoded_METAR type.  The address of that\nDecoded_METAR variable and a pointer to a METAR report string are\nthen passed to the decode_metar routine.  The function getMETAR is\nfor illustrative purposes only and simply represents a generic routine that the user must furnish in\norder to supply  METAR reports to the decode_metar routine.\n\n     All of the files listed below have been packaged as a single\nself-extracting file called DCDMETAR.EXE.  An ASCII version of\nthese files is also available in the file DCDMETAR.SRC.  Each of\nthe header files and functions in DCDMETAR.SRC are separated by\nthe delimiter @@ and the name of the file (e.g. @@DRVMETAR.C\nwould be followed by the DRVMETAR.C source code.\n\n     1)   DRVMETAR.C          6)   STSPACK2.C     11)  LOCAL.H\n     2)   DCDMETAR.C          7)   STSPACK3.C\n     3)   DCDMTRMK.C         8)   ANTOI.C    \n     4)   PRTDMETR.C           9)   CHARCMP.C\n     5)   FRACPART.C          10)   METAR.H   \n\n\n\nWhat's Included?:\n-----------------\n\n     The files that make up the MDSP are described below.  These\nfiles have been packaged as a single self-extracting file called\nDCDMETAR.EXE. If your system can not expand this file, then\nyou will have to manually extract the individual source and\nheader files from  the file called DCDMETAR.SRC.  Each source or\nheader file within  DCDMETAR.SRC is delimited by the 2 characters\n\"@@\" followed by the name of the file (e.g. @@DRVMETAR.C or\n@@METAR.H).\n\n     1)  DRVMETAR.C - A main program that acts as a driver for   \n         the MDSP. In its current configuration, DRVMETAR\n         uses an array of pointers to METAR report character     \n         strings for input to the METAR Decoder.  The user may   \n         elect to continue with this configuration and provide   \n         his or her own METAR reports for testing or instead read\n         individual METAR reports in from a file or some other   \n         database.  The METAR report strings that are in DRVMETAR\n         are not meant to be reports that reflect physical       \n         reality, but rather reports that were designed to       \n         exercise various parts of the MDSP.\n\n     2)  DCDMETAR.C - A function that decodes the main body of   \n         the METAR report. The decoded groups/elements of the    \n         METAR report are stored in a structure of the type      \n         Decoded_METAR.\n\n     3)  DCDMTRMK.C - A function that decodes the remarks section\n         of the METAR report.  The decoded groups/elements of the\n         METAR report are also stored in a struture of the type  \n         Decoded_METAR.\n\n     4)  PRTDMETR.C - A function that prints the decoded METAR   \n         report groups/elements.\n\n     5)  FRACPART.C - A function that converts a character string\n         fraction (e.g. \"1/4\", \"1/8\", etc.) into a floating point\n         number.\n\n     6)  STSPACK2.C - A collection of routines written at the    \n         SOC to perform string evaluations that expand upon the  \n         standard C string functions.\n\n     6)  STSPACK3.C - A collection of routines written at the    \n         SOC to perform string evaluations that expand upon the  \n         standard C string functions.\n\n     7)  ANTOI.C    - A routine developed at the SOC to convert \n         variable length numeric character strings into integers.\n\n     8)  CHARCMP.C  - A routine developed at the SOC to recognize\n         character patterns.  If a given string pattern is found\n         in a given character string, CHARCMP returns TRUE.      \n\n         Otherwise, it returns FALSE.    \n\n     9)  METAR.H    - An MDSP header file.  This header file     \n         contains the definition of the decoded METAR structure  \n         members.\n                  \n    10)  LOCAL.H    - A \"general purpose\" header file developed  \n         at the SOC.  LOCAL.H is referenced in METAR.H.  LOCAL.H \n         includes a number of locally defined variables that are \n         used in the MDSP.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPrinting The METAR Report and/or Decoded METAR Report:\n------------------------------------------------------\n\n        The routine PRTDMETR may be used to print the decoded\nMETAR report.  PRTDMETR prints the decoded groups/elements in the\norder in which they would appear according to the format\ndescribed in FMH-1 (METAR).  The DRVMETAR module contains a print\nstatement to print the input METAR report and it also calls the\nPRTDMETR routine that prints the decoded METAR data.\n\n\nMDSP Updates:\n-------------\n\n     All updates to the MDSP are based upon:\n          \n          1)   meeting all METAR decoding specifications by July\n               1, 1996\n\n          2)   responding to decoding problems or errors \n               that have been demonstrated to exist in the\n               MDSP\n\n     Areas of on-going MDSP refinement and documentation:\n\n          1)   internal/external documentation\n\n     \n\nInquires:\n---------\n\n        Questions, comments, or problems regarding the MDSP,\nshould be directed to Carl McCalla at -\n\n     NOAA/National Weather Service\n     1325 East-West Highway\n     SSMC2, W/OSO242, Station 5114\n     Silver Spring, Maryland 20910\n\n     Work:                     (301) 713-0882, Ext 115\n\n     FAX:                      (301) 608-0911 \n        \n     E-Mail Address:     Carl.Mccalla@noaa.gov \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflightaware%2Fmdsplib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflightaware%2Fmdsplib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflightaware%2Fmdsplib/lists"}