OD流向图怎么画?ArcGIS参数如何设?
引言:很多同学在做交通出行、人口迁移、物流配送或通勤分析时,都会遇到“OD流向图怎么画?ArcGIS参数如何设?”这个问题。OD流向图看起来只是把起点和终点连成线,但真正做起来会涉及坐标字段、OD表结构、线类型、投影坐标系、权重字段和符号化参数,如果设置不对,很容易出现线不显示、方向错乱、距离不准或地图杂乱的问题。
本文以 ArcGIS Pro 的常见工作流为主,讲清楚 OD流向图怎么画,以及 ArcGIS参数如何设。你可以把它用于城市间人口流动、门店配送路线、居住地到工作地通勤、医院就诊来源、景区客源地分析等场景。

背景: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
- 打开 ArcGIS Pro,新建工程。
- 在 Catalog 或 Map 视图中添加 Excel、CSV 或地理数据库表。
- 打开属性表,确认每一行是一条 OD 记录。
- 检查坐标字段是否为数值型,不要是文本型。
- 确认经纬度字段没有空值、逗号、单位文字或中文字符。
如果坐标字段是文本型,可以先在 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 生成的线本身有起点和终点方向,但地图上默认不一定显示箭头。要让读者看出流向,需要设置线符号。
- 右键 OD线图层,选择 Symbology。
- 选择 Single Symbol 或 Graduated Symbols。
- 进入线符号设置,找到 Stroke 或 Line symbol layer。
- 添加或选择带箭头的线型。
- 将箭头放在线的末端,表示从 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参数,确认位置、方向和线型都正确,再导入完整数据批量生成。这样可以避免在几千条流向线生成后才发现坐标或方向设置错误。