NOTICE
This web page is a copy of the APRS multiline protocol documentation that was
once available on www.wxsvr.net, and which was provided to me by Dale Huguley
through Curt Mills with his redistribution permission. I do not have anything
to do with the multiline protocol other than being a user.
APRS Multiline Protocol
The present spec in aprs for area objects cannot handle
polygons properly to be used for National Weather Service watches and
warnings. The following protocol has been used in Xastir
successfully for over a year.
SPCSVR>APRS:;SPCS1528z*262100z3500.00NS07730.00WWSvr TStormWatch #174 }e0]FgcBS6:W{QFSAA
This represents a watch box on the Carolina Coast
SPCSVR>APRS:;SPCS1528z*262100z3500.00NS07730.00WWSvr TStormWatch #174 }e0]FgcBS6:W{QFSAA
This packet is a standard aprs position up till the "}" which starts
the multiline portion.
Thereafter-
1. Single character denoting type of line- in this case a dashed yellow
line.
Character
|
Color
|
Type of Line
|
Use in NWS Messages
|
a
|
red
|
solid
|
Tornado Warning
|
b
|
red
|
dashed
|
Tornado Watch
|
c
|
red
|
double dashed
|
|
d
|
yellow
|
solid
|
Severe Thunderstorm Warning
|
e
|
yellow
|
dashed
|
Severe Thunderstorm Watch (Example Packet)
|
f
|
yellow
|
double dashed |
|
g
|
blue
|
solid
|
Test Warning
|
h
|
blue
|
dashed
|
Test Watch
|
i
|
blue
|
double dashed |
|
j
|
green
|
solid
|
|
k
|
green
|
dashed
|
Mesoscale Discussion Areas
|
l
|
green
|
double dashed |
|
2. Single character denoting type of object
0 = Closed Polygon
1 = Line Segment
? others to be defined
3. Single Scale Character
This is somewhat hard to explain, but easy to
program. I wanted the ability to go from global scale to small
enough for a walkathon etc.
Scale character (ascii value) = (integer(log to base
10 of the scale factor relative to .0001 degree) X 20 ) + 33
Example:
tenths of a degree = scale factor 1000 ( .0001 X
1000 = .1)
log to the base 10 of 1000 = 3
3 X 20 = 60
60 + 33 = 93
ascii 93 = "]"
other decimal degree scale factors are:
.0001 = "!"
.001 = "5"
.01 = "I" (Used by NWS for
Areas Of Maximum concern for tornados and Thunderstorms)
.1 = "]"
(Used by NWS for Watch Boxes)
1 = "q"
4. 2 character offset (can be up to 23 sets of these before the sting
gets too long for aprs)
First Character represents latitude offset relative
to the position of the object in the standard portion of the packet
Second Character represents longitude offset.
Offset Character = (integer( offset in degrees /
scale factor)) + 78
Range is limited to 44 scale factors plus and 45 minus
from the reference.
Upper case "N" = ascii 78 is zero offset
Lower case "z' = ascii 122 or +44 scale
factors ( 122-78 = 44)
Exclamation "!" = ascii 33 or -45 scale factors (33
- 78 = -45)
"FgcBS6:W" is the string from the
example which gives the 4 corners of the polygon
Test Patterns:
Below are two sets of logs with the maximum offsets for a given scale
factor, and the factor in the comment area expressed in decimal degrees.
xastir/winaprs type Logfile
ui-view type Logfile
Programming Notes:
Wxsvr always places a space before the multiline sequence - and shares
the "{" character with the sequence number at the end
of the packet which is always 5 alphanumeric
characters in length. This can be used to filter
false polygons generated by
random garbage. The multiline starts with a "<space>}" then
printable characters with no spaces up to 46 characters then "{" and 5
alphanumerics at the end.
It has been pointed out to me that this spec is western hemisphereic
centric in that North and West are assumed to be positive. This is
the way the NWS deals with it. For other coordinate systems, the
offsets may need to be reversed- i.e. where West longitute is defined as
negative.
This protocol is versatile enough to allow a small "map" to be
transmitted on the fly.