
做GIS制图这些年我见过不少从ArcMap转到ArcGIS Pro后被界面劝退的人。老手也一样在ArcMap里闭着眼睛能出的图换成ArcGIS Pro后光找“布局视图”就得折腾半天。这篇文章不是官方文档的复述而是我实际跑完一遍ArcGIS Pro制图全流程后的记录和复盘从工程组织、数据体检、符号化、标注、布局排版一直到导出顺带把几个高频热搜问题安装、底图、透明度、删除投影信息、风向玫瑰图、链接PyCharm一次说清。适合刚装上ArcGIS Pro的新手、正在从ArcMap迁移的团队也适合那些想把出图流程规范化的老用户。如果你还没安装ArcGIS Pro建议先从你所在单位或学校的组织账户获取安装包和授权个人用户也可以从官方渠道申请试用许可。安装本身不算难难的是装完之后的那套软件逻辑。下面直接进入正题。1. 从ArcMap迁移到ArcGIS Pro最先要适应的不是按钮而是工程逻辑很多人打开ArcGIS Pro第一反应是“按钮去哪了”。这很正常因为ArcGIS Pro不是ArcMap换了个皮肤而是把整个制图环境从“文档”改成了“工程”。不理解这套逻辑后面所有操作都会别扭。1.1 工程文件不再是mxd而是aprxArcMap时代一个.mxd文件对应一张地图数据源全靠相对路径和绝对路径维系换台电脑经常红蝙蝠一片。ArcGIS Pro把这一切打包成一个工程.aprx里面可以同时装多个地图、多个布局、工具箱、数据库连接、文件夹连接还能存样式、标注规则和导出配置。我自己的习惯是一个完整项目只建一个aprx里面放“底图检查”“数据分析”“成果出图”几个地图再放两三个不同幅面的布局。好处是数据源、符号库、图例模板全都在一个工程里不会出现ArcMap那种“图做完了数据源路径断了”的尴尬。工程可以打包成**工程包.ppkx**发给同事对方打开后数据、样式、布局全都能看到协作效率提升明显。需要注意aprx的默认保存位置通常在C:\Users\用户名\Documents\ArcGIS\Projects。如果C盘紧张建议新建工程时直接存到其他盘或者等下文的存储位置迁移方案。1.2 界面布局和“出图入口”完全不同ArcGIS Pro用的是Ribbon功能区类似Office界面会随你选中的对象动态变化。最让我当初不适应的是ArcMap有“数据视图/布局视图”切换Pro里地图和布局是两个独立对象。地图就是数据可视化的工作区负责符号化、标注、图层渲染布局是负责纸张排版的地方地图框只是布局里的一个元素。出图的正确流程是先在“地图”里把内容和符号调好再在“插入→新建布局”里建一个页面然后通过“插入→地图框”把刚才那张地图放进去。ArcMap那种随手在布局里挪来挪去的操作习惯在Pro里要改成更清晰的“数据一处、表现一处”。这个变化一开始觉得麻烦用久了反而觉得合理。地图内容与排版分离意味着同一份数据可以快速套用多个不同尺寸和用途的布局比如A4报告图、宽幅评审图、手机端竖图互不干扰。2. 制图前的数据体检把投影、CAD数据和底图这三件事彻底搞定制图里最令人头疼的往往不是制图本身而是数据源头的问题。数据坐标不对、CAD图纸单位混乱、底图加载不出来任何一种情况都会让出图翻车。我在正式开工前一定会先花十几分钟做一轮数据体检。2.1 为什么“arcgispro删除投影信息”能成为热搜以及正确做法“删除投影信息”能成为热搜词是因为很多人从CAD、Excel或者网上开源数据拿到数据后图上的位置完全不对。有人想到把投影信息删掉重新来过但这个方向其实不太对。ArcGIS Pro默认开启动态投影当地图框的坐标系和图层坐标系不一致时Pro会实时把图层投影到地图框坐标系下显示。这个机制很方便但也有副作用——如果数据本身坐标系标注错误动态投影不会帮你纠错只会让图形落到一个莫名其妙的位置。正确判断流程是这样右键图层 → 属性 → 坐标系看看当前数据被记录成什么坐标系。如果显示“未知”说明数据没有坐标系元数据。软件会用坐标数值直接绘制容易和底图错位。如果显示的是坐标系但位置明显错误说明坐标系元数据标错了而不是坐标值错了。处理方式分两种坐标值本身是对的只是没有坐标系信息或信息错误用“数据管理工具 → 投影和变换 → 定义投影”重新指定正确坐标系。这个工具只改坐标系标签不动坐标数值。坐标值需要换一套坐标系比如从经纬度转到投影坐标用“投影”工具工式会重新计算坐标值。真正需要“删除投影信息”的场景很少。如果确实拿到一个坐标系记录混乱的Shapefile又不确定原始坐标可以先复制一份把.prj后缀文件临时改名或者删掉让Pro把它当作未知坐标系重新加载但做好几何位置不靠谱的心理准备。更多时候你要做的是覆盖式定义投影而不是删除。2.2 CAD图纸导入从初学入门的盲区到规范流程“cad制图初学入门”这类热词一直居高不下说明大量做GIS的人绕不开和CAD图纸打交道。ArcGIS Pro可以直接打开DWG/DXF文件在目录窗格里能看到CAD数据集里的点、线、面、注记等要素类临时查看很方便。但我不建议长期把CAD文件当底图直接出图。原因有三个CAD文件通常没有规范的投影信息甚至没有坐标系。CAD绘图单位可能是毫米或英寸而GIS数据一般用米或度。CAD里的注记、线型、颜色和GIS符号体系不兼容直接出图会变成一团乱线。规范做法是把CAD数据转成要素类使用“CAD转地理数据库”工具把DWG里的点、线、面、注记导入到GDB中同时指定目标坐标系。如果图纸本身没有投影坐标比如只是建筑师在局部坐标系里画的平面图需要先用地理配准功能在Pro里添加控制点把CAD图形对齐到正确位置再做后续处理。地理配准的关键是控制点选得准。尽量选道路交叉点、建筑墙角这种特征鲜明、不易混淆的位置至少四个点分布均匀。控制点数量不是越多越好精度差的控制点反而会把整体配准带偏。配准完成后右键导出或保存几何配准信息后续再打开就不需要重复操作了。2.3 底图在线底图加载失败和离线底图方案底图问题几乎每个ArcGIS Pro用户都遇到过。新建地图时“插入→底图”里有一堆在线底图但点击后经常空白或转圈。多数原因是你没有登录组织账户或者网络环境访问不了ArcGIS Online服务。如果是网络问题我个人建议准备一套离线方案从外部来源下载离线切片包.tpk/.tpkx在Pro里“添加数据”直接加载不依赖网络。如果你有ArcGIS Server或Portal可以连接组织内发布的底图服务。数据条件允许的话用自己的矢量数据做底色比如面状地类、路网线划配合浅色配色当成地图背景也足够专业。底图加载后经常涉及透明度的调整比如想让自己数据叠加在卫星影像上又不想完全挡掉影像纹理。这时候内容窗格选中底图图层切到“外观”选项卡把“图层透明度”调到 30%50% 是比较舒服的范围。透明度这个功能在Pro里比ArcMap顺手很多滑块调整实时生效不用反复点开属性窗口。3. ArcGIS Pro制图全流程实操符号化、标注、布局到导出数据没问题之后才真正进入制图环节。我把这一段的完整流程拆成四个步骤符号化、标注、布局、导出。每一步都有值得注意的细节。3.1 图层符号化与透明度设置符号化是所有制图的基础ArcGIS Pro的符号系统集中在“图层属性→符号系统”里或者直接选中图层后在功能区“要素图层”下点“符号系统”。常用的渲染方式有几种唯一值按字段分类适合土地利用、行政区划等离散类型。分级色彩按数值区间分段适合人口密度、GDP等连续数值。分级符号用符号大小区分量级适合统计点、圆点图。不分类拉伸适合栅格影像的连续色带。我做专题图时最常见的问题是分级色彩默认的色带容易“土”或者分类边界不符合业务含义。解决方案是手动设置分类方法比如自然断点法、分位数法以及手动输入断点值。分类数不建议太多57级足够绝大多数专题图使用再多就是色块拼图信息反而读不出来。透明度在这里也能发挥大作用。选中图层后“外观”选项卡里有透明度滑块也可以在“符号系统→格式化符号→颜色”里单独给填充色和轮廓色设置透明度。经验是做密度图叠加遥感影像时面图层透明度 40% 左右轮廓线不透明做多图层叠加时上层透明度不要低于 70%否则下面图层基本透不出细节。3.2 标注从标注表达式到注记转换标注是制图里最花时间也最容易返工的部分。右键图层 → 标注勾选“标注此图层中的要素”然后选标注字段。Pro默认使用Arcade语言如果只是想显示一个字段直接在“文本”里选字段即可如果想拼接多个字段可以在“标注表达式”里写Arcade表达式也可以用Python语法。实际工作中我喜欢在表达式里处理两个细节用字符串拼接生成多行标注比如上一行名称、下一行面积加上换行符。对小数位做格式化避免标注显示一长串有效数字。标注还有一个经典坑一放大缩小标注位置就四处乱跳好不容易摆好的位置全乱了。解决办法很简单——制图最后阶段把标注转成注记。右键图层 → 将标注转换为注记选择“将注记存储在地理数据库中”转完之后每个标注都是独立的可编辑要素可以手动拖动、删除、调整大小再也不用担心地图刷新把标注打回原形。注意转注记之后图层和注记是两个东西。后续如果数据范围变了注记不会自动跟着新要素跑还需要重新转一遍或者手动调整。3.3 布局地图框、图例、比例尺、指北针的规范做法布局是出图前的最后一关。在Pro里“插入→新建布局”选择页面尺寸一般制图常用A4、A3评审图用A1、A0。页面选好后“插入→地图框”把之前调好的地图放进去。地图框放进布局后有几个操作顺序容易忽略先固定地图比例尺。双击地图框在地图框属性里设定比例尺比如1:10000。这样可以手动调整版式而不担心地图内容被误拖乱跑。图例只保留有效图层。图例会默认把所有打勾的图层都列出来右键图例 → 属性勾选“仅显示当前地图框中可见的图层”再把不需要的图层从图例里移除。比例尺样式统一。如果页面里同时有多个地图框比例尺样式和单位要一致不然会被评审挑毛病。指北针朝向和坐标系有关。如果地图框没有使用“北向上”指北针也要相应调整最稳妥的做法是保证出图时地图正北朝上。布局里另一件容易忽略的事是参考线和对齐。Pro布局支持类似PPT的参考线从标尺拖出来就行。标题、图例、比例尺这些元素用参考线对齐比肉眼调位置专业得多。我做完布局之后一定会放大到 200% 检查一遍四周边距是否均匀。3.4 导出PDF、PNG、AI的参数选择布局完成后“共享 → 导出布局”是正式出图的动作。格式选择要看用途PDF优先选这个可嵌入字体矢量元素清晰还能分层存储矢量图块。PNG/JPEG适合网页展示和快速查看选择输出分辨率一般150dpi够看投稿或评审建议300dpi以上。AI/SVG适合需要后期在Adobe Illustrator里继续编辑的图但符号和标注可能会被拆分回来改字体会麻烦。导出时经常被忽略的参数有三个分辨率、输出范围、压缩方式。分辨率太低文字边缘发虚太高文件巨大且排版系统可能打不开。PDF字体建议勾选“嵌入字体”避免换台机器打开就变成乱码方块。如果PDF只需要可视化可以把矢量压缩调成“自适应”文件会小很多。另外如果只想导出地图区域而不是整个布局页面用“共享 → 导出地图”而不是“导出布局”。“导出地图”会严格按照地图框裁切范围常用于给切片系统或汇报材料出单张要素图。4. 专题图需求ArcGIS Pro能做风向玫瑰图吗“arcgispro能做风向玫瑰图吗”这个热搜词我特别关注因为确实隔一阵就有人问。直接回答能做而且能做得比较专业但Pro里没有一个叫“风向玫瑰图”的一键按钮。它需要你把风数据整理一下再选择一种实现路径。我试过几种方案下面说说思路。4.1 风向玫瑰图到底缺什么风向玫瑰图本质上是一种极坐标统计图把圆周分成16个方位按每个风向的出现频率把扇形从中心往外拉伸直观表达盛行风向。现在流行的一种还会按风速段着色同一方位里不同颜色的扇环表示不同风力等级的出现频率。ArcGIS Pro本身有图表功能可以画柱状图、折线图、散点图但内置图表里没有极坐标扇区这种类型。所以你的选择只有两条路要么在Pro里自己构造几何图形要么借助Python生态生成图形再嵌进布局。4.2 我试过的三种实现路线路线一用Python的windrose库生成图片再插入布局。这是最省事的方案适合报告插图。把站点逐时的风向风速数据整理成DataFrame一行代码就能画出16方位风速分段玫瑰图导出透明底PNG最后在布局里当图片元素插入。缺点是不和地理空间坐标联动只是一个静态图。路线二用ArcGIS Pro的第三方插件。市面上有一些专门做风玫瑰的ArcGIS Pro扩展安装后直接在Pro里选数据生成。优点是集成好缺点是要额外授权而且不同版本兼容性不一定稳定。路线三在ArcGIS Pro里用arcpy构造扇形要素符号化后用真正的GIS制图方式出图。这个方法最符合“制图全流程”的定位因为产物是地理要素可以继续叠加站点位置、地形底图、图例做进布局。下面细说。4.3 一个基于数据处理的最小实现思路核心思想是把风向方位和频次转换成扇形多边形。假设你已经统计出16个方位的频次比如N、NNE、NE等各占多少比例最大半径设为某个数每个扇面半径和频次成正比中心角固定22.5度。利用arcpy创建面要素即可。关键代码如下在ArcGIS Pro的Python窗口中运行或保存成脚本import math import arcpy arcpy.env.workspace rD:\你的工作目录 fc wind_rose_polygons # 16方位按顺时针从北开始单位角度 dirs [N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW] center_angles [0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180, 202.5, 225, 247.5, 270, 292.5, 315, 337.5] # 频率按实际统计值填比如N方位风速占比8%半径按比例放大 freq_radius [8, 3, 2, 1, 2, 4, 6, 10, 12, 9, 6, 4, 3, 2, 3, 6] # 站点中心坐标根据你的实际测站位置填 center_x, center_y 120000.0, 4000000.0 radius_scale 500 # 半径比例系数单位是地图单位 sites [] for dir_name, center_angle, radius in zip(dirs, center_angles, freq_radius): half_angle 11.25 a0 math.radians(center_angle - half_angle) a1 math.radians(center_angle half_angle) r radius * radius_scale points [arcpy.Point(center_x, center_y)] # 将圆弧拆成10段让扇形边缘平滑一些 for i in range(11): ang a0 (a1 - a0) * i / 10 points.append(arcpy.Point(center_x r * math.cos(ang), center_y r * math.sin(ang))) sites.append((dir_name, arcpy.Polygon(arcpy.Array(points)))) arcpy.management.CreateFeatureclass(arcpy.env.workspace, fc, POLYGON, spatial_referencearcpy.SpatialReference(3857)) with arcpy.da.InsertCursor(fc, [名称, SHAPE]) as cursor: for dir_name, polygon in sites: cursor.insertRow([dir_name, polygon])生成后字段里带上风向名和频次再用唯一值或分级符号渲染就能在Pro里得到一个真正的风向玫瑰要素图层。如果想做风速分段需要把每个方位按风速等级再拆成多层扇环构造方法类似只是半径变成累计值。这个思路的价值在于产物是空间要素能跟着坐标系走可以继续叠加站点的位置、村庄乡镇、地形底图出图时放到布局里图例、比例尺、指北针全部按GIS规范来。代价是构造方法需要一点编程能力如果你不想写代码路线一更适合你。5. 工程效率存储位置、PyCharm链接和批量出图制图流程跑顺之后接下来真正影响幸福感的是工程组织和自动化水平。很多人用Pro几个月后遇到C盘爆满、重复劳动太多其实都能通过一些基础设置解决。5.1 更改ArcGIS Pro的存储位置别让C盘背锅ArcGIS Pro的工程默认放在C:\Users\用户名\Documents\ArcGIS\Projects底图缓存和临时文件也在C盘。数据量一大C盘很容易告急。我的建议是装完Pro后第一时间改两处打开“工程选项 → 常规 → 目录”把“默认工程位置”改到其他盘比如D:\GIS_Projects默认地理数据库和默认文件夹也一并改到数据盘。已存在的工程直接“另存为”到目标盘以后都从新位置打开。至于缓存目录Pro的高速缓存一般在C:\Users\用户名\AppData\Local\ArcGIS\Pro\Cache。如果空间压力很大可以把整个ArcGIS目录用目录联接迁移到D盘但这种方式有一定风险更稳妥的做法是定期清理缓存别让它无限膨胀。5.2 ArcGIS Pro链接PyCharm的环境配置ArcGIS Pro内置了一个完整的Python环境叫arcgispro-py3位置通常在C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3。里面预装了arcpy、pandas、matplotlib、numpy等常用库这就是你写自动化脚本的“官方解释器”。如果你习惯在PyCharm里写代码配置方法很简单PyCharm打开设置 → Project → Python Interpreter → Add Local Interpreter。选择Existing Environment把路径指向arcgispro-py3文件夹下的python.exe。应用之后新建Python文件输入import arcpy能正常导入就说明环境已经打通。这里有个容易踩的坑如果你在PyCharm里运行脚本时提示ModuleNotFoundError: No module named arcpy大概率是解释器选成了系统自带的Python而不是Pro内置的。arcpy不是普通Python库PyPI里是装不到的必须用Pro自带环境运行。如果需要在Pro环境里装第三方库可以在Pro安装目录下打开Python命令提示符用pip安装装好PyCharm里直接用。5.3 一个能立即上手的自动化出图脚本链接PyCharm之后你可以把很多重复工作脚本化。比如一个工程里有多张地图、多张布局每次评审前都要批量导出PDF手工导出不仅慢还容易漏。下面这段脚本能遍历整个工程把每个布局都导出成PDFimport arcpy import os project arcpy.mp.ArcGISProject(rD:\GIS_Projects\某项目.aprx) output_dir rD:\GIS_Projects\出图结果 if not os.path.exists(output_dir): os.makedirs(output_dir) for layout in project.listLayouts(): output_pdf os.path.join(output_dir, f{layout.name}.pdf) layout.exportToPDF(output_pdf, resolution300) print(f已导出{output_pdf})脚本执行快速而且能在PyCharm里直接跑也可以放进Pro的Python窗口里运行。类似地你还可以批量修改图层透明度、批量更新图例文本、批量替换数据源。写一次脚本之后每次出图只要改工程路径就行。如果你的自动化需求更复杂比如要截取每个行政区范围的地图可以在脚本里循环遍历每个区县动态调整地图框范围然后逐张导出。这个思路能大幅减少出图时间。最后分享一条个人习惯我在所有布局完成后都会在导出前把工程另存一个带日期的副本。因为在制图过程中符号和标注位置已经调得很细致一旦后续数据更新覆盖了原来的图层样式返工成本很高。存一个副本既能放心大胆改又能在需要旧版本时快速找回。这个习惯帮我躲过好几次数据源被团队其他成员误改的麻烦。