ArcGIS 航线 OD 图制作教程

打印 上一主题 下一主题

主题 989|帖子 989|积分 2967

今天我将和大家分享一下通过 ArcGIS 制作航线 OD 图的方法,文章内容包括数据预处理、地图制图及资源分享三部分,所需数据包括 机场数据航班数据
数据预处理

在获取到数据后需要对其进行整理,提取出各航线起点及终点对应的经纬度坐标。这部分操作可通过编写 Python 代码完成,示例代码如下:
点击查看代码
  1. # 导入所需模块
  2. import pandas as pd
  3. import openpyxl
  4. # 获取机场及航班数据
  5. airports = pd.read_csv("data/airports.csv")
  6. flights = pd.read_csv("data/flights.csv")
  7. # 由于数据量较大,只选取airline列值为"AA"的航班数据
  8. fsub = flights[flights["airline"] == "AA"]
  9. # 重置航班数据表的行索引,使其从零开始顺序排序,以便于后续数据处理
  10. # 代码参考:https://blog.csdn.net/weixin_51098806/article/details/115265573
  11. fsub = fsub.reset_index(drop=True)
  12. air12_id_list = list() # 起始点列表,数据格式:"起点 - 终点"
  13. air1_lon_list, air1_lat_list = list(), list() # 起点经纬度
  14. air2_lon_list, air2_lat_list = list(), list() # 终点经纬度
  15. # 对航班数据进行迭代,以提取各航班的起点与终点坐标
  16. for i in range(len(fsub)):
  17.     fsub_i = fsub.loc[i]  # 获取航班表里的第i行数据
  18.     # 获取航班起点及终点的机场数据
  19.     air1 = airports[airports["iata"] == fsub_i["airport1"]]
  20.     air2 = airports[airports["iata"] == fsub_i["airport2"]]
  21.     # 将获取到的机场数据导入对应列表中
  22.     air1_id, air2_id = fsub_i["airport1"], fsub_i["airport2"]
  23.     air12_id_list.append(f"{air1_id} - {air2_id}")
  24.     air1_lon_list.append(float(air1["long"]))
  25.     air1_lat_list.append(float(air1["lat"]))
  26.     air2_lon_list.append(float(air2["long"]))
  27.     air2_lat_list.append(float(air2["lat"]))
  28. # 将上方的列表合并后导出为Excel格式
  29. data = {"air12_id": air12_id_list, "air1_lon": air1_lon_list, "air1_lat": air1_lat_list,
  30.         "air2_lon": air2_lon_list, "air2_lat": air2_lat_list}
  31. df = pd.DataFrame(data)
  32. # 输出Excel数据
  33. # 输出时须确保输出路径准确无误,如果输出到了一个不存在的文件夹,运行时就会出现报错
  34. # 如果输出数据表本就存在于输出文件夹中,则会直接覆盖源文件,但覆盖过程需要源文件保持关闭状态
  35. df.to_excel("data/data_AA.xlsx")
  36. print("输出成功!")
复制代码
整理后的部分 Excel 表如下图所示:

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

2.1 导入数据

以世界陆地数据作为底图。
由于先前整理输出的是 xlsx 格式表格,无法直接被 ArcGIS 读取,故需将其转换为 xls 格式后再导入 ArcGIS 中或者通过 ArcGIS 的【Excel 转表】(ArcToolbox:Conversion Tools/Excel/Excel to Table)工具将其转换为 ArcGIS 可正常读取的表格文件。
注:通过【Excel 转表】工具转换时建议将结果表保存到地理数据库中,工具参数设置如下图所示:

2.2 XY 转线

通过 ArcGIS 的【XY 转线】(ArcToolbox:Data Management Tools/Features/XY to Line)工具基于起点及终点的 XY 值生成航线数据,参数设置如下图所示:

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

2.3 地图修饰

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

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

3 资源分享

百度网盘链接:
链接:https://pan.baidu.com/s/1r410-IlTUB64X5zi9DLuKQ
提取码:ggua
注:分享的压缩包里包含本文相关的所有数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

悠扬随风

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表