APRS-IS 过滤器

服务器推给你哪些包,全看这一行 filter。每个条件在这一页摊开写。

一条 filter 怎么写

过滤器是给服务器看的订阅单。端口默认给你的那点数据之外,想多看什么,一条条写上去。

写法只有一种:先写 filter,后面跟一个或多个条件,中间用空格隔开。想要达拉斯周边两百公里内的台站,再加上所有 NWS 公报,就写成下面这样。

  • 两个条件 filter r/33/-97/200 t/n 条件之间是「或」的关系,任意一条命中,这个包就推给你。再多几个条件,照样用空格隔开。
  • 加上排除 filter m/200 -p/CW 条件前面加一个减号就是排除。这一行要两百公里内的台站,但呼号以 CW 开头的一个不要。

不写过滤条件,不等于什么都收不到。14580 这个自定义过滤端口上,服务器本来就会给你两样:发给你的消息连同相关的位置包,还有你自己那台网关收上来的包。其余的都要靠过滤条件加上去。排除条件只挡这一个订阅里的包,端口的常规功能照旧,别人发给你的消息不会被它掐掉。

过滤器只管发给你这一个方向。你自己发的包、你自己的网关转上去的包,都不受它约束。

  • 写在哪里 三个地方都认:写在登录行里,给 SERVER 发一条 APRS 消息,或者单独一行注释 #filter r/33/-97/200。官方推荐第一种,现在的客户端基本都支持。
  • 经纬度 一律用十进制度。西经和南纬写负数,东经和北纬写正数。
  • 恢复默认 filter default 让过滤器退回这个端口预设的那一套。
  • 条数 按位置挑的那几类条件,同类里各最多九条。

按位置挑

用得最多的四个条件:一个圆、一个方框,还有两个跟着人跑的圆。

  • r/lat/lon/dist 范围过滤。以 lat/lon 为圆心、dist 公里为半径,里头的台站位置包和对象都推给你,发给半径内台站的消息也一起推。
  • a/latN/lonW/latS/lonE 矩形过滤。给四个角,先左上再右下,经纬度照样用十进制度,西经南纬写负数。
  • m/dist 圆心放在本连接最后一次算出的位置上,半径 dist 公里。人动了也不用改条件。
  • f/call/dist 圆心放在某个台站最后已知的位置上,半径 dist 公里。跟着朋友跑就用它。
  • 一个能直接抄的例子 filter r/23.13/113.26/50 广州附近五十公里。嫌少就把最后那个数字改大,单位是公里。

范围、矩形、朋友这三类都能同时写好几条,把常去的地方一块儿圈上。同类各最多九条。

按台站挑

知道要看谁的包,就用这几个条件点名。多数支持星号通配。

  • p/aa/bb 呼号前缀。发信呼号以 aa 或者 bb 开头的包都推给你,跟一个地区或者一类台站用它。
  • b/call1/call2 精确呼号。可以写一列,也支持星号通配。
  • d/digi1/digi2 被某个中继转发过的包。路径里出现这个呼号就算,支持星号通配。
  • e/call1/call2 入口台站。包里的 q 构造后面紧跟着这个呼号,也就是把这个包收上网的那台网关。
  • g/call1/call2 组消息。消息的收件人是这些呼号的包都推给你,支持星号通配。
  • u/unproto1 目的呼号,也就是包头里那个 To call。支持星号通配。
  • o/obj1/obj2 对象名精确匹配。支持星号通配,名字里不能有空格。
  • os/obj1/obj2 严格对象过滤,写法同上。对象名固定九位,Item 名字三到九位。这个条件只能写一条,而且必须放在整行的最后。

对象名里要写斜杠或者星号,得换个写法:| 当斜杠用,~ 当星号用。

按类型挑

不看是谁发的,看包里装的是什么。t 开头这一组管这个。

写法是把类别字母连在 t/ 后面,一次可以挑好几类,t/otq 就是要对象、遥测和查询。后面还能再跟一段 /call/km,把这些类别限制在某个台站周围多少公里以内。

p
位置包。
o
对象。
i
Item,名字很短的小标记。
m
消息。
q
查询。
s
状态包。
t
遥测。
u
用户自定义。
n
NWS 格式的报文和对象。
w
天气。挑这一类的时候,不带位置的气象包,它对应的位置包也会一起给你。
  • 几个例子 t/otq t/n t/poimqstunw 第一行要对象、遥测和查询;第二行只要 NWS 公报;第三行十类全都要。

按符号与 q 构造挑

两个偏门条件:一个认地图上的图标,一个认包是怎么上网的。

  • s/pri/alt/over 符号过滤。三段从左到右是主表符号、副表符号、叠加字符,叠加字符区分大小写。要写斜杠的地方用 | 代替。
  • q/con/I q 构造过滤。con 是要放行的 q 构造,区分大小写;这一格留空、只写一个 I,就要那些由 iGate 上来的位置包。
  • 符号过滤 s/-> s//# s//#/T 第一行要主表里的房子和汽车;第二行要副表里的中继,带不带叠加都算;第三行收窄到叠加字符是大写 T 的中继。
  • q 构造过滤 q/C q/rR q//I 第一行只要构造是 qAC 的包;第二行要 qAr 或者 qAR;第三行挑的是 iGate 上来的位置包,认那些在别的包里被标成 qAr 或 qAo 或 qAR 的网关。

q 构造是包进 APRS-IS 的时候被写上的标记,记着它是从哪条路、由谁送上网的。每个标记的含义在q 构造那一页单独讲,记不住也别硬背,日常过滤很少用到。

原文与相关

条件按官方 Server-side Filter Commands 整理,另外配了几个能直接抄的例子。