OD流向图怎么画?ArcGIS参数如何设?

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

引言:很多同学在做交通出行、人口迁移、物流配送或通勤分析时,都会遇到“OD流向图怎么画?ArcGIS参数如何设?”这个问题。OD流向图看起来只是把起点和终点连成线,但真正做起来会涉及坐标字段、OD表结构、线类型、投影坐标系、权重字段和符号化参数,如果设置不对,很容易出现线不显示、方向错乱、距离不准或地图杂乱的问题。

本文以 ArcGIS Pro 的常见工作流为主,讲清楚 OD流向图怎么画,以及 ArcGIS参数如何设。你可以把它用于城市间人口流动、门店配送路线、居住地到工作地通勤、医院就诊来源、景区客源地分析等场景。

OD流向图怎么画 ArcGIS参数如何设 XY To Line流程示意图
OD流向图在 ArcGIS 中通常由 OD表、坐标字段、XY To Line 工具和线符号化四部分组成。

背景:OD流向图适合解决什么问题

OD 是 Origin-Destination 的缩写,表示“起点—终点”。OD流向图就是把每一条起点到终点的关系绘制成线,并用颜色、线宽、箭头或透明度表达流量大小和方向。

在 ArcGIS 中画 OD流向图,最常见的数据不是已有线图层,而是一张表。表中通常包含起点坐标、终点坐标和流量字段。例如:

字段名 含义 示例
Origin_ID 起点编号 A001
Dest_ID 终点编号 B023
Origin_X 起点经度或X坐标 116.391
Origin_Y 起点纬度或Y坐标 39.907
Dest_X 终点经度或X坐标 121.473
Dest_Y 终点纬度或Y坐标 31.230
Flow_Count 流量、人数、订单量或次数 3580

如果你的数据只有起点名称和终点名称,没有坐标,需要先通过行政区中心点、POI坐标、地址匹配或空间连接补齐坐标。没有起终点坐标,ArcGIS 无法直接生成空间线。

原理:OD流向图不是路径分析,而是起终点连线表达

制作 OD流向图前,需要先分清两个概念:OD直连流向图真实网络路径

  • OD直连流向图:用直线或大地测量线连接起点和终点,重点表达方向和流量关系。
  • 网络路径分析:沿道路、水系、管网等网络计算真实路径,重点表达实际通行路线。

本文讨论的是常规 OD流向图怎么画,也就是在 ArcGIS 中根据起点坐标和终点坐标生成连线。它适合宏观流向表达,不适合替代最短路径、导航路线或物流路径优化。

在 ArcGIS Pro 中,常用工具是 XY To Line。它会读取表中的起点X、起点Y、终点X、终点Y字段,然后生成线要素。关键参数包括输入表、输出要素类、起点坐标字段、终点坐标字段、线类型和坐标系。

步骤:ArcGIS OD流向图怎么画

步骤一:整理OD表字段

先把 OD 数据整理成一行一条流向记录。不要把起点和终点拆成两张无关联的点表,否则后面匹配会很麻烦。

推荐字段结构如下:

字段 是否必须 说明
Origin_X 必须 起点X坐标,地理坐标系下通常为经度
Origin_Y 必须 起点Y坐标,地理坐标系下通常为纬度
Dest_X 必须 终点X坐标,地理坐标系下通常为经度
Dest_Y 必须 终点Y坐标,地理坐标系下通常为纬度
Flow_Count 建议 用于线宽、颜色或分级显示
Origin_Name 建议 用于标注和检查
Dest_Name 建议 用于标注和检查

如果你的表格来自 Excel,建议先检查字段名是否包含空格、中文括号、特殊符号。ArcGIS 可以读取部分中文字段,但为了减少工具报错,坐标字段建议使用英文名称。

步骤二:把Excel或CSV添加到ArcGIS Pro

  1. 打开 ArcGIS Pro,新建工程。
  2. 在 Catalog 或 Map 视图中添加 Excel、CSV 或地理数据库表。
  3. 打开属性表,确认每一行是一条 OD 记录。
  4. 检查坐标字段是否为数值型,不要是文本型。
  5. 确认经纬度字段没有空值、逗号、单位文字或中文字符。

如果坐标字段是文本型,可以先在 Excel 中清洗,也可以在 ArcGIS 中新建 Double 类型字段,再用字段计算器转换。

步骤三:使用 XY To Line 生成OD线

在 ArcGIS Pro 中打开地理处理工具,搜索 XY To Line。这是画 OD流向图最直接的工具。

参数 推荐设置 说明
Input Table OD表 包含起点和终点坐标的表
Output Feature Class od_flow_line 输出到文件地理数据库更稳定
Start X Field Origin_X 起点X坐标
Start Y Field Origin_Y 起点Y坐标
End X Field Dest_X 终点X坐标
End Y Field Dest_Y 终点Y坐标
Line Type GEODESIC 或 PLANAR 跨区域建议 GEODESIC,小范围平面分析可用 PLANAR
Spatial Reference 与坐标字段一致 经纬度通常选择 GCS WGS 1984 或 CGCS2000
ID Field 可选 可选择流向编号字段,方便追踪记录

这里最容易设错的是 Spatial Reference。如果表中的坐标是经纬度,就不要随便选择投影坐标系;如果表中的坐标是米为单位的平面坐标,就不要选择 WGS 1984 经纬度坐标系。

步骤四:给OD线设置箭头方向

XY To Line 生成的线本身有起点和终点方向,但地图上默认不一定显示箭头。要让读者看出流向,需要设置线符号。

  1. 右键 OD线图层,选择 Symbology。
  2. 选择 Single Symbol 或 Graduated Symbols。
  3. 进入线符号设置,找到 Stroke 或 Line symbol layer。
  4. 添加或选择带箭头的线型。
  5. 将箭头放在线的末端,表示从 Origin 指向 Destination。

如果箭头方向反了,优先检查 XY To Line 中 Start X、Start Y 和 End X、End Y 是否填反。不要只在符号里反向箭头,因为这会掩盖数据逻辑错误。

步骤五:用Flow_Count设置线宽分级

OD流向图的重点不只是“有线”,还要能看出哪条流向更强。通常用 Flow_Count 字段控制线宽或颜色。

推荐做法:

  • 流量差异不大:使用线宽分级即可。
  • 流量差异很大:先对 Flow_Count 做对数转换,再符号化。
  • 线太密:只显示前 N 条流量最大的 OD 线。
  • 需要突出重点城市:对重点起点或终点做筛选显示。

在 ArcGIS Pro 中可以选择 Graduated Symbols,字段选择 Flow_Count,分类方法可先用 Natural Breaks。如果流量极端偏态,建议新建字段 log_flow,用字段计算器计算:

Log10($feature.Flow_Count + 1)

如果使用 ArcGIS Pro 的 Python 字段计算表达式,可根据字段计算器环境改写为:

math.log10(!Flow_Count! + 1)

这样可以避免少数超大流量线把其他线全部压得看不见。

步骤六:叠加底图和起终点点位

只显示 OD 线会比较抽象,建议同时叠加起点、终点或行政区边界。

  • 城市间流动:叠加省界、市界和城市中心点。
  • 通勤流向:叠加街道边界、居住区和就业中心。
  • 物流配送:叠加仓库、门店和道路骨架。
  • 跨国流动:使用世界边界和大地测量线。

如果线太多,底图应保持浅色,OD线使用较高对比度颜色,并适当设置透明度。

常见坑:ArcGIS参数如何设才不容易出错

坑一:经纬度字段填反

在中国常见经纬度中,经度一般在 70 到 140 之间,纬度一般在 15 到 55 之间。如果你把 X 和 Y 填反,OD线可能飞到地图外,或者集中到异常位置。

  • X 字段通常填经度。
  • Y 字段通常填纬度。
  • Start 表示起点,End 表示终点。

坑二:坐标系选错

ArcGIS参数如何设,最关键的就是坐标系。坐标系设错后,线仍可能生成,但位置会完全错误。

  • 坐标值像 116.391、39.907:通常是地理坐标,经纬度。
  • 坐标值像 438000、4421000:通常是投影坐标,单位为米。
  • GPS、互联网地图数据常见 WGS 1984、CGCS2000 或 GCJ-02,需要确认来源。

需要特别注意:高德、腾讯等互联网地图常用加密坐标 GCJ-02,ArcGIS 中没有简单等同于 WGS 84 的设置。如果和标准底图叠加出现几百米偏移,可能不是投影问题,而是坐标加密体系不同。

坑三:Line Type选择不合适

XY To Line 的 Line Type 常见有 PLANAR 和 GEODESIC。两者差异如下:

Line Type 适用场景 注意点
PLANAR 小范围、投影坐标系、城市尺度 按平面直线连接,适合局部制图
GEODESIC 跨省、跨国、全球尺度 按地球曲面最短路径表达,更适合经纬度数据
GREAT_CIRCLE 全球航线、长距离连接 效果类似大圆线,适合全球尺度表达

如果只是做一个城市内部OD流向图,使用合适的本地投影坐标系加 PLANAR 通常更直观。如果是全国人口迁移或国际航线,优先考虑 GEODESIC。

坑四:线太多导致地图不可读

OD流向图最常见的问题不是不会画,而是画出来像一团毛线。解决方法不是继续加颜色,而是减少信息噪声。

  • 按 Flow_Count 降序,只显示前 50、前 100 或前 500 条。
  • 按起点或终点筛选,只看某个城市的流入或流出。
  • 按行政区聚合,不要直接画每个点到每个点。
  • 使用透明度,让低流量线弱化。
  • 分面制图,按年份、类别或区域分别出图。

坑五:把OD流向图当成真实路线

OD线只是起点到终点的表达,不代表车辆真的沿这条直线走。如果你的研究问题是“最短路”“服务区”“配送路径优化”,应使用 Network Analyst 或道路网络分析,而不是简单 OD连线。

方法比较:ArcGIS中几种OD流向图做法

方法 适合场景 优点 限制
XY To Line 已有起终点坐标的OD表 最快、参数清晰、适合批量制图 不计算真实道路路径
起点终点点图层加连接线 点图层已存在,需要按ID匹配 便于保留点属性 前期表连接要求更高
Network Analyst OD Cost Matrix 需要道路网络距离或时间成本 可计算真实网络成本 需要网络数据和扩展许可
ArcPy批处理生成线 大量OD表、自动化出图 可重复、适合工程化流程 需要Python基础
QGIS Geometry by Expression 开源软件环境 无需商业软件 与ArcGIS工具参数不同

如果你的目标是快速回答“OD流向图怎么画”,优先使用 XY To Line。如果你的目标是计算真实出行成本,再考虑 Network Analyst。

检查清单:生成OD流向图前后必须核对

在正式出图前,建议按下面清单逐项检查。

  • OD表结构:是否一行代表一条起点到终点关系?
  • 坐标字段:Origin_X、Origin_Y、Dest_X、Dest_Y 是否为数值型?
  • X/Y顺序:X 是否为经度或横坐标,Y 是否为纬度或纵坐标?
  • 坐标系:XY To Line 中的 Spatial Reference 是否与坐标字段真实来源一致?
  • 线类型:城市尺度是否适合 PLANAR,跨区域是否适合 GEODESIC?
  • 方向:箭头是否从起点指向终点?
  • 权重字段:Flow_Count 是否存在空值、负值或异常极大值?
  • 符号化:线宽、颜色和透明度是否能表达流量差异?
  • 可读性:是否需要筛选Top N流向或按区域分图?
  • 解释边界:图上是否说明OD线不是实际道路路径?

FAQ:OD流向图怎么画的常见问题

1. ArcGIS没有坐标字段,只有起点城市和终点城市,能画OD流向图吗?

可以,但需要先给城市匹配坐标。常见方法是准备一张城市中心点表,包含城市名称、经度、纬度,然后分别按起点城市和终点城市做表连接,把起点坐标和终点坐标补到 OD表中。补齐后再使用 XY To Line。

2. OD流向图的ArcGIS参数如何设,PLANAR和GEODESIC选哪个?

小范围城市内部分析,且数据已经使用本地投影坐标系时,可以选 PLANAR。跨省、跨国或经纬度数据,建议选 GEODESIC。简单判断:距离越长、范围越大,越应该考虑 GEODESIC。

3. 为什么XY To Line运行成功但地图上看不到线?

常见原因有四个:坐标系设错、X/Y字段填反、坐标字段存在空值、地图缩放范围不在生成线的位置。可以右键输出图层选择 Zoom To Layer,查看线是否生成到异常位置。

4. OD流向图的线宽应该按什么字段设置?

通常按流量字段设置,例如人数、订单数、货运量、通勤次数或访问量。如果没有流量字段,只能表达“存在一条关系”,无法表达强弱。流量差异很大时,建议使用对数转换后的字段进行分级。

5. ArcGIS可以画弧线形式的OD流向图吗?

XY To Line 主要生成起终点连线,GEODESIC 在大范围地图上会呈现曲线效果。如果想要更明显的装饰性弧线,可能需要借助制图符号、曲线构造、ArcPy自定义生成贝塞尔曲线,或在 WebGIS 中用前端曲线渲染实现。

6. OD流向图可以表示真实道路行驶路线吗?

不建议。普通 OD流向图只表示起点到终点的空间关系,不表示真实道路路线。如果要计算真实道路行驶距离、时间或路径,应使用 ArcGIS Network Analyst、路径分析服务或道路网络数据。

结论:先保证参数正确,再追求制图美观

回到“OD流向图怎么画?ArcGIS参数如何设?”这个问题,核心流程并不复杂:先整理包含起点和终点坐标的 OD表,再用 XY To Line 生成线,最后按流量字段设置线宽、颜色和箭头。

真正决定结果质量的是参数细节:X/Y字段不能填反,坐标系必须与数据来源一致,Line Type 要匹配分析尺度,Flow_Count 要适合分级表达。只要这些基础环节正确,后面的符号化和版式优化才有意义。

如果你是第一次制作 OD流向图,建议先用 5 到 10 条样例数据测试 ArcGIS参数,确认位置、方向和线型都正确,再导入完整数据批量生成。这样可以避免在几千条流向线生成后才发现坐标或方向设置错误。