Author: 任畅

  • 观点:随意增大电子航图公布尺寸不可取

    本人认为应当考虑保持A5的航图设计尺寸,不应盲目采用A4幅面来设计、审核、发布航图资料产品。

  • ADS-B flight trajectory capture attempts

    title_zh: ADS-B航迹采集尝试 (English version below) 航班追踪是很好的公民科学项目,刚好也和我的研究专长兴趣非常相符。在本科毕设指导评审和自己研究立项申请中,我都很希望可以延续以往车辆和行人轨迹数据分析的研究,同时与所在单位的教学科研方向实质性地紧密结合。除去理论和方法研究层面的问题,最常遇到的问题要属研究区域选择了:公开数据集通常不能覆盖中国大陆地区——相比于维基和OSM大陆社群,火腿和飞友们的规则意识和社会责任感使得他们自觉不向海外传输和共享数据。研究海外区域的数据则会使得项目申请和学生答辩面临沉重致命的质疑。国内航班信息提供商缺乏方便直接的数据接口,而缺乏网页产品、主打移动应用的策略使得逆向工程难度倍增,更不用说潜在的伦理和法律风险。因而,自行采集数据成为了一条值得尝试的出路。 受到医学项目预实验范式的启发,过去一个月写项目申请期间我决定通过动手采集和观察数据寻找灵感。此前了解到用于收看电视广播的RTL2832U电路和R820T芯片是一种价格和性能都可接受又易于获取的软件无线电解决方案。而各大航班追踪网站都会同时建议搭配一个SBC以最小代价实时接收和共享数据,因而还购入了一款树莓派作为初始设备。当然,后期走通技术路线并对整套系统有基本了解之后,在笔记本上安装虚拟机的方式在不要求持续在线的场景中也完全可行且方便。 按照adsb.im网站提供的说明,我们分别在RPi和VirtualBox中烧录了带有ultrafeeder项目安装的Raspberry OS和DietPi系统镜像。这个项目由Github的sdr-enthusiasts组织维护,使用了德国爱好者wiedehopf改编的后端ADS-B解码工具readsb和前端ADS-B航迹可视化界面tar1090。这个feeder项目支持向诸多平台实时共享数据,同时支持不作任何共享以及在一个feeder实例下接入多个子feeder (称为Stage 2),满足私有数据保护和室内接收房间窗户单一面向性条件下多个天线数据的简单合并的需要。经过反复调整,在自家阳台上采用树莓派作为主机,放在另一侧窗口的旧笔记本上运行的虚拟机作为子节点,以及日常携带的工作笔记本上运行虚拟机作为在校测试的独立移动节点。截止目前,在自家两侧稳定采集将近两周,在广汉校区和天府校区测试采集各一次(共62061条记录),具体统计分析还有待进行。 粗略观察可见,广汉的训练航迹因为三教的遮挡有部分缺失,但双流北向离场倒是意料之外地好;福田能通过不同方向拼凑看到天府西跑道北向和北跑道东向离场、东西两条跑道北向进近略有缺失,机坪南端的滑行也采集到一些;高空部分在五凤溪处四通八达。 在实际调试过程中当然少不了各种问题。比如电视棒硬件实际上质量参差不齐,表现为完全收不到任何有效信号只有噪声,或者难以在指定频率持续稳定工作,似懂非懂地查阅一些资料后认为可能是tuner芯片失效,由于没有相关电路知识和工具,所以也没有拆机深究,而是只能退货重买碰运气。软件上问题虽然不多,但也值得注意。网络环境导致开源工具链中的Debian软件更新、Docker软件获取、Github软件获取较为痛苦,尤其是初始搭建点亮的过程,配置更换镜像源自是不在话下,但除了各种折腾之外采用一些非可靠可信或有登录限制的私人源引入了一些对本任务没有那么重要的供应链安全风险。另外目的不同也使得我们虽然不需要配置共享到平台的内容,但需要更改一条readsb的配置选项READSB_ENABLE_TRACES=true,可以在ultrafeeder网页管理界面右上角的Setup菜单Expert选项(http://rpi.local/expert)通过添加环境变量的方式处理。配置好后以gunzip压缩的json格式轨迹将按照ICAO24位地址16进制表示的末两位组织在默认/opt/adsb/config/ultrafeeder/globe_history目录下的traces文件夹。如果没有配置开启轨迹存盘,则该路径中只会保留用于简单回放和查看大致分布的heatmap文件夹内的ttf格式二进制存档,没有包含完整的信息,同时文件解析和格式也明确没有保障。 总之有了这些数据,以后研究和指导希望都会有更好的素材和选题。从这些数据样本出发先行开发测试算法,也为后期凭借可展示的初步结果寻求更权威完整的合作数据申请提供支撑。 English version (Partially ranslated by gemma2 via Ollama, adjusted and reviewed by myself with reference to deepseek-r1:14b via Ollama) Flight tracking is a very nice project for citizen science, which also aligns with my research expertise and interest. For undergraduate thesis…

  • 航行中相对位置设计与计算精度

    相对方位与距离是测量和领航中极为常用的位置描述格式。航行中对航迹的定义或障碍物的描述,经常涉及根据一个已知点及其相对方位和距离求另一个点坐标的计算。这时,已知点的位置往往是从公布的航行资料或测绘的成果表格中取得的经纬度(地理坐标)形式,而方位和距离则是来自VOR/DME导航设施(公布)或全站仪(实测)定义的局部平面坐标系下获取的。显然不能在经纬度上加上平面距离增量,而飞行程序设计实务中会用到一个手手相传的MFC三无exe工具来实现相关转换,背后原理与可靠性不得而知。 与之相关联的,是设计图件在AutoCAD (.dwg)与Google Earth (.kml)之间的转换。实务中,见到过一个名为acad2kml的AutoLISP插件,但转换往往只能是单向的,难以将kml转换和导入进AutoCAD。后者自带的地理位置功能在常用的版本中看起来只能以一个点为参照,将图纸映射到某个自定义的投影坐标系中的对应位置。 对于相对经纬度一定方位和距离的点的计算,考虑三种朴素的思路: 考虑AIP China(题外话,最近情报中心开放了AIP访问,可以成为一个公开的权威数据源)中的一个算例:南翔NDB(PK)位于虹桥ARP磁方位3度9630米处,同时也公布了精确到0.1分的经纬度,可以用来验证。尽管数据是公开的且加偏的,此处还是模糊处理不直接出现经纬度坐标点了。 解法一我的实际操作是用了epsg.io的坐标转换,外加自己手按计算器。 解法一变量 值(东) 值(北) 参考点投影坐标 341365.7316m 3452591.9855m 相对位置增量 -464.8273m 9618.7751m 相对位置投影坐标 340900.9042m 3462210.7606m 相对位置经纬增量 -0.006404° 0.086689° 相对位置误差 -0.08426′ 0.00133′ 解法二我的实际操作是用自己粗浅的球面三角现学现卖,推导了一下公式(三角函数和反函数都是度,非弧度): 解法二变量 值(东) 值(北) 相对位置经纬度增量 -0.004180° 0.086504° 相对位置误差 0.04918′ -0.00978′ 解法三采用pyproj.Geod.fwd实现,可以看到在东西方向上精度直接高了一个数量级,南北方向上也比球面优一些。 解法三变量 值(东) 值(北) 相对位置经纬度增量 -0.004882° 0.086754° 相对位置误差 0.00710′ 0.00526′ 需要注意的是,以上个例不见得具有代表性,比如纬度低、远离投影中央经线。同事,所谓误差是与AIP公布值的对比,而公布值本来就是有误差(舍入和人为)的,南翔这个误差(公布值与实务工具软件)在0.01′左右,是凑巧南翔台确实在接近0.1分的位置,让这个算例更能体现出各个思路的计算精度。也就是说,在AIP公布的0.1分的精度下,这三个思路基本都可以满足需要。从实际操作的方便程度而言,如果手工计算可以选球面正弦定理的方式,计算简明、精度适中;如果编程开发可以选Vincenty公式的有关实现,开箱即用、精度较高。

  • 在飞院获取全文文献

    之前所在的单位都是研究型学校,对电子文献的保障都相当丝滑。学校和图书馆刚一入学也都提示订阅费不菲,鼓励积极使用该项权益,并且积极搭建多种校外访问方式,通过在线文档和线下活动大力推广。当然上课和研究自然也有查阅文献的内在动力。而目前在飞院,作为教学应用型学校,订阅则有着相当的缺口,使用帮助文档也相对有限,但文献也还是可以获取到一些的。 基本概念 为了本科同学理解,先明确几个电子文献相关概念。按内容性质分,数据库分为全文和文摘数据库,全文数据库包含完整的文章,是本文关注的范围,也是大家通常需要的类型;而像SCI这样的数据库属于文摘数据库,里边只有标题、作者、来源、摘要、关键字这些基本信息,并没有文章的完整内容。文摘数据库的作用在于做文献计量和分析,评估文献和期刊的重要性及其与其他文献的印证关系,当然也可以用来检索。按访问方式分,可以通过校内直接访问、校外代理访问、身份认证访问,校内访问需要使用学校的网络提供的出口IP,出版商直接匹配订购时约定的IP段,一般是保障图书馆的网络或者机位访问的最基本方式;校外代理是通过学校在校内架设一个身份认证和中转服务器作为跳板,人员在校外访问时通过验证即可转发流量被出版商认为是在校内访问;身份认证访问是通过学校和出版商合作,由学校指定用户身份判定接口,用户无需经由学校中转,直接从出版商处获得内容。按文献类型来分,有期刊、图书、会议、学位论文、标准和其他类型,从可信度和使用率上以期刊为主,是本文主要关注的范围;国内的出版商大多是大而全的综合平台,各类文献都有提供。 访问方式 在飞院,广汉的办公区和部分家属区可以直接访问,估计天府的校内wifi应该可以保障直接访问。校外代理在早些年需要在控制面板中Internet选项中设置整个操作系统的代理服务器和过滤规则,或者通过定制的浏览器实现免设置访问,但现在网上办事大厅或者所谓信息门户这类集成校内网络服务的平台,可以直接通过点击相应链接使用。飞院目前大家用手机流量或者宿舍电信网登录教务或者缴费系统也是同样方式,即在学校主页(https://www.cafuc.edu.cn/)右上角点击网上办事大厅(https://portal.cafuc.edu.cn/),登录后选择应用中心,按部门筛选网络中心或教务处负责的服务或直接搜索,即可访问“中国知网”“维普科技期刊数据库”“万方数据资源”;近期更新投用的办事大厅手机端因为适配问题直接不允许访问可能存在新的潜在不便,有待改进。身份认证方式目前飞院的IT水平暂时还不支持,期待以后加入教育网高校身份认证联盟(https://www.carsi.edu.cn/)或者自行集成开发Shibboleth这些国际认证平台(https://www.shibboleth.net/)。 期刊出版商 常见的有Elsevier (ScienceDirect)、Springer、Wiley、Taylor & Francis、ACM、IEEE、AIAA、MDPI (不推荐)。本文假定读者已经确定了所需文献的必要信息,如作者、标题、刊名、页码等。根据期刊名或者网页信息,应该可以确定该刊物由哪个出版商出版。如果不确定,由于飞院图书馆目前仅提供纸本文献的目录服务,因此可以借助一些可以公开访问的、提供电子期刊导航或类似刊物目录功能的图书馆网站判断。例如,北大图书馆(https://lib.pku.edu.cn/)信息服务菜单中全部服务选项,点击后从列表找到“电子书刊检索”功能,然后点击标题栏的“电子期刊导航”或者在搜索框上方选择“仅期刊”;西安大略大学图书馆(https://www.lib.uwo.ca/)首页的Find板块中E-Journals选项。这些目录可以直接显示出版商名称或者提供到出版商的链接,进而找到所需文献的出版商。 英文期刊全文 学校订阅 通过出版商的网站,按照DOI号或者刊物、出版年份、卷号、期号、页码来获取全文,是最为直接的办法,前提是学校订阅了有关内容。目前飞院订阅的此类数据库有ACM和AIAA的大部分内容,Springer有零星订阅,MDPI (不推荐)为免费访问,其余均未订阅。具体订阅了哪些数据库,可以在图书馆首页(https://lib.cafuc.edu.cn/)的“资源中心”栏目下“外文资源”板块查看列表。 如果没有直接订阅原出版商,下一步的思路就要看是否订阅收录了该期刊的二道贩子数据库,如飞院目前订阅的EBSCO和ProQuest数据库,订阅情况和访问地址同样在上述列表中列出。由于EBSCO是公益二手平台,可能会受到一些时效性方面的限制,但是它定价实惠,有可能有所需的全文;PQ库主营业务是国外学位论文,兼有一些期刊,也是可以一试的方式。 与此同时,被飞院列入中文资源的“超星知识发现系统”(http://www.zhizhen.com/)实质上提供部分馆藏(即飞院订阅的)电子资源检索功能,尽管准确性可能有一些问题(显示订阅了全文但其实没有访问权限),也可以用来确认所需的文献是否在上述的ACM、AIAA、Springer、EBSCO、ProQuest等订阅范围之内。如果通过上述直接获取、二道贩子两条途径都发现学校订阅没有涵盖所需内容,这个超星系统还提供一个超级实用但似乎有些小众的文献全文获取方式,“全国图书馆参考咨询服务平台”的文献传递。通过以上各种方法都找不到全文的文献,这个系统会在“获取”处提供“文献传递”功能,按提示填写必要信息留下邮箱,通常半天内会得到全文。我试过几次都是中午或者下午提出请求,晚上六七点钟收到全文,如果设备同时有学习通的登陆状态还会另存到学习通网盘。这个传递平台似乎需要在校内直接访问才有权限,但其公益互助的免费特性要比真正使用传统付费的线下文献传递(如CASHL)显然有效实用得多。 作为Taylor & Francis旗下期刊的审稿人,我还会在接受审稿时获得一个月的免费访问权限,需要用审稿邮箱注册平台登录使用。不过这一条在时间和涵盖范围方面就显得不够稳定,也不适用于学生或非审稿人,只是对本人获取全文的一种途径的记录。 外部渠道 如果以上学校提供的订阅支持都无法获得所需文献,则需要通过学校之外的方式获取。一种合规方式是通过搜索学术引擎(如Google Scholar)搜索文章标题或DOI信息,看是否有免费版本散落在互联网的共享资源中,如个人网站、大学存档、预印本等。另一种类似的合规方式是联系作者索要,这包括给通讯作者发邮件以及类似于ResearchGate的学术社交平台索要。类似的方式还有,联系你认识的其他学校的朋友,请他们在本单位图书资源使用管理规定的框架内适量帮忙下载。 此外,合规如果走投无路,最后还是可以采用盗版的方式。一个重要且便捷的来源是由哈萨克斯坦人Elbakyan发起的Sci-hub项目(https://sci-hub.se/),直接在搜索框中输入论文的DOI号、出版商链接或者标题等信息即可,可能偶尔出现域名解析或者访问不稳定的情况,而且由于持续受到各大出版商的起诉,近几年的文献可能收录完整度不高。 中文全文 上文在讨论访问方式的时候,提到飞院订阅了知网、维普、万方的数据库,这些平台基本涵盖了大部分可能用到的中文文献全文资源,界面也基本符合大家使用习惯,直接使用即可。一个可以支持的倡议是抵制知网,即如果有多个可用的文献来源则优先使用其他平台,因为知网把公共资源整合起来连年涨价贩售导致高校图书馆叫苦不迭,以及试图通过caj格式等方法阻碍文献便捷使用、向收录学位论文作者不支付授权费用或者提供优惠券形式的补偿(后两项近年来有所改善)。有些向作者收取版面费的开源期刊也有自建的官网,收录过刊内容可能比这些大平台更及时完整。此外,学位论文如果没有在知网公开,通常可以在毕业院校图书馆自建的数据库内找到,如飞院图书馆首页资源中心栏目的“特色资源”板块在学校内网上提供飞院学位论文库。

  • 球面墨卡托在机场应用中的误差

    球面墨卡托(EPSG: 3857)随着瓦片地图的流行也许是当今网络电子地图中最为普遍采用的投影坐标系。众所周知,这种投影会把南北极点拉伸成一条与赤道等长的线,因而在高纬度区域对长度和面积的夸大都是相当可观的。不过在本人学习地图学以来的日常空间分析和地图制作中,很少会涉及需要考虑这一效应的时候。除了专门举例不同投影的形变特性的例子,印象中唯一感受到过的影响应用实例是全球道路网拓扑模式分析研究中,从一开始合作者提示注意投影,到后来自己对照组内地图数据和网络电子地图分析特定模式时发现有时很难对应二者的形态特征。近期,在试图将空间分析工具引入机场净空评估而准备课堂案例时,再次感受到了这个投影的显著不足。 跑道地理要素的制作 在航空领域,除了令人眼花缭乱的公制英制单位外,经纬度地理坐标与相对方位加距离的空间位置描述方式也时常混杂在一份文档中。在机场的数据库编码表页面中,可以找到进近航段编码中的飞越点,同时其名称中数字为50的整数倍,推测是跑道入口点,查阅航路点坐标表后展绘在参考底图上可以确认。从不同跑道方向的进近编码中可以获得跑道两个端点的平面地理坐标,进而可以通过导入点、点转线得到表示跑道的地理线要素。当然还可以进一步查阅细则中跑道物理特征表中的入口标高,构造三维点线要素。 量测与对比 得到跑道线要素后,可以在属性表中计算其长度,由于在参考底图默认的EPSG: 3857下,默认计算的是这个坐标系下的平面距离。这个距离算出来与细则中的跑道长度完全是天差地别,令人惊讶。武汉天河两条实际长3400米和3600米的跑道,在球面墨卡托投影坐标系中算得长度3965米和4200米,这是完全不能接受的结果。不过用量测工具的测地线模式可以手动测得基本准确的长度。 启示 这对于航空领域WGS84应用场景中小范围距离计算有巨大的警示作用。在机场管理和资料填报中,经常有以跑道(入口、中心线等)作为参考的相对位置描述。如果在此次经历之前,我肯定会选择在投影坐标系里计算这些相对位置点的平面投影坐标,然后再转换回EPSG: 4326地理坐标,并认为这个计算误差不会很大、可以接受。如果发现偏大,顶多会从EPSG: 3857转为采用3度带的UTM或者GK投影,放弃逃避选择投影带的问题来提高精度,但目前看来这也许还是会有难以接受的误差。所以有空可以实测一下看到底有多大效果提升,或者说球面墨卡托有多离谱。 这次经历还有个令人不安的点在于,如果换成UTM或者GK仍然误差很大,那甚至还需要去查找测地线距离反算地理坐标的公式,这个东西说实话这么多年从来没见过或者想到有用过,如果真的有那就很好了。 近期和机场情报一线交流时了解到,某次重新测绘后,一个一直以来认为对飞行构成影响的障碍物,按新数据评估后变为不影响,令人感到困惑。由于缺少必要的验证细节,对于这个个案我无从判断,但是这种想当然的转换成为了一种可能的解释。

  • 用代码绘制非精密直线进近起始段保护区

    之前,我已经建立了一些基本的Python代码架构,并实现了最后进近航段的保护区主区和副区梯形轮廓的坐标串和绘图输出。final_protect_area(x_faf, final_leg)函数可以通过输入FAF点(“最后进近定位点”,即最后航段的起点)坐标和最后航段结构体(通过原生的namedtuple实现)来返回以多边形几何表示的最后段主区和副区。航段结构体包含提供引导的电台、航段长度及单位、航迹方向角,电台结构体又包含了点几何和类型。那么仿照这个例子,本次的起始进近保护区函数应该接受的输入则是该航段起止点(起始进近定位点IAF、中间进近定位点IF)的坐标和起始航段的信息,而返回的结果则同样是主副区的多边形几何。 以上接口定义方面看起来没有问题,接下来转入实现。要想仿照最后进近的编程模式,就要先回顾其实现的思路。最后航段必须有一个导航台提供引导,其保护区形状是一个等腰梯形。这个梯形可以理解为航径线的一个宽度(半径)不断变小的缓冲区,因此其几何由上底、下底、高来确定,而在航空交通中,很多梯形的形状是通过一条底边的长和腰与高的夹角(“扩张角”,或者其正切值,即宽度变化率,“扩张率”)给出。因此,这个图形的生成主要就是根据导航台的类型和位置、来确定这个梯形的底边长和宽度变化率。在此基础上,根据起点位置和航段长度截取出梯形在航段范围内的部分。 由于飞行程序设计通常在以跑道入口中点为原点的平面直角坐标系中进行,而本次最后段的航迹就是该坐标系X轴的负方向,所以梯形顶点Y坐标实际上就是梯形在起止点处两腰之间宽度的一半。由此思路,之前的实现编写了一个计算梯形宽度的函数生成器width_gen(facility, phase, unit=’km’),通过输入的导航台位置和类型信息,查询相应导航台的性能参数(即梯形底边长和扩张角),返回一个可以根据到导航台纵向(飞行方向)距离计算宽度的函数。这个思路由于将太多因素耦合在一起,对起始航段相对复杂情形的实现带来了很多阻碍,最终放弃了延续这个思路进行开发。 起始航段的尝试与思考 正常情况下,起始航段是一个半径为5海里的缓冲区,即一个以预定路线为中心的矩形。但是导航台的位置和航段的长度可能引入缩减和扩张两类不互斥的特殊情况。缩减的情况是,如果起始段终点(IF)处设置了一个导航台,则此处的缓冲半径(宽度)相应减小,再逆飞行方向线性扩张到正常宽度。扩张的情况是,如果起始段起点(IAF)距提供引导的导航台太远,则超过一定距离后要从正常宽度的基础上按参数扩张。 模仿思路的误区 在实现中,模仿最后段半宽计算思路面临一个巨大的不确定因素,即提供引导的导航台是否在IF处。这一点似乎牵涉到扩张情形的距离判定:如果在,则到电台的距离和航段中的相对位置是相等的;如果不在,到电台的距离与在航段中的相对位置是不同的。受最后航段等腰梯形到底边距离与宽度关系这个思路的影响,此处很容易陷入混乱。要做到一个同样的保护区宽度函数生成器,这个生成的函数的参数就要在距底边(电台)长度和距航段终止点(或者跑道入口)长度之间作出明确和转换,而这又取决于导航台与航段的相对位置。而这时,只能回到原点重新设计这个函数。 实现初期还因为理论知识不熟悉遇到一个相关误区,即试图考虑两个导航台的情况。诚然,最后航段必须有一个导航台,但如果IF是导航台,起始航段则只会跟它有关。虽然这时确实有两个导航台存在,但在起始航段保护区绘制中仍然不需要考虑两个导航台的情形,缩减和扩张都以IF处的台为基础。 工程规范的梳理 首先,两种特殊情况是可能同时存在的,这就至少有四种可能:正常(既没有缩减、也没有扩张)、只有缩减、只有扩张、既有缩减也有扩张。但是,只有缩减的情况还可以细分,因为按规定参数扩张到正常宽度是需要一定距离的,实际上航段的长度并非一定足够完成这个动作。因此,只有缩减又分为了只有缩减且长度足够恢复正常、只有缩减但长度不足以恢复正常。这五种情况对应的几何形状是不同的,正常情况为矩形,缩减够长是矩形和IF附近梯形的拼接,缩减过短是只有一个梯形,只有扩张是IAF附近梯形和矩形的拼接,都有是IAF附近梯形、矩形、IF附近梯形三者的拼接。 起始段实现思路与过程 抛弃了半宽计算的思路,保护区生成本质上是确定多边形区域顶点坐标。起始段的多边形相较于最后段,其难点在于多边形结构不确定,进而顶点数量和位置不确定。当然,分别为五种情况实现一个判定函数和一个顶点坐标计算函数肯定是可行的,只是冗余太多,容易在调试修改中造成逻辑不一致或者重复计算等情况。而要写成一个流程,潜在的难点有两处:在什么地方按什么条件设置分支;如何处理变长坐标串。 分支判定与流程设计 根据上文的梳理,可以按有无缩减、有无扩张分为四种,再按缩减是否恢复再将第二种分为两种。有无缩减可以通过比较导航台位置和IF位置判定,有无扩张则可以通过计算导航台位置和IAF位置之间的距离、再与规定的阈值比较判定。缩减是否恢复可以通过比较航段长度(或IAF和IF间距)和规定的阈值判定。 变长的顶点坐标串则可以通过向一个列表中依次加入元素实现。而且,由于图形的对称性,只需要加入一侧的点,再逆序加入其相反数即可。所以,最好能按合理的顺序进行上述判定,以便在完成判定后能够按正确的顺序追加顶点。从IF点处开始,逆进近方向,保护区外轮廓第一个顶点的X坐标是IF的X坐标,Y坐标则依赖于是否缩减。如果缩减,第二个可能的顶点是缩减后恢复正常的点,如果缩减距离过近强制恢复,这个点则是这半边的最后一点(需结束后续判定);如果是缩减后完成恢复,则其X坐标需要计算(也可以是规定的阈值,考虑到规定值舍入误差的存在,此处取计算所得的精确点)。第三个可能的顶点是正常宽度的终点,其Y坐标为规定的标准值,X坐标取决于是否扩张,若无扩张,即为IAF的X坐标(完成判定);若有扩张,则需要计算(同上,不考虑舍入误差可直接采用规定的阈值)。同样,在扩张的情况下,还存在第四个可能的顶点,即扩张的IAF,其Y坐标需要计算。 后处理与测试收尾 构建好的顶点坐标串,生成多边形几何只需用到原生的集合操作工具map(映射,用于取相反数)、reverse(逆序),以及基本的列表操作。最后不要忘记的一点是,重复首点以完成闭合。由于这个功能较为常用,同时也适用于中点连中点作主副区分界线的场景,因此将其封装为make_buf_geom_from_hw(locs, hwidths, primary)函数供重复调用。 测试也不能少。有了上述五类情形的分析,自然就可以设计每种情形的测试用例。在编写和运行测试的过程中,还发现了两处小问题,其中一个可以直接解决、另一个有待后续完善。直接解决的是,发现既有缩减又有扩张的情况下,扩张开始位置与规定阈值相关过大、非常明显。如图,设置的NDB电台位于跑道入口外24海里,按ICAO Doc 8168 Vol 2 Part I Section 4 Chapter 3 Appendix B 第4页图I-4-3-App B-4-3 IAF距NDB超过25.5公里(13.8海里)的情况,NDB缩减恢复正常的距离是13.8海里,因而测试用例中的位置应该是跑道入口外37.8海里,但图示结果明显超过了40海里。经检查,原来是配置文件中输入的起始宽及扩张角规定值将两种电台搞反了,纠正后即可恢复正常。 测试中发现的另一个问题是,如果IF距离跑道入口过远且无导航台,仅扩张的情况下梯形与矩形的拼接体出现异常形状。如图测试值为VOR台设在入口内1海里,IF设在入口前40海里,此时中间加最后航段的长度显然超过了规定的最大值15+10=25海里,而本次编写的程序未验证这一基本设计规则。当然,这个验证也不该是绘制保护区时要考虑的事情,因此留待以后处理。

  • 纸笔绘航路图的投影问题

    本月第一轮讲授航图实践课程。虽说名称叫实践,但以往的执行以纸笔绘图练习为主。完成了障碍物A型图、精密进近地形图之后,隐约感觉大家上路之后进度可能很快,于是在航路图这节打算上点强度:认认真真地把经纬度投影出来做航路图的练习。对于非测绘或者地理科班的学生而言,地图投影可能一直以来都是听个概念,很少动手实际体验这个过程——即使是地图学专业,我记忆里似乎也少有手工展绘坐标点的经历,只要在软件或者代码里设置好转出转入的坐标系也就够用了。 问题产生:投影坐标轴/顺序定义 这节课的练习里要绘制一块2°×2°的航路图局部,首先面临的一个问题就是图廓线的绘制。无论选择什么投影,这个球面上的整齐区域对应的平面图廓一定不应该是个正方形——虽然对于没有制图基础的人来说正方形是最符合直觉的。这时候,就需要根据制图区域的四至范围计算图廓四个角点的投影坐标。甚至可以更粗略地,计算左下角点和右上角点的坐标来确定一个矩形框作为图廓。 方便易懂的epsg.io网站是我手动转换坐标时的首选工具。利用该网站,可以把WGS 84 (EPSG:4326)的坐标转换为投影坐标。这里值得考虑的投影有Lambert、UTM、Gauss-Krüger。兰伯特因为不同地区的中央经线和标准纬线不同,在众多搜索结果中不好找合适的,就没有在课堂上使用。这里先把转换工具支持的ESRI:102012 (WGS 1984 Lambert Asia)结果在表格最后列出供对比。UTM和GK的选择只需要看经度范围,简单易行,此处列出111°中央经线六度带的投影WGS 84 / UTM 49N (EPSG:32649) CGCS2000 / GK 19 (EPSG:4497)。 坐标系 左下 22N 110E 右上 24N 112E 左上 右下 EPSG:4497 19396734, 2434138 19601755, 2655649 19398244, 2655649 19603265, 2434138 EPSG:32649 396775, 2433164 601714, 2654587 398285, 2654587 603224, 2433164 ESRI:102012 539685, 2819337 734587, 3065085 525045, 3049050 755070,…

  • 航路点数据整理

    三月份完成基金申请之后,顺势指导整理了VHHK和CZYZ的航路点数据。来源是AIP HK (ENR 4.4)和CFS (Terminal & En-Route Data, Part C, Planning)。 四月份航路数据整理进度不彰,顺带聊聊加国的AIP。本次数据来源的CFS (Canadian Flight Supplement),封面上标明其属于AIP Canada (ICAO) Part 3 – Aerodromes (AD),这一部分的主要内容是机场概况(Aerodrome/Facility Directory),包括坐标、跑道、服务、灯光、通信频率、导航设施等信息和一幅简图。电子版PDF在线分省销售,单买一期安省价格C$16.5,但不管购买哪个省,都会附带全国的航路部分(General Pages),包含报告点和航路航线。奇怪的是,CAC (Canadian Airport Charts)是以全国一个PDF形式免费提供的,包含了中小机场的跑滑结构、大机场的滑行路线/机位等图,并没有AIP或ICAO的标识。 这次一并采购但暂时没有用上的是CAP (Canadian Air Pilot)的仪表程序(Instrument Procedure)篇,根据封面标注,它也属于AIP AD部分,包含了进近/进离场程序和机场图。最少的小机场有两个跑道端的进近图和机场图,而多伦多/皮尔逊的目录足足4页、航图超过200页。分省单期售价C$16。本次还有一份暂时没有用上的免费资料是DAH (Designated Airspace Handbook),它不属于AIP,而是由交通部以TP 1820的文号发布,含有导航台位置、定位点位置、飞行情报区/管制区/终端区等空域边界、低空航路航线、限制性空域等信息。 其实加国的AIP结构也是符合ICAO规定的总则、航路、机场三个部分的,只是关键信息处就会放上联系方式或者购买途径,而不是直接提供。除了上述提到的图之外,航路图也要单买,障碍物A型图需要联系(定制?),精密进近地形图不提供。

  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!