航线 OD 图制作教程

简介: 航线 OD 图制作教程

大家好,我是南南,这次教大家制作航线 OD 图


本文需要的数据包括机场及航班的数据,数据下载链接如下:

机场信息数据(airports):


http://datasets.flowingdata.com/tuts/maparcs/airports.csv

航班信息数据(flights):


http://datasets.flowingdata.com/tuts/maparcs/flights.csv

1

数据预处理

在获取到数据后需要对其进行整理,提取出各航线起点及终点对应的经纬度坐标。这部分操作可通过编写 Python 代码完成,示例代码如下:


# 导入所需模块
import pandas as pd
import openpyxl
# 获取机场及航班数据
airports = pd.read_csv("data/airports.csv")
flights = pd.read_csv("data/flights.csv")
# 由于数据量较大,只选取airline列值为"AA"的航班数据
fsub = flights[flights["airline"] == "AA"]
# 重置航班数据表的行索引,使其从零开始顺序排序,以便于后续数据处理
# 代码参考:https://blog.csdn.net/weixin_51098806/article/details/115265573
fsub = fsub.reset_index(drop=True)
air12_id_list = list() # 起始点列表,数据格式:"起点 - 终点"
air1_lon_list, air1_lat_list = list(), list() # 起点经纬度
air2_lon_list, air2_lat_list = list(), list() # 终点经纬度
# 对航班数据进行迭代,以提取各航班的起点与终点坐标
for i in range(len(fsub)):
    fsub_i = fsub.loc[i]  # 获取航班表里的第i行数据
    # 获取航班起点及终点的机场数据
    air1 = airports[airports["iata"] == fsub_i["airport1"]]
    air2 = airports[airports["iata"] == fsub_i["airport2"]]
    # 将获取到的机场数据导入对应列表中
    air1_id, air2_id = fsub_i["airport1"], fsub_i["airport2"] 
    air12_id_list.append(f"{air1_id} - {air2_id}")
    air1_lon_list.append(float(air1["long"]))
    air1_lat_list.append(float(air1["lat"]))
    air2_lon_list.append(float(air2["long"]))
    air2_lat_list.append(float(air2["lat"]))
# 将上方的列表合并后导出为Excel格式
data = {"air12_id": air12_id_list, "air1_lon": air1_lon_list, "air1_lat": air1_lat_list,
        "air2_lon": air2_lon_list, "air2_lat": air2_lat_list}
df = pd.DataFrame(data)
# 输出Excel数据
# 输出时须确保输出路径准确无误,如果输出到了一个不存在的文件夹,运行时就会出现报错
# 如果输出数据表本就存在于输出文件夹中,则会直接覆盖源文件,但覆盖过程需要源文件保持关闭状态
df.to_excel("data/data_AA.xlsx")
print("输出成功!")

整理后的部分Excel表如下图所示:

注:输出表格的字体、行高及列宽等格式有所调整。

2

地图制图

导入数据

以世界陆地数据作为底图。

由于先前整理输出的是 xlsx 格式表格,无法直接被 ArcGIS 读取,故需将其转换为 xls 格式后再导入 ArcGIS 中或者通过 ArcGIS 的【Excel 转表】工具将其转换为 ArcGIS 可正常读取的表格文件。

注:通过【Excel 转表】工具转换时建议将结果表保存到地理数据库中,工具参数设置如下图所示:

XY 转线

通过 ArcGIS 的【XY 转线】工具基于起点及终点的 XY 值生成航线数据,参数设置如下图所示:

生成的航线图如下图所示:

地图修饰

可看出这些航线均位于美国及夏威夷等地,在此之后还可以通过数据表右键菜单中的【显示 XY 数据】(Display XY Data)展示起点及终点的位置。注意此时生成的位置点数据仅为临时文件,如需永久保存这些位置点还需另外将数据点导出为矢量点数据。对所有数据进行符号化后结果如下图所示:

在布局视图中调整页面大小及方向,添加指北针、比例尺等地图布局要素,也可以适当调整地图的底色及投影方式等内容,在所有参数设置完成后导出地图,结果如下图所示:

4

数据分享

百度网盘链接:



链接:https://pan.baidu.com/s/1r410-IlTUB64X5zi9DLuKQ提取码:ggua
目录
相关文章
|
7月前
|
并行计算 数据可视化 算法
CMplot & rMVP | 全基因组曼哈顿图和QQ图轻松可视化!
`CMplot`和`rMVP`是R语言中的两个包,用于全基因组关联分析(GWAS)的数据可视化。`CMplot`专注于曼哈顿图和QQ图的绘制,支持多种图表类型,如常见的SNP密度图、环状曼哈顿图、矩阵图、单条染色体图和多重曼哈顿图等。`rMVP`不仅包含了`CMplot`的功能,还支持更复杂的GWAS方法,如线性/混合线性模型和基因组选择算法,优化了内存管理和计算效率,特别适合大规模数据集。此外,它还提供PCA图和柱状图。两者都提供了丰富的参数定制图表。
409 1
CMplot & rMVP | 全基因组曼哈顿图和QQ图轻松可视化!
|
数据可视化 Go
一行代码绘制高分SCI火山图
经过一段时间的文献阅读和资料查询,终于找到了一个好用而且简单的包——ggVolcano, 它是一个基于R语言和ggplot2绘图包开发的生物信息学数据可视化工具。它可以用于绘制火山图(Volcano plot),帮助研究者分析高通量实验数据,如基因表达谱或蛋白质组学数据,以识别差异表达或差异富集的基因或蛋白质。
410 0
|
存储 C++ Windows
眼前一亮!2款免费手绘风流程图绘制工具
“这种风格的流程图好漂亮啊,请问是用什么工具画的啊?”
眼前一亮!2款免费手绘风流程图绘制工具
基于Bokeh库,手把手教你制作子弹图和瀑布图!
基于Bokeh库,手把手教你制作子弹图和瀑布图!
基于Bokeh库,手把手教你制作子弹图和瀑布图!
|
存储 定位技术
漫画:什么是 “图”?(修订版)
微信中,许许多多的用户组成了一个多对多的朋友关系网,这个关系网就是数据结构当中的图(Graph)。
168 0
漫画:什么是 “图”?(修订版)
|
数据可视化 图形学 Android开发
朋友约我看水,我反手用可视化搞出水面倒影(Shader Graph)
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
1551 0
|
数据可视化 前端开发 IDE
纯文本输入,就能绘制精美数学图表:CMU绘图工具Penrose登GitHub热榜 | SIGGRAPH
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 画数学插图令人头秃? 现在,CMU的研究人员们开发出了一款实用工具Penrose: 以纯文本的方式输入,根据语言描述,就能自动生成数学图表。
|
应用服务中间件 nginx Linux
【裸眼3D图】自制图1
 你能看到一个“秋”字吗
1497 0