ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ArcGIS中OD图与放射状流向图的制作流程与实用技巧

ArcGIS中OD图与放射状流向图的制作流程与实用技巧 1. 为什么“点对点的线”比任何柱状图都更有说服力做区域分析、交通规划或者商业选址的人一定有过这种体会数据表格里明明写着A区到B区有多少人流量、C镇到D镇有多少吨货但汇报的时候把Excel一贴领导看了也就看了很难留下直观印象。我第一次被要求“把这两百多个区县之间的联系画成一张图”时第一反应是愣住——这不就是画线吗ArcGIS里把点连成线还不简单结果真上手才发现OD图这件事难点根本不在“画线”这个动作上而在数据的组织方式、坐标的处理逻辑以及最后成图的信息层级是否清晰。OD图全称是Origin-Destination Map起点到终点的连线图。它表达的核心内容是“从哪里到哪里有多少量”。放射状流向图则是OD图的一个特化场景通常选定一个中心点比如某个核心城市、某个物流枢纽把它与周边所有目标点之间的连线画出来线越粗代表流量越大、关系越紧密。这两类图在ArcGIS里的底层逻辑是完全一致的差别只在数据准备和符号化处理上。如果你也在做类似的工作不论是通勤分析、货流分析还是连锁门店的客群来源分析这篇文章里讲的这套流程都能直接套用。我会从数据表格怎么摆、坐标系怎么选到工具在哪、参数怎么填再到最常见的出错点完整过一遍。用的是ArcGIS 10.2到10.8都能跑通的办法ArcGIS Pro的操作路径我也会在对应位置点一句。2. 做图前必须先想清楚的三件事坐标系、数据表格和底图很多教程上来就让你打开ArcToolbox找工具但根据我的经验OD图做出来“线跑到非洲去了”或者“连出来的线全是乱窜的折线”九成问题出在准备阶段。这里我按踩坑概率从高到低排序先说最关键的。2.1 坐标系一错全错的隐形炸弹画OD线的本质是在平面上计算两个点之间的直线路径。这里的关键是“平面”两个字。如果你的原始数据是经纬度GCS_WGS_1984也就是常见的WGS84地理坐标系而你的数据框或底图用的是投影坐标系比如Albers等积投影、UTM投影那么ArcGIS在动态投影时画出来的直线会是一条看起来弯曲的弧线——因为地理坐标下的“直线”在投影平面上本来就不该是直的。更严重的错误是某些工具尤其是老版本的XY转线工具对输入数据的坐标系定义不敏感它读取的是“数值”而不是“地理位置”。如果图层没有正确声明坐标系或者你表格里的XY坐标本身是投影坐标但图层被标成了经纬度出来的结果就会完全错位。我的建议是在动手做OD图之前先统一三处坐标系。检查位置必须一致的内容常见错误原始点图层的坐标系起点表和终点表都要有正确的坐标系定义从Excel导入XY后忘了定义投影被默认为GCS_WGS_1984数据框坐标系右键图层属性坐标系设置为你期望的出图投影数据框默认第一个加载图层的坐标系容易被带偏目标底图坐标系在线底图或自己裁剪的影像图的坐标系用在线地图时底图是Web Mercator而你的数据是WGS84需要确认动态投影是否能接受我个人做区域间OD图比较推荐在出图阶段用Albers等积圆锥投影或者根据区域所在的经度带选一个合适的UTM分带。理由很简单OD线的粗细代表数量大小如果用了等角或等距投影在高纬度地区面积会被放大视觉上会误导读者对“关系密度”的判断。等积投影下同样面积的区域在图上的大小是一致的流量密度的比较才公平。2.2 数据表格OD矩阵到底该长什么样OD图的数据源通常不是空间数据而是一张普通的Excel表或者CSV表。这张表有两种常见形态第一种是“长表”每一行代表一条OD关系。字段至少要有起点ID、起点X坐标、起点Y坐标、终点ID、终点X坐标、终点Y坐标、流量值。OriginIDOriginXOriginYDestIDDestXDestYFlowA001116.3939.90B001121.4731.231250A001116.3939.90C001113.2623.13860第二种是“矩阵表”行是起点列是终点交叉单元格是流量值。这种表做热力图方便但做OD图之前必须转成第一种长表格式。转换方法很多最省事的办法是在Excel里用Power Query或者VBA写个小循环把矩阵拍平。我不会推荐用ArcGIS自带工具去转因为这种数据整理活儿Excel处理起来效率高得多。这里有一个很多教程没提的细节如果起点和终点是同一个要素类比如都是“区县行政中心”点文件你不需要复制出两套XY坐标只需要表格里分别存“起点区县编码”和“终点区县编码”然后在ArcGIS里通过属性连接把坐标带过来就行。但如果你不太熟属性连接或者数据量不大直接在Excel里把XY作为数值列一起管理是最不容易出错的做法。手头没有XY坐标怎么办如果你的起终点是面文件或者点文件可以先在ArcGIS里用“添加几何属性”Add Geometry Attributes工具一键把每个要素的质心X、质心Y导出到属性表再通过表格连接合并到OD表里。2.3 底图和点图层别等线画完了才发现底图不对底图的选择决定了OD图的表达语境。一张纯行政边界图上的OD线适合表达区域间的宏观联系一张带道路网的底图适合做交通可达性分析一张夜间灯光影像图适合做经济关联度可视化。选底图的原则只有一条底图的视觉密度不能高于OD线本身。如果底图要素太密比如全要素地形图加地名注记再叠上几百条OD线出来的图基本就是一团乱麻信息层级完全丢失。我自己常用的组合是细线行政边界县级即可 淡色河流湖泊 半透明的OD线。如果底图是遥感影像会把影像透明度调到60%以上只留一个淡淡的地理轮廓确保线是绝对主角。3. 生成OD链接线的核心操作从属性表到矢量线的三条路数据准备完毕正式进入生成环节。ArcGIS里把点对连线做成真正的线要素常见的有三条技术路线XY转线工具、表转线工具、以及属性连接后用“点转线”的替代方案。三者的适用范围和操作复杂度不一样我按推荐的优先顺序来讲。3.1 路线一XY To Line工具最稳妥的通用方案这个工具在ArcToolbox里的位置是Data Management Tools → Features → XY To Line。双击打开英文版是“XY To Line”中文版叫“XY转线”。界面里需要填的关键参数如下Table你的OD长表Excel里Sheet名要设置好最好用xlsxArcGIS 10.2及以上版本支持直接读xlsx不需要转dbfStart X Field起点经度/投影X列Start Y Field起点纬度/投影Y列End X Field终点经度/投影X列End Y Field终点纬度/投影Y列Line Type选GEODESIC大地线还是选SLINE样条曲线。这里需要稍微解释一下。如果你用的是经纬度坐标理论上应该选GEODESIC画的是椭球面上的最短路径投影之后是一条弧线表示真实的大圆航线如果你用的是投影坐标选SLINE即可它会在两个点之间生成平滑的三次样条曲线视觉上比直线柔和很多适合做放射状图的时候避免线条僵直。实际做图时我大多数情况用SLINE因为OD图是表达关系强度的示意不是为了精确测量航线长度。点击OK之后生成的是一个线要素类所有的OD关系都变成了一条条真正的线属性表里保留了起点ID、终点ID和流量字段。注意这个工具生成的线是一个新要素类默认会在内存中产生记得在内容列表中右键导出到你的数据库里否则软件关掉就没了。3.2 路线二Table To Line工具适合起点终点不是点要素的情况如果起点和终点不是坐标数字而是面要素比如省界、区界你想从面的质心连到另一个面的质心XY To Line也能做但你需要先从面要素提取质心坐标再合并进OD表。而Table To Line这个工具Data Management Tools → Features → Table To Line可以直接引用两个点要素类的编码字段工具内部自动把坐标带过来少一步坐标合并的工作。实际使用中这个工具用得比XY To Line少因为它要求OD表里存的是要素的唯一标识码比如FID或者行政区划代码而且在处理“起点是点要素A、终点是点要素B、两者类型不同”的时候不如XY To Line那么直白。但如果你的起终点是同一个点要素类且字段齐全Table To Line会更高效。3.3 路线三手工构建适用于点位少、需要精细调整的场景当点数特别少比如就一个中心向周边10个点连线有时候不需要写什么表直接在ArcMap里用“创建要素”工具在编辑状态下选中中心点作为捕捉目标画一条条线段到周边点上速度反而更快。这个方法的好处是可以逐条调整线的形状比如绕过某个湖泊、避让某个注记缺点是无法批量处理一旦点位超过30个就不太现实了。如果用的是ArcGIS Pro操作路径基本一致工具还是在Analysis工具箱或者Data Management工具箱下面。Pro里OD连线还有个更高级的玩法使用“Connections”工具集里的“Generate Origin-Destination Connections”但那个主要服务于ArcGIS Network Analyst的OD成本矩阵分析跟我们的纯可视化场景不完全一样普通制图需求用XY To Line就够了。4. 放射状流向图的两种做法从中心点到N个目标点的高效连线放射状流向图本质上就是“起点都是同一个点”的OD图。但在实际制图时如果你想快速从一个中心点生成指向几十个目标点的线不需要把同一个中心点重复写几十行那样数据表冗余不说还容易出错。这里讲两种更聪明的做法。4.1 方法一用中心点坐标批量填表假设中心点是某个城区政府大楼目标点是周边若干个乡镇街道。先用“添加XY坐标”工具把中心点的经纬度提取出来然后新建一张表只有两列目标点ID和目标点XY坐标再加一列流量值。把中心点的X、Y作为常量在Excel下拉填充到每一行。这样生成的OD表起点坐标全部相同终点各不相同。导入XY To Line工具一条线也不会多一条也不会少。这个方法操作门槛最低但有个小问题如果中心点在地理意义上不是一个点而是一个面比如整个城市的范围用质心代替难免有一点失真。不过OD图本来就是示意性的抽象表达这种失真在1:100000以下的地图比例尺上完全看不出来。4.2 方法二创建“星形表”配合属性连接目标点是一个现成的点要素类包含名称、编码、坐标字段。新建一张Excel表里面只有三列中心点编码、目标点编码、流量。在ArcGIS里分别加载中心点要素和目标点要素然后用“连接和关联”功能把中心点编码关联到中心点要素、目标点编码关联到目标点要素一次性在属性表里获得起点坐标和终点坐标。最后把这几个字段导出成一张新的dBASE表再丢给XY To Line。这种方法适合点位特别多100、而且中心点可能不止一个的批量场景。比如你做的是“全省14个地级市分别向各自下辖区县的放射状流向图”一张星形表配上属性连接整个流程几分钟就能跑完全部14套图。4.3 关于“直线还是曲线”的制图学争论放射状流向图有一个被讨论很多的问题连线到底应该画直线还是曲线我的观点是如果表达的是“关系存在性”和“流量大小”直线就足够如果表达的是“地理路径”比如实际运输路线那就不是OD图的范畴了你应该用网络分析去求最短路径。强行用样条曲线做出来的弧线好看是好看但读者会误以为那条弧线真是某条公路或航线。制图的第一原则是诚实不能为了视觉冲击力牺牲信息真实性。SLINE样条曲线确实在视觉上比直线柔和能减少多线交叉时的突兀感我会在流量层级多、线条数量大的时候用它但会在图例或说明里标注“连线为示意不代表实际路径”。5. 符号化才是OD图的灵魂线宽、渐变和透明的组合术线生成完毕只是一个半成品。很多第一次做OD图的人卡在了最后一步——符号化。同一组OD数据不同符号化方式呈现出来的信息量差距可以非常大。这里我把自己的参数组合分享出来。5.1 用流量字段驱动线宽分级还是连续ArcGIS的符号系统里在“数量”类别下选“分级符号”或者“按比例符号”都可以基于流量字段调节线宽。两者区别在于分级符号把流量划分成几个区间比如0-100、100-500、500-1000每个区间一个固定线宽出图清晰图例简单适合汇报场合。按比例符号线宽与流量严格成正比信息更精确但小流量线可能会细到看不见、大流量线可能粗得压住底图。我个人的习惯是先看数据分布。如果流量的最大值是最小值的20倍以上直接按比例符号会出现极端情况建议用分级符号分5级左右每级的宽度差控制在相邻级别之间不要超过2倍。具体参数上比如基础线宽0.4磅最高级2.5磅中间按对数间隔划分。这样视觉上高低层级一目了然又不会出现“最粗线把市中心盖住”的悲剧。5.2 颜色色系选择不能太随意OD线的颜色表达的是“关联强度”。单色系渐变是安全且高级的选择比如从浅橙色低流量到深红色高流量符合“越深越强”的视觉直觉。尽量避免用红绿渐变红绿色盲群体看图会非常吃力这也是制图行业的基本礼仪。如果线特别多加上一定程度的透明度透明度设置在40%到60%之间让重叠区域的线条因为颜色叠加而自然加深会带有一种“密度热力”的效果。这个方法在放射状流向图里尤其好用——从中心点发出的线如果流量都很大中心区域会自然形成一片深色光晕视觉冲击力比任何图例文字都强。5.3 终点装饰箭头还是圆点OD线的端点建议不要都加箭头因为在线条密集的时候箭头会显得凌乱。我的做法是只在放射状流向图里给“汇入终点”的方向加一个小圆点标注如果是双向OD图就不加箭头让线的方向通过起点/终点配对的颜色来暗示。如果需要区分方向比如A到B的流量和B到A的流量不同可以用两个图层叠加A到B画成深色、B到A画成浅色两条线在路上会有一定偏移offset避免完全重合。5.4 交通流量的经典符号化补充做交通或物流相关的OD图时还有一个非常有用的符号化技巧线宽分级的基础上给最高级别的OD线换一种醒目的颜色。比如500-1000这个级别用深红同时把线型改成双线两条平行线中间留白这种“走廊式”的表达方式在城市群OD图里非常常见可以用来突出核心交通走廊。ArcGIS里实现方法是在符号选择器里选“双线”符号设置主线颜色和宽度再设置一条偏移的副线颜色比主线浅一个色阶。效果类似地图上的“规划高铁线路”画法专业感立刻提升一个档次。5.5 标注什么时候标、什么时候坚决不标如果每条线都标注流量数字图面几乎必然变成灾难现场。我的经验是只标注Top N的线比如流量最高的前10条或者干脆把标注关掉用图例加分级色带来传递数值信息。ArcGIS里可以通过“标注管理器”下的SQL查询表达式设置一个“流量大于XX”的条件只有满足条件的要素才显示标注。这个功能很多人没用过但其实极其实用。6. 踩坑实录我在这套流程里踩过的五个典型错误做OD图这个需求看起来工具链很短但出错的花样非常多。下面这些坑有些是我自己踩的有些是帮同事排查时遇到的整理出来供你对照自查。6.1 投影坐标系的“假统一”有一次我拿到一份数据图层属性表里显示坐标系是GCS_WGS_1984坐标值的范围是3500000到3900000之间。这个数值范围明显不对——WGS84的经纬度经度范围应该是-180到180纬度是-90到90。正确答案是数据本身其实是投影坐标CGCS2000_3_Degree_GK_Zone_38但被错误声明成了经纬度。把坐标系改对之后所有点落到正确位置连线才正常。这个错误的识别方法是把图层单独加载到空白地图里看看点和你的底图能不能对上。如果点显示在奇怪的角落优先怀疑坐标系声明错误而不是数据本身错了。6.2 Excel一列数据被自动截断超过11位编码的行政区划代码、或者超过15位的ID在Excel里默认会变成科学计数法最后几位变成0。比如“110101000101”这种街道级代码导入ArcGIS后匹配不上OD线的起点和终点关联就会出现大量空值。解决办法有两个一是Excel里把该列格式改成“文本”再录入二是如果已经出现科学计数法用“分列”功能把该列强制转成文本必要时手动补齐被截掉的位数。6.3 XY To Line生成的线总是不在预期位置如果生成的线位置偏了十万八千里先检查你的OD表里的XY字段和图层属性表里的XY字段是否是同一个坐标系。还有一个小概率问题XY To Line工具的“Input Coordinate System”参数在工具窗口下方有一个环境设置入口默认是空它会参照输入表格的第一个空间字段定义坐标系。如果你的表本身没有定义坐标系工具默认按GCS_WGS_1984处理。所以稳妥的做法是在工具窗口底部找到“环境”按钮展开“输出坐标系”手动指定为你的目标投影坐标系工具会先做坐标转换再生成线结果位置就完全可控。6.4 烘焙标注时字压线、线压字放射状流向图因为所有线汇聚同一个中心点中心附近必然线条密集标注很容易重叠。解决思路是在“符号化”里把中心点周围做一次“掩膜”右键图层 → 属性 → 标注 → 放置属性 → 冲突检测勾选“将标注放置在图层的要素上方”再配合注记权重设置让重要线段的标注优先显示。如果实在不行就把中心点附近30公里范围内的标注手动关掉不要跟它硬刚。6.5 “OD线是弧线但箭头方向全乱”如果用了SLINE曲线在ArcMap的“箭头”符号里曲线方向可能不按你预期的方式绘制——因为样条曲线的控制点方向受起终点连线方向影响某些情况下箭头指向反而会和实际流向相反。自查方法在符号系统的“高级”选项里找到“旋转点”指定一个字段来表示线的方位角或者更简单的办法直接用“平头箭头”符号它不会跟随曲线曲率旋转始终保持直线方向虽然是直线箭头但至少不会误导读者。6.6 数据量特别大时的性能问题如果OD对数量超过一万条比如100个起点×100个终点ArcMap的实时渲染会明显卡顿。这时候用“创建缓存图层”或者把线要素类转成“要素服务”发布到ArcGIS Server能显著缓解。但我个人更推荐如果真的有一万条OD线你的图面信息量已经超载了应该考虑聚合到更粗的行政级别或者做流量筛选只画出超过某个阈值的OD对。制图不是炫技是为了让别人读懂。7. 从OD线到完整出图的收尾工作布局、比例尺、图例和报告最后一步是把画好的OD图层整理成一张可以放进汇报PPT或者发表论文的图。这部分的工作量往往被低估但恰恰是成品和半成品的分界线。7.1 布局视图中应该放什么切到Layout View布局视图后我通常按照表格里的配置来组织整张图组成部分推荐位置说明主图OD线底图页面上部约70%面积比例尺控制在能看清主要线条的程度图例右下角只显示分级符号的说明不要列太多底图图层指北针比例尺左下角比例尺用条形或分段式不要用文字式便于读者直接量数据说明文字底部或页面边缘注明坐标系、投影方式、OD流量口径是客流还是货流、统计时间区间等这段文字虽然不起眼但专业评审非常看重来源标注底部小字数据来源、底图版权信息7.2 图例的“断舍离”原则OD图的图例最容易犯的毛病是把底图图层也一股脑列进去。行政边界、河流、道路的符号都出现在图例里图例比图还长。我建议图例只保留OD线的分级符号说明底图要素的图例一概不要。如果有必要告诉读者边界信息可以在图内用注记标出主要区域的名称而不是靠图例。7.3 导出参数设置导出的清晰度至少300dpi论文投稿建议600dpi。格式上如果是Word排版用TIFF或PNG如果是PPT汇报用PNG白底或带透明通道的PNG方便叠在其他背景上。千万不要直接截图屏幕分辨率不够而且Esri界面上的标题栏、菜单栏都会混进图里显得极不专业。ArcMap里在“文件→导出地图”对话框把分辨率设为300色彩模式选RGB就可以了。7.4 一个提高成图效率的小技巧如果同一个区域需要出多张OD图比如不同时间段、不同指标的流量不要每次重新连线。把第一张图的OD线图层、底图图层和整体样式保存为一个ArcGIS图层文件.lyr或者模板文档后续只需要替换OD表的数据源重新跑一遍XY To Line再套用保存好的符号模板五分钟出一张新图。我一般会建立一个工程目录里面放好“底图”、“OD线模板.lyr”、“出图样式.mxd”三个基础文件新项目直接往里套数据流程化作业的效率能提升一半以上。8. 我自己的实操体会OD图和放射状流向图本质上不是在“画线”而是对“关系数据”做了一次空间可视化转译。很多人觉得这功能难是因为把它当成“制图问题”来解拼命找工具、试参数但真正顺手的做法是先把数据结构和坐标系这两个基础想清楚后面的工具操作只是按部就班而已。我建议第一次实操的朋友不要一上来就套真实大项目的数据。拿一份20个点左右的模拟数据Excel里造就行完整跑一遍“OD表→XY To Line→符号化→布局出图”的流程把每一步的按钮位置和参数含义弄清楚。等你把20个点的流程吃透了换到200个点、2000个点的场景你会发现所有操作全是重复唯一的挑战只是数据清洗的时间长短。另外ArcGIS Pro用户可以把XY To Line和后续的符号化模板保存为Python脚本或者Model Builder模型一键跑批那又是效率提升的另一层境界了。
返回列表