LLPS/CGLSS (UALF) data parser
A tiny package for parsing LLPS/CGLSS (UALF) strings.
- Getting Started
- Specification
- Contribution
- Compatibility
- Changelog
- Versioning
- License
- Further reading
Use the following command to add it to your dependencies
:
npm install --save ualf
import ualf from "ualf";
ualf(
"0 2017 10 16 16 01 07 345596160 65.5204 12.7377 -87 " +
"0 12 17 134.27 0.40 0.40 0.72 13.1 10.0 -0.0 1 1 0 1"
);
output is an object with the following key-value pairs for the given string above:
({
version: "0",
date: Date,
year: "2017",
month: "10",
day: "16",
hour: "16",
hours: "16",
minutes: "01",
seconds: "07",
nanoseconds: "345596160",
nano: "345596160",
latitude: "65.5204",
lat: "65.5204",
longitude: "12.7377",
long: "12.7377",
lng: "12.7377",
peakCurrent: "-87",
multiplicity: "0",
numSensors: "12",
numberOfSensors: "12",
freedom: "17",
degreesOfFreedom: "17",
ellipseAngle: "134.27",
semiMajorAxis: "0.40",
semiMinorAxis: "0.40",
chiSquareValue: "0.72",
riseTime: "13.1",
peakToZeroTime: "10.0",
maxRateOfRise: "-0.0",
cloudIndicator: "1",
angleIndicator: "1",
signalIndicator: "0",
timingIndicator: "1",
});
For numerical output, use the attached asNumbers
function:
import * as ualf from "ualf";
ualf(
"0 2017 10 16 16 01 07 345596160 65.5204 12.7377 -87 " +
"0 12 17 134.27 0.40 0.40 0.72 13.1 10.0 -0.0 1 1 0 1"
);
output is an object with the following key-value pairs for the given string above:
({
version: 0,
date: Date,
year: 2017,
month: 10,
day: 16,
hour: 16,
hours: 16,
minutes: 01,
seconds: 07,
nanoseconds: 345596160,
nano: 345596160,
latitude: 65.5204,
lat: 65.5204,
longitude: 12.7377,
long: 12.7377,
lng: 12.7377,
peakCurrent: -87,
multiplicity: 0,
numSensors: 12,
numberOfSensors: 12,
freedom: 17,
degreesOfFreedom: 17,
ellipseAngle: 134.27,
semiMajorAxis: 0.4,
semiMinorAxis: 0.4,
chiSquareValue: 0.72,
riseTime: 13.1,
peakToZeroTime: 10.0,
maxRateOfRise: -0.0,
cloudIndicator: 1,
angleIndicator: 1,
signalIndicator: 0,
timingIndicator: 1,
});
The UALF "specification" looks something like this. Each of these named segments have been extracted as their own key-value pair of the resulting object returned from calling this package. All values are kept as strings to retain leading zeroes.
{
version,
date, // Date object with the passed date and time
year,
month,
day,
hour,
hours, // alias for `hour`
minutes,
seconds,
nanoseconds,
nano, // alias for `nanoseconds`
latitude,
lat, // alias for `latitude`
longitude,
long, // alias for `longitude`
lng, // alias for `longitude`
peakCurrent,
multiplicity,
numberOfSensors,
numSensors, // alias for `numberOfSensors`
degreesOfFreedom,
freedom, // alias for `degreesOfFreedom`
ellipseAngle,
semiMajorAxis,
semiMinorAxis,
chiSquareValue,
riseTime,
peakToZeroTime,
maxRateOfRise,
cloudIndicator,
angleIndicator,
signalIndicator,
timingIndicator;
}
This package is open to pull requests. To set up the test environment, fork it, clone it, and run
npm install
in the package's folder.
To run unit tests:
npm test
To build:
npm build
This package is compatible with Node versions 14 and up.
Changelog is available at the repository.
We use SemVer for versioning. For the versions available, see the tags on this repository.
This project is licensed under the MIT License - see the LICENSE.md file for details
For more information on the specifics of LLPS/CGLSS, and their data format UALF, check this document or this abstract.