航线图绘制工具 gcmap 详解

0

编者注:受限于新冠疫情下的各国旅行禁令,也出于对自身健康的考虑,出门旅行(尤其出国旅行)在 2020 年几乎成为一种奢望。期待疫情早日过去,我们能早日重新踏上旅途,并在旅途结束后用 gcmap 晒出自己的飞行轨迹。

截至当下,牧羊场的博客已经涵盖了我们能用到的有利用价值的所有航司的里程计划。在阐释各个航司里程计划的路线规则,及列举兑换亮点时,我们常会用 gcmap 网站(www.gcmap.com) 绘制一些航线示意图,来让这些讲解更直观,案例更容易被理解。平日在诸多场合也看到不少飞友用 gcmap 来制作一些路线图来标识过去一年飞过的线路,或者是来年的飞行计划。平心而论,通过 gcmap 绘制的地图从来都称不上美观(至少从一个地理学出身的学生角度来看),但因为语法简单,制图方便快捷,用它制作的航线图几乎在所有中英文羊毛圈的博客中出现频次最高。gcmap 网站已经提供了诸多包含字体,字号,符号,颜色等基础选项,但却没有任何网站对其各项功能进行了系统性的详细阐释。

牧羊场这篇文章分为两个层次。第一个层次适宜于入门者,只求熟悉 gcmap 菜单给出的各项功能,绘制简单的航线示意图即可。第二个层次适宜于进阶读者,通过添加额外指令,让航线图表意更丰富,图形更美观。如果你初来乍到,觉得只需了解入门技巧即可,此文读完调图选项即可作罢。如果你自认为是高阶用户,直接下拉至属性自定义模块开始阅读。

gcmap 的主界面如下图所示:(gcmap 常常自己会制作一些与时事相关联的展示地图在主页,直接进入其网站时往往看不到地图以下的包含 Code Dictionary, Map Controls 等区域)

主指令区

在此区域按照特定语法输入机场代码,可显示机场位置或机场间的连线。也可以加入后文中将要提及的其它代码来指定点/线的各类属性,增加地图的信息量。当下我们仅讨论用机场代码画最简单的路线图的相关指令。

gcmap 支持的机场代码有 IATA 三位码,ICAO 四位码,FAA 的美国机场编码,其中 IATA 三位码最为常用,下文所有示例中的机场代码将均采用 IATA 三位码。如果不知道机场代码,也可在主指令区输入城市英文名并点击 research 获取。(Wikipedia 有完整的机场 IATA/ICAO 代码目录,感兴趣的可以点击查询。但是机场数目太多,Wikipedia 也未将无商业航班运营的机场排除在外,该目录适用性不强。牧羊场将会在近期推出全球有商业航班运营的机场代码地图组图,方便各位查看);

机场代码之间有三种不同的连接符号,分别具有不同的含义;

A.短横线 [] 代表,即从一个机场到另一个机场的连线。BOS-ORD,代表从波士顿 [BOS] 至芝加哥奥黑尔 [ORD] 的连线 (左下图)。MIA-CLT-DFW-MSP,代表从迈阿密 [MIA] 连接至夏洛特 [CLT],再由 CLT 至达拉斯 [DFW],再从 DFW 至明尼阿波利斯 [MSP] 的连线 (右下图)。

B.逗号[,] 代表,即另起一条线路。 BOS-ORD,PHL-DFW-LAX,MCO,两个逗号将此指令一分为三,第一条为波士顿至芝加哥,第二条是费城 [PHL] 经达拉斯至洛杉矶 [LAX],第三条只有一个奥兰多 [MCO] 机场,在下图为一个孤立的点。

C.左斜线 [/] 代表BOS-PHL-ORD/DFW/LAX,表示波士顿经费城,然后费城引出三条线分别连接至芝加哥、达拉斯和洛杉矶。(注意一旦出现了左斜线后,后面不可接一个短横线。gcmap 能从一点引出多条线,却不能简单的将多个点收归到一个点。如果要表示波士顿经夏洛特或达拉斯至洛杉矶的航线,不能 BOS-CLT/DFW-LAX,而应该选用 BOS-CLT-LAX,BOS-DFW-LAX,或者BOS-CLT/DFW,LAX-CLT/DFW

D.艾特 [@] 代表,用于构建距某机场特定距离的同心圆。需要在 @ 符号前加距离来表征同心圆半径,如 500mi@BOS,500km,800km@DFW,表示以波士顿为中心画一个半径为 500 miles 的圆,再以达拉斯为中心画一个半径 500km,一个半径 800km 的同心圆。

近邻地图的下方有三个底图选项:Plain, Light Blue Marble,点击对应单词即可选定。我一般会优先选择 Light 底图,背景颜色相对浅。Plain 的水体颜色太深,如果航线选择蓝色系颜色的话,会不容易与水体区分开来。Blue Marble 颜色更是丰富多彩,相对而言航线就显得更不明显了。运用 gcmap 主要是用来画航线图,背景太过于丰富的话就喧宾夺主了。(感受一下不同底图下波士顿至芝加哥航线图)

在地图下方会自动生成 Distances 和 Code Dictionary,前者显示各个航段的距离,后者表示图示中有涉及的各个机场信息,并提供信息详情超链接。 当指令为 BOS-PHL-ORD/DFW/LAX 时,生成的信息如下图所示。

当路线比较少时,这些基础指令便能满足制图要求。但当路线稍微一多(如下例所示),整个图形就会显得芜杂。

阿提哈德航空 [EY] 兑换海航 [HU] 单程直达经济舱时,距离 500mi 内的仅需 3.5K 里程,距离 501~1000mi 的也仅需 7K 里程,可谓外国航司在内地最划算的兑换选项。海航有海口 [HAK] 和北京 [PEK] 两大 HUB,我们据此制作了海口和北京出发的 500mi 及501~1000mi 直达航线汇总。总共50条航线,不到100个机场,但江南一带即两广地区已显太过拥挤,而很难将机场位置和机场 IATA 码一一对应了。为此,我们需要了解后文将要提及的调图选项。(太过冗长的指令就不完整罗列在文章中啦,感兴趣的可点击图片下方备注的超链接查看)

调图选项

gcmap 生成的航线图包含点,线,备注和底图四要素,不同要素有不同的可调节参数。对于点要素,可调节的有点类型,颜色和大小。对于线要素,可调节的有线粗细,颜色(gcmap 不能设置线类型,只能是实线,不能 Dashed or Dotted)。对于备注,可调节的有字体,字号,颜色。对于底图,可调节的有底图款式(上文已讨论),投影。网页的右下角依次有 Markers, Map Conf, Dist+Time, ETOPS 几个tabs,其中包含调整这四要素各参数的选项。

A. 颜色。 gcmap 系统可供直接选择的颜色如下图所示。点颜色调节在 Markers>Detailed>Symbol 下方的 Color,备注颜色调节在 Markers>Detailed>Label 下方的 Color,线条颜色调节在 Map Conf>Path Options>Color。由下图可见,对于 Light 的底图,选择靠近深红色或深蓝色的色系相对清晰,绿色,黄色和白色这类浅色系很难看清。而对于底图色彩多样的 Blue Marble,则应优先选择浅色系;(颜色也是唯一一个有三个要素同时涉及的参数)

Colors, blue marble

B. 点符号。gcmap 提供如下图所示各类点符号,可在Markers>Detailed>Symbol 中调节。

C. 点大小。gcmap 中,可在 Markers>Detailed>Symbol 的下下方 Size 处调节符号大小,最大为19,最小为3。效果如下。3号肉眼难辨,10号以上略占地方,一般情形下选4~9号为宜

D. 备注名。gcmap 提供的备注名有 IATA 代码,ICAO 代码,城市名,机场名等, 在 Markers>Detailed>Label 处调节 。一般而言,我们都会选择 IATA 代码,其它代码都略显冗长。当然,我们也可以选择自定义备注名,具体自定义方法将在后文中详述;

E. 备注字体字号。gcmap 中字体仅能够选择是否加粗,是否倾斜,选项在 Markers>Detailed> Face 中。字号大小从 10 到 28 不等。字体字号效果图如下。小于 14 的字号最后不要加粗,大于 24 的字号尽量少选用;

F. 线条粗细。该项在 Map Conf >Path Options>Width 选项中调节,可输入小数数值。

G. 地图投影。gcmap 在 Map Conf>Map Options>Projection 下提供矩形 [Rectangular],极射 [Polar-Aspect Orthographic], 正交 [Orthographic], 和方位角等距 [Azimuthal Equidistant] 投影。下图为四种投影示意图。如无特殊偏好,选择系统默认的投影就好。此外,
Map Conf>Map Options>Projection 规定地图中心点位置,一般情形下也无需调节。

gcmap 提供的众多参数调节选项使得我们能够对地图进行优化。同样以上文提及的海航的图为例,我们可以通过减小备注字体,符号的大小,线条的宽度等来让图像稍微清晰一点。但是一个要素的某个参数只能设为一个定值,而不能有内在的变化。于是,所有航线都统一成了红色(也可以是其它一个你喜欢的颜色),但无法将北京出发的设为红色,海口出发的设置为绿色。更深层次,更具体的调节需要用到下文将要提及的属性自定义。

自定义

属性自定义

要对同一要素的同一属性赋不同的值,gcmap 网站自带的选项是不能实现这个功能的,但可通过自己输入命令来完成。gcmap 网站并未公布有哪些属性相关的语法,我们也只能根据其现有的示例及自己摸索来进行总结。

属性定义的规则如下:

  • c:[color 名] > 线条颜色。[color 名] 可以是 gcmap 定义过的颜色,如 c:red 代表红色线条,c:blue 代表蓝色线条。[color 名] 也可以是以 #开头的 html 色彩代码,如 c:#FFFFFF表示白色线条。除非需要在一张图里面使用非常多的颜色,或者有自己非常钟意的却未被 gcmap 定义过的颜色,一般情形下不需要使用 html 色彩代码;
  • w:[数值] > 线条宽度w:1 代表线条宽 1 个单位,w:3 表示线条宽 3 个单位;
  • m:[symbol 名][数值]:[color 名] > 符号类型大小和颜色m:diamond9:red 代表大小为 9 的 红色菱形符号,m:ringb15:blue 代表大小为15的蓝色圆环。其中仅有 [symbol 名] 为必须含有的参数,其余参数皆可省略。此语句仅显示符号,不显示备注;
  • 符号定义+[“%备注类别“][数字][字体][方位]:[color 名] > 备注定义。符号备注不可脱离于符号而存在,只能续接于其后。m:disc9:red+”%T”14bse:black 代表大小为 9 的红色圆点,备注采用 IATA 三位码,字号 14,黑色加粗,备注于符号东南方。[“%备注类别] 为必填选项,其余参数可省略。gcmap 已经含有备注防重复的机制,个人最好不要轻易定位备注方位,以免造成更大范围的备注覆盖。(备注类别有:U-用户自定义,I-ICAO 四维码,T-IATA 三位码,F-FAA 代码,N-城市名,A-机场名等)(字体有:r-正体,b-加粗,i-斜体,ib-斜体)(方位有:e-正东,se-东南,s-正南,sw-西南,w-正西,nw-西北,n-正北,ne-东北)

家住西雅图 [SEA] 的牧羊君的公司总部实则位于硅谷 [SJC] 地区,为此卡卡隔三差五就要飞去总部开个会,去年下半年总共飞了8次往返。牧羊嫂还在五大湖边的水牛城 [BUF] 念 PHD,平日课业繁忙抽不开身,都是牧羊君经 ORD 转机去看她,半年内去了水牛城五趟。趁着牧羊嫂的三次假期,小两口先后约去了奥兰多 [MCO],新奥尔良 [MSY],坎昆 [CUN] 玩耍。牧羊君每次都是在休斯敦 [IAH] 转机,牧羊嫂有两次是在夏洛特 [CLT],还有一次是在 DFW 转机。于是,牧羊夫妇过去半年的行程可用下面指令来表示,用粗细代表频次,用颜色区分乘机人,机场选用5号黑色圆点标识,机场选用 Navy 色城市名标注。成图谈不上美观,但传达的信息一目了然。

m:disc5:black+”%N”:navy,c:blue,w:8,sea-sjc,w:5,sea-ord-buf,w:3,sea-iah,w:1,iah-msy/mco/cun,c:red,clt-mco/msy,buf-dfw-cun,w:2,buf-clt

牧羊夫妇 2018 年下半年飞行路线图

上述指令透漏出一些细节:

  1. 属性定义要放置于航线之前,属性定义影响其后的航线成图;
  2. 一个属性定义后,将会影响其后所有航线,直到该属性被再次定义。如最初定义了线条颜色为蓝色(c:blue)后,之后所有航线皆为红色,直到重新定义线条颜色的(c:red)出现。在由蓝色变为红色的时候,并无线条宽度的语句出现,故 w:1 指令一直影响到 buf-dfw-cun 航段,直到之后 w:2 出现。

于是,我们可以自己编译属性定义,来更新前文提及的海航线路图。北京和海口出发的航线图分别用不同颜色表示,北京和海口机场用加大的星星凸出,同心圆用区别于航线图的其它颜色表示(博主未找到自定义同心圆属性的方法,如有读者知晓,欢迎在评论区留言)。经此番加工后的图比前两幅图清晰明了了不少。当然,受限于 gcmap 给出的有限的发挥空间,我们很难在下图基础上做出更进一步的美化和清晰化。

定位自定义

飞机实际飞行的轨迹并不是严格按照大圆路线,而是受到天气,ZZ,军事等多方面制约扭扭曲曲。若想用 gcmap 制作飞机实际的飞行路线,显然需要用到 GPS 提供的经纬度信息,而不能仅依靠首末段机场定位。gcmap 也支持输入自定义的经纬度,这就给我们制图提供了更大的创作空间。

采用 [N/S][数字1][W/E][数字2] 来定义一个经纬度点,按照机场间连接的方式来连接经纬度点。如 N46W85.5 表示北纬46度,西经85.5度的点。指令 N45W95-N40W80/N45W83,N35W75-N33W73-N32W71-N31W71.5 生成的图如下所示。这些自定义的经纬度都没有属性值,所以下图都没有文字标注。若 A-B-C-D 四点皆为自定义经纬度的话,gcmap仅显示首末两点。如果四点为机场代码的话,则会显示中间所有点。

可通过 [“备注名”][字号][字体][方位][+]@ [N/S][数字1][W/E][数字2] 的方式来定义某个自定位经纬度点的备注,如 “Brett”[email protected] 表示我们把位于北纬28.9度西经36.7度的点定义为了 Brett。如果去掉中间的加号,则仅生成不带符号的文字。“Brett”[email protected],LHR-N28.9W36.7-JFK 即表示伦敦 [LHR] 经过一个名叫Brett的某点至 JFK。

伦敦经 Brett 至 纽约

因为可以自定义经纬度,gcmap 的实际用途可以超出航线图的绘制范畴。根据美国飓风中心提供的数据,我们可以绘制出如下图所示的 2012 年大西洋飓风路径图。扎根 NYC 的朋友们还记得 2012 年那个水漫曼哈顿的飓风 Sandy 么?(以此类推,我们也可以借由 gcmap 制作中国高铁图,候鸟迁徙图等等。不过城市地铁图就算了,gcmap 放大程度有限,最大比例尺下一条地铁线的长度也不过几毫米)

我们可通过 [“备注名”][字号][字体][方位][+]@mid([航段]) 来确定某个航段的属性值。实际上该图集是找到该航段中间点进行标注而已,我们在此不再赘述。

限制制图区域

身边有很多朋友,一年大部分时间都在北美内部,或者在中国内部飞,仅乘坐屈指可数的几次洲际航线回国探亲,或者远出度长假。如果在一张图上完整表示其飞过的所有航段,那么稀少的洲际航段势必占用大部分图幅,密如蜘网的国内短途却局促在一隅而很难看清。为突出国内航段,又不完全忽略国际段,可将图幅限制于北美或东亚范畴,让国际航段仅延伸到图幅边缘。此功能通过指令 [o:noext] 来实现。但是区域限制指令仅对紧跟的那条路线生效,如果需要限制多条路线,则需要多次使用该指令。

同牧羊君一样 Base 西雅图的 Z11 去年乘坐阿拉斯加航空 [AS] 前往美国多地游玩,圣诞回国一次,去程直飞北京,返程从上海 [PVG] 直达西雅图。通过 sea-lax/slc/dtw/dfw/msy/fll/jfk/bos/ord/las/sfo/phx,o:noext,sea-pek/pvg 指令,其航线图幅限制在了北美区域,仅由两条向西北方向延伸到图幅边缘的红线表征圣诞回国的旅行。

z11的2018