手头有一张用 ArcMap 配了半天的专题图,领导突然提了一句“网页上能不能打开看看”。以前遇到这种情况,要么导出图片发过去,要么把工程文件拷给同事,但对方电脑上不一定装了 ArcMap,更别说打开后符号字体全乱。后来我把 ArcMap 里的数据和服务发布到 ArcGIS Online,网页端直接访问,手机也能刷,查询、筛选、图层开关都能用,这条路才算真正走通。
这篇内容就是围绕“ArcGIS Online - ArcMap篇”展开,把桌面 GIS 和云 GIS 配合起来的完整逻辑梳理一遍。包括为什么要把两者打通、发布前要做哪些准备、从 ArcMap 发布到 ArcGIS Online 的两种实操方式、发布后的权限与性能管理,以及我实际踩过的坑和排查思路。适合已经在用 ArcMap 做制图和数据管理、但还没怎么碰在线 GIS 的人,也适合刚接手 Web GIS 项目、需要快速把桌面成果搬到网上的团队参考。
1. 为什么要打通 ArcMap 和 ArcGIS Online
1.1 桌面 GIS 的边界在哪
ArcMap 强在数据处理、地理分析、制图编辑,这是它的主场。比如做一个片区现状图,数据清洗、坐标转换、空间连接、符号化、注记调整,全部在本地完成,效率和精度都没得说。但它的短板也很明显:成果难以共享。我做的地图工程文件,本地一台电脑上能跑,换台电脑就不一定打得开;就算打成 mxd 发过去,还要配数据源路径,数据缺失就全是空白。
更麻烦的是,地图做完之后,领导、客户、外业人员想要的往往不是一张静态图片,而是能缩放平移、能点选要素看属性、能切换图层的交互体验。传统做法是导成 PDF 或图片,看起来是够用,但信息量被砍得所剩无几。这也是桌面 GIS 的天花板:分析能力强,成果分发能力弱。
1.2 云 GIS 解决的是共享与协作问题
ArcGIS Online 提供的核心能力,是把 GIS 成果变成可访问的 Web 服务。简单说,就是把 ArcMap 里的图层变成网络上的一个地址,谁拿到这个地址,谁就能在浏览器里看地图、查数据。它实质上承担了两件事:一是托管空间数据,二是提供在线制图与分发环境。
数据一旦发布成托管要素服务,客户端就不再依赖 ArcMap 软件,只要浏览器能联网就能访问。我自己试过用手机打开在线地图,在地图上点一个地块,属性信息直接弹出来,流畅度和桌面端相比虽然有点差距,但已经完全可以支撑外业查看和汇报展示。ArcMap 负责“产数据”,ArcGIS Online 负责“发数据”,两者配合,才把地图成果的价值真正释放出来。
1.3 什么人适合读这篇
如果你是从事规划、测绘、市政、自然资源、园区管理这几类工作的人,而且日常工作里有大量 ArcMap 操作经验,又希望把数据成果做成在线可访问的形式,这篇内容会很对口。另一种情况是,你所在的团队已经开通了 ArcGIS Online 组织账号,但一直只拿它当“地图查看器”,ArcMap 里做好的东西还不知道怎么上传、怎么发服务,那这篇就是一条现成的路径。
我还会默认你至少能独立完成 ArcMap 的常规操作,比如加载数据、设置符号、切到布局视图输出地图。如果连这个基础都没有,建议先把桌面端的基本功补一补,再来打通在线环节,否则文章里的一些选项你会看得云里雾里。
2. 发布前准备:账号、数据、坐标系一条龙检查
2.1 选对账号角色:是发布者还是管理员
在 ArcGIS Online 里,账号权限直接影响你能做什么。常规角色分成查看者、发布者、管理员几档。这里最容易被忽略的一点是,你用自己的公共账号登录 ArcMap,和用组织账号登录 ArcMap,能做的事完全不一样。公共账号只能使用有限的在线功能,很多发布能力是受限制的;组织账号里的“发布者”角色,才是在 ArcMap 里直接发布要素服务的起点。
我建议你在动手之前先确认两件事。一是账号有没有发布权限,如果没有,登录 ArcMap 后“共享为”相关菜单是灰的,或者发布过程报权限不足。二是确认账号类型和许可证,有些组织会按用户分配附加模块,ArcGIS Online 在组织内如果没启用“托管要素服务”相关许可,即使有发布者角色也发不了托管图层。
提示:如果只是学着玩,可以用免费公共账号体验流程,但别指望拿它做正式项目。正式项目至少在组织账号内划分“发布者”和“查看者”,避免所有人都有编辑能力。
2.2 数据整理:字段名、数据量与坐标系
很多人发布失败,根子不在发布环节,而在数据准备环节。ArcMap 里的图层五花八门,有注记、有 CAD 导入的数据、有临时 join 出来的字段,这些“带病上线”的图层一发布就出问题。
最基本的检查项,是把要素类命名和字段名清理干净。字段名里不要带空格、不要带特殊符号,尽量用字母和下划线。中文字段名在 ArcGIS Online 里不是完全不能用,但后续在 REST 服务、开发调用、字段映射时会出现编码问题,能避开尽量避开。
数据量也要提前判断。要素服务发布后,前端加载的是矢量要素,如果一张表里有几十万条记录,就算发布成功,网页端也会卡到让人怀疑人生。我的判断标准是:超过五万条且几何复杂的地块面,就不要直接发要素服务,要么做精简处理,要么考虑切片发布或按区域拆分。若数据本身只有几百条,那就是标准的要素服务场景,在线编辑、查询、弹出窗口全套功能都可以用上。
2.3 坐标系:发布前务必想清楚
ArcGIS Online 的地图底图和托管服务默认使用 WGS84 Web 墨卡托,也就是 EPSG 3857。如果你的数据是 CGCS2000、西安80、北京54,或者地方独立坐标系,发布到 Online 后会自动做一个投影转换,从数据层面看没问题,但会出现两个隐患。
第一个隐患是动态投影导致的位置偏移。某些地方坐标系转换参数不准,发布后的要素和在线底图对不上,差几米到几十米都很正常。第二个隐患是范围错误导致图层空白。ArcMap 里数据框可能被设置了一个局部范围,发布时如果按数据框范围生成服务,在线打开后可能只看到一小块区域,甚至什么都看不到。
我现在的做法是在发布前,把地图文档的数据框坐标系直接设置成 Web 墨卡托,并勾选“数据框属性里的 XY 域”做一次范围确认。这样发布出来的服务,在线底图叠加时基本不会出偏移问题。如果你对原始数据的坐标系本身就含糊,千万先去属性里查看清楚,不要凭感觉选。
2.4 图层组织与符号化
ArcMap 里的符号化成果,发布到 Online 后大部分是能继承的,但继承是有限度的。要素图层的颜色、线型、填充样式可以保留,可一旦涉及复杂表达式渲染、制图表达里的某些效果、自定义字体符号,在线端就会显示成默认样式。
为了保证发布后地图质量不降低,我建议在做完符号化后,对每个图层做一次“简化测试”:凡是做了多级比例符号的,发布前检查一下各级比例下符号效果;凡是用了自定义字体做注记的,要么把字体转成图形,要么把注记转成注记图层再发布。另外,给图层设置合理的可见比例范围,能让在线地图在缩放时不会因为要素过密而变成一团黑,这一点对大数据量图层尤其重要。
在图层命名上,我也踩过坑。ArcMap 里的图层名如果带斜杠、括号,发布后生成的服务名称可能会被截断或转义。建议在目录里预先重命名,干净、简短、无特殊字符,后续管理起来省心得多。
3. 从 ArcMap 发布服务到 ArcGIS Online 的两种实操
3.1 方式一:直接共享为 Web 图层
这一步算是最直观的发布路径。在 ArcMap 里把地图文档准备好,包含你想要发布的图层,然后点“文件”菜单,找到“共享为”——“服务”(不同版本菜单名略有差异,有的版本是“共享为”下的“Web 图层”)。选择发布到“我的托管服务”,输入一个服务名称,相当于给这个在线服务起个名字。
进入服务编辑面板,第一件事是选类型。常见的是要素图层和切片图层两个方向。要素图层保留每个要素的几何和属性,支持查询和在线编辑,适合数据量不大、需要交互操作的场景。切片图层把地图预渲染成瓦片,加载速度极快,但不支持背后属性查询,适合当底图用。
接着要设置共享范围。这一步很多人会漏掉,发布后内容确实成功了,但别人一打开还是看不到,原因就是共享范围没设对。ArcMap 的共享面板里可以勾选“所有人”“组织内”或指定群组。如果你后续还打算在 Online 里用 Web 地图组合多个图层,这里至少先勾选组织内共享。
发布完成后,服务会出现在 ArcGIS Online 的“内容”页面里,项目类型一般是 Feature Layer。点开项目详情页,可以看到服务的 REST 地址,这个地址既是网页访问的入口,也是后续给开发人员对接 API 用的端点。我第一次发布成功后,就是把这个 URL 直接发给同事,浏览器打开就能看到地图,那种感觉确实和之前发图片完全不同。
3.2 方式二:先打包再上传的离线流程
不是所有场景都能直接在线发布。有些单位网络环境有限制,ArcMap 访问不到 Online 服务;有些项目发布需要走审批,内容要先打包给管理员审核;还有些场景是数据在离线环境里处理完,拿到有网环境再上传。这时候就用到第二种方式:生成服务定义文件,也就是 .sd 文件。
在 ArcMap 里还是走“文件”——“共享为”——“服务”,但这次选择“生成服务定义文件”。对话框里会让你选择“复制所有数据”还是“引用数据”。如果接收 .sd 文件的电脑可能访问不到原始数据路径,就必须选择复制数据,把所有数据打包进 .sd 文件里。这个文件的容量会随数据量变大而变大,我做过一个几百兆的影像服务定义,生成和上传都很耗时。
生成完 .sd 文件后,登录 ArcGIS Online,在内容页面里点击“添加项目”——“从我电脑”,选择这个 .sd 文件上传。上传完成后,系统会提供一个“发布”按钮,点击后正式生成在线服务。这个流程的好处是,发布那一瞬间实际上是在 Online 的服务器上完成的,和桌面端是否在线没有关系,网络只需要支持上传文件。
两种方式怎么选?我的经验是:数据量小、网络通畅、自己操作熟练,直接共享最快;数据量大、网络不稳定、需要走审核留痕,就打包上传。打包上传还有一个隐藏好处,发布配置可以在 ArcMap 里反复调整,同一个 .sd 文件可以多次发布成不同服务,节省后台上传时间。
3.3 发布选项里容易被忽略的关键项
服务编辑器里选项密密麻麻,绝大多数保持默认就能跑,但有四项我会重点关注。
第一是“要素服务高级设置”里的“允许编辑”。在线编辑是好功能,可一旦勾选了编辑,就意味着全局所有能访问该服务的人都有可能改数据。如果你只想给某些人开放编辑权限,不要勾这个总开关,而是在 Online 端做权限控制。更稳妥的做法是先发布时不开放编辑,后续真需要在线编辑再通过内容页面的“服务设置”调整。
第二是“图层范围”。系统默认会根据要素类范围计算,这点没问题。但我见过有人在 ArcMap 里把数据框缩放到了某个局部区域,发布时“图层范围”也跟着变成了局部范围,结果在线打开整体数据就只显示一块。发布前检查数据框的全图范围,确保空间范围没有被限制住。
第三是“缓存设置”或“切片方案”。如果不打算用切片图层,这个选项不需要动,但若打算生成缓存切片,发布前需要对比例级别做取舍。切到 20 级,时间翻倍;只切到 16 级,在线显示够用但放大后底图模糊。实际项目里,影像底图我切到 18 级,矢量专题通常 16 级就够,这个组合做过多次验证。
第四是“要素服务查询字段”。服务编辑器下方能看到字段列表,有些字段不影响业务但很占资源。发布时不把这些字段给出去,在线端查询就查不到,所以要看清楚哪些字段要开放。涉及保密或敏感信息的字段,最好直接不勾选。
4. 发布后的在线管理与性能优化
4.1 在 ArcGIS Online 里管理内容项目
服务发布成功后,所有管理动作都移到 ArcGIS Online 的网站上。内容页面里,每个服务是一个项目卡片,点击进入项目详情,可以看到服务地址、所属文件夹、创建时间、缩略图等信息。
我最推荐的一步操作是给项目补全元信息。名称、摘要、标签、描述、缩略图,这些东西看起来像写作业,但实际工作中帮助巨大。项目一旦多了,几十个图层散落在内容列表里,靠名字根本分不清哪个对哪个。标签填好之后,可以直接通过搜索过滤找出所需图层。缩略图可以从 Web 地图的视图里生成,不需要额外做图。
在项目详情页里,可以完成很多只能在桌面端之外做的操作,比如更新服务定义、修改项目描述、调整共享权限。还有一个容易被忽视的地方是“属性”标签页里的坐标参考信息,如果发布后发现服务坐标系显示异常,来这里可以核对最原始的坐标系信息,比重新发布省事。
另外,在内容项目里可以创建 Web 地图。把发布的要素图层拖进 Web 地图,配置弹出窗口显示的字段、标注样式、透明度,这些在线配置和 ArcMap 的制图逻辑不一样,但日常汇报足够用。我建 Web 地图有个习惯:图层命名直接用中文别名,在平台上显示出来别人一看就懂,而不是默认的服务名。
4.2 性能优化:切片、比例范围与字段精简
在线地图卡不卡,大多数时候不是网速问题,而是你发布的服务设计问题。要素服务的每一个请求都会把数据传到前端,数据量大、字段多、几何复杂,前端自然扛不住。
优化手段第一个是设置可见比例范围。在 ArcGIS Online 的图层配置里,给图层设置最小和最大可见比例,当地图缩小到一定程度时,图层直接不加载。这个操作能让地图在不同缩放级别下只显示最有用的信息,加载速度肉眼可见地提升。
第二个手段是给底层底图做切片。影像、地形、区域概况这类不经常变化的图层,发布成切片图层之后,加载速度快得不是一星半点。切片图层有一点要注意,每次源数据更新后必须重新生成切片,所以它适合“数据相对稳定”的场景,而不是临时数据。
第三个手段是精简字段和业务属性。发布前关掉不做查询的字段,或者发布后在服务属性里把多余字段映射为空,都能减少前端传输字节。我自己做过一个统计,某个服务从 40 个字段精简到 15 个之后,访问响应时间从 1.8 秒降到 0.8 秒,这个优化收益非常直接。
4.3 权限分享的组合策略
ArcGIS Online 的共享逻辑比桌面端更细,权限分三级:所有人、组织、群组。所有人可见意味着全网公开,任何人拿到地址都能访问;组织可见是所有组织成员可见;群组可见是指定小组内部可见。
实际项目中,我习惯把共享权限默认收敛到组织一级。哪怕是内部项目,也不建议随手设成“所有人”。只有在正式对外的地图展示,比如招投标分享、公众展示场景,才需要把服务或 Web 地图共享给所有人。
多人协作时,群组比单独分享好管理得多。可以先创建一个项目群组,把参与协作的账号都拉进去,然后把需要共享的服务统一拖进这个群组。这样后续新成员加入,只需要加群,不用再单独处理十几项服务的权限;人员离开时也同理,从群组移除即可。
要注意的是,有些数据虽然只需要给一个人看,却挂在组织共享下面,其他成员虽然没被主动告知,但只要在组织内搜索就能发现。干了几年 GIS 的人都知道,内部数据一旦因为权限设置不当泄露出去,责任很难讲清楚。所以我在发布前的最后一分钟都会做一次检查:这个服务到底要被谁看见,再决定共享层级。
5. 常见问题与排查实录
5.1 登录和授权问题导致发布菜单灰显
最常见的问题,是 ArcMap 里点击“共享为”时发现选项是灰的,或者发布时提示没有权限。第一反应先检查当前登录的账号是不是组织账号,以及这个账号的角色。ArcMap 顶部菜单栏如果没有显示在线登录状态,很多发布选项就是禁用状态。
另一个原因是账号登录过期或令牌失效。ArcMap 长期挂着不关,在线登录令牌过期后,发布虽然是点了,但服务端会拒绝。这种情况退出账号重新登录一般就能解决。还有一种情况是所在网络无法访问 Online 域名,尤其办公网络有防火墙时,桌面端登录不了,就多发到打包服务定义文件的流程。
5.2 发布后图层空白或要素位置偏移
发布后在 Online 打开 Web 地图,图层内容一片空白,这个问题我遇到过好几次。多数原因是发布前坐标系或数据框范围设置不对。
ArcMap 里在内容列表右键图层,查看“属性”——“源”,确认数据本身的坐标系。如果数据框坐标系与数据坐标系不一致,ArcMap 只是动态投影显示,发布时会把动态投影结果作为服务内容,有时候结果就会出现偏差。我的解决方法是先给数据做一次“定义投影”修正,再在数据框属性里把坐标系统一设置成 Web 墨卡托,再重新发布。
还有个隐蔽问题是在 Feature Layer 的“范围”属性里出现了空值。发布前可以这样验证:在 ArcMap 里把地图缩放到全图,然后点击“全图”按钮,如果视图能正常回到数据边界,范围一般没问题;如果缩放异常,说明数据本身范围信息有问题,需要用“计算范围”工具修复。
5.3 数据量过大、发布超时或失败
发布几十万条要素时,桌面端一直在跑,最后提示超时或失败,是服务器处理能力受限的表现。这并不一定是网络问题,更多是数据负载超出服务上线时的限制。
处理手段通常是把大图层按区域或类别拆分,分多次发布,再在 Web 地图里组合起来。或者先对几何做简化处理,减少节点数量,比如保留必要的最低精度,面边界毛刺去掉。还有人会把附件字段与查询字段拆开,把附件信息放关系表,主图层只保留关键字段,减轻服务负载。
如果是在线发布反复失败,可以先尝试打包成服务定义文件再上传发布。离线打包的好处是桌面端只负责生成文件,数据上传可以断点重试,比在线发布全程保持连接的容错性高很多。
5.4 符号和字体在网页端显示不一致
ArcMap 里精心配好的点符号、线符号,发布后 Web 端显示得蹊跷。最常见的是自定义字体符号、特殊填充样式、制图表达效果丢失。这是一个平台差异问题,ArcGIS Online 的符号引擎支持的是常规符号能力,部分高级桌面制图效果没法直接复刻。
我的实用建议是:地图成果以“看”为主时,放弃 Web 端逐要素查询需求,直接发布切片图层。切片后的地图就是 ArcMap 里渲染的“照片”,符号效果 100% 保留。若必须用要素图层,就尽量使用内置符号库,少用自定义字体,避免网页端回退到默认样式。
注记方面,如果用的是 ArcMap 的注记组,发布后在线端通常能显示一部分,但每个注记的旋转、字距和压盖关系与桌面端有差异。真正讲究的专题图,我会把注记转成面要素或栅格化输出,或者将地图整体做成切片,再叠加到在线底图上。
6. 一点个人体会
发布是一件看起来简单、做起来琐碎的事。我刚开始做这类项目时,总觉得把 ArcMap 图层“共享出去”就完事了,结果每次都在坐标系、共享权限、数据量这些环节来回折腾。后来总结下来,真正管用的其实就几条:发布前统一坐标系,数据量超限就切片,共享权限默认收敛,字段能精简就精简。这几条做到了,后面的流程一般顺风顺水。
还有个小技巧:第一次发布时,建议先拿一个数据量最小的图层练手,把整个“ArcMap 到 Online”的链路跑通一次,再逐步增加其他图层。这样万一出问题,排查范围一下就缩小了。我自己后来做跨平台地图项目时,也是先发一个小图层验证服务地址、共享权限、Web 地图配置都正确,再批量同步剩余数据。
ArcMap 和 ArcGIS Online 的配合,对传统 GIS 从业者来说,是走出桌面端的一条捷径。把数据发布成在线服务,再配合 Web 地图的弹出窗口、图例、筛选功能,很多以前需要重复制图才能交付的工作,现在只需要发布一次,所有人看到的就是最新版本。希望这篇内容能帮你少踩几个坑,把 ArcMap 里的成果顺顺利利送上云端。