ARTICLE DETAIL

资讯详情

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

ArcGIS避坑实战指南:从坐标系投影到CAD转换的常见问题

ArcGIS避坑实战指南:从坐标系投影到CAD转换的常见问题 用了快十年ArcGIS从10.2一路用到Pro 3.x说实话这软件就是个“功能猛兽”但也是“坑王之王”。安装授权、坐标系投影、CAD互转、在线地图调用、二次开发部署每个环节都有一堆看着不显眼、踩上去却让人想砸电脑的问题。前阵子帮几个项目组做技术支持发现大家踩的坑高度相似很多还是我早年就趟过的。所以我把这些年攒下的ArcGIS避坑经验按主题整理出来持续更新。这篇指南主要面向两类人一是刚入门的学生和转行者二是用了几年但总在某个环节反复卡壳的从业者。无论你是做国土、规划、林业还是测绘只要跟空间数据打交道这篇都值得收藏。1. 安装与授权从源头避开最折腾的那些坑1.1 License Server 点击启动后没反应先别急着重装10.x系列最常见的问题之一就是装好ArcGIS License Manager打开License Server Administrator点“启动”状态栏纹丝不动或者转两圈又弹回“已停止”。很多人第一反应是卸了重装其实90%的情况不用。我一般按这个顺序排查第一步打开Windows服务管理器WinR输入 services.msc看有没有一个叫ArcGIS License Manager的服务。有时候这个服务根本没安装成功需要回到License Manager安装目录手动注册或者重装License Manager。第二步确认服务处于“自动”并启动。如果启动失败看Windows事件查看器里的错误日志很多是权限问题——右键服务把登录身份改为“本地系统账户”或者当前管理员账户。第三步检查端口占用。License服务默认采用Sentinel RMS技术走17030端口。在命令行下执行 netstat -ano | findstr 17030如果这个端口被别的进程占用了License Manager就起不来。这种情况我遇过一次竟然是一个内网监控软件抢占了端口。把那个进程停掉就好。如果确认端口被占但找不到占用进程可以考虑修改License Manager的端口配置但后续客户端连接也要同步改麻烦不推荐。第四步检查License文件位置。打开License Server Administrator的“启动/停止”选项卡里面有个“许可证文件路径”或“服务名称”的配置。如果路径指向了不存在的.lic文件肯定启动不了。把许可文件复制到License Manager安装目录下的Program Files\ArcGIS\License10.x\ 或 Common Files\ArcGIS\License Manager\ 中重新读取。还要提醒一句杀毒软件是隐藏杀手。很多安全软件会把License Manager的守护进程拦截掉安装完第一时间先加白名单再启动服务。我遇到过的情况是自动更新Windows Defender后License服务突然挂了手动启动报错“Sentinel RMS License Manager无法启动”把Defender的实时保护临时关闭后重启服务就好了。1.2 10.8界面发虚和版本选择一次说清楚ArcGIS 10.8在Win10/Win11的高分屏上经常界面模糊、字体发虚这是典型的DPI缩放问题。解决办法不复杂找到ArcMap的exe比如arcmap.exe右键属性——兼容性——更改高DPI设置——勾选“替代高DPI缩放行为”缩放执行方式选“应用程序”。如果还模糊可以试试“系统增强”。这个设置同样适用于ArcCatalog和ArcScene。顺带说说版本选择这件事。如果是个人学习和做中小项目10.8.2是Desktop时代比较好用的版本稳定、教程多网上资料一搜一大把。但要注意10.8是Desktop系列末代基本不再更新修复补丁。ArcGIS Pro 3.x是未来方向工程化管理、处理性能、制图效果都比Desktop好太多。如果你现在还没被旧项目的历史包袱拖住直接学Pro更划算特别是三维、机器学习模块Desktop完全没法比。但如果你所在单位的老同事们还在用10.2甚至10.0数据、工具箱、mxd工程文件都是老格式那我建议新老版本共存别急着全面迁移。10.2和10.8可以装在同一台机器上但License Manager不能同时启用两套需要切换服务。Pro可以跟Desktop共存注意Pro 3.x打开时会自动转换mxd转换前一定备份。还有一个安装细节被忽略得多安装路径和用户名不能带中文字符否则后续所有工具都容易报莫名其妙的“Unable to connect to database server”或者工具执行失败。我见过太多同学把软件装在D:\GIS软件\ 下面ArcToolbox里跑什么工具都失败最后发现是路径里有中文。这个坑血的教训。2. 数据导入导出CAD转换的坑我替你们踩完了2.1 CAD导入ArcGIS文字乱码问题往往出在“字符集”做规划设计、测绘项目的人几乎天天跟CAD打交道。把DWG导入ArcGIS后大量的文字变成“”或者一堆拼音字母这个场景太经典了。CAD里的中文文字乱码根源多数是编码不匹配。CAD早期版本用的编码方式和ArcGIS默认读取方式对不上尤其是CAD中用SHX大字体比如gbcbig.shx写的汉字到ArcGIS里就是乱码。我试过几种方案按成功率排方案一在CAD端预处理。打开图纸后用 AUDIT 命令修复图形错误然后用 ETRANSMIT 打包图纸和字体文件。最关键的一步如果图纸里的中文是“多行文字MTEXT”尽量转成“单行文字TEXT”或者把文字炸开Explode。多行文字在导入时最容易出编码问题。方案二用ArcGIS自带的“CAD转地理数据库”工具。ArcToolbox——转换工具——转为地理数据库——CAD转地理数据库。导入后选择Annotation要素类右键查看发现Text属性里其实还有文字内容只是显示乱码那就可以在图层属性——符号系统里手动改字体或者用字段计算器重新编码。方案三终极方案用FME或者其他专业转换工具转中间格式。把DWG转成GIS-friendly的格式再进ArcGIS虽然多了一步但稳定。我个人的实操心得是CAD数据进GIS前先养成分层导出的习惯。比如水系、道路、房屋、注记分别导出这样能少处理很多麻烦。别拿着一整个总图直接拖进ArcMap。2.2 转CAD后地类没有本质上是数据结构不匹配ArcGIS要素类转CAD最常见的抱怨是导出的DWG里只有图形地类名称、属性编号全没了或者转出来的地类符号对不上。这个问题的根源要理解CAD不像GIS有属性表DWG对象上默认不携带属性。ArcGIS转CAD时如果要保留属性有两种路径路径一把文字字段显示成注记再转。在ArcMap里用“标注转注记”将地类名称转成Anno要素类再连同面数据一起“导出为CAD”。这样DWG里会生成独立的文本对象位置跟面一致CAD打开能看到地类文字。缺点是属性仍然是文本不是真正的属性数据。路径二导出CAD时勾选扩展属性。在“导出为CAD”工具的“要素类”参数里将需要保留的字段勾选加入输出。配合“输出类型”选择“AutoCAD 2004/2007/2010”等较新版本然后用CAD的“特性”面板Ctrl1看对象扩展数据能找到属性值。但这条路径很多人操作不成功因为CAD端还要安装数据浏览插件才能直观看到XDATA很多甲方没有。转CAD后地类符号不对则是CAD图层和线型样式映射的问题。建议在导出前先在“CAD制图设置”中定义图层到对象的映射表把地类代码映射到对应的CAD图层名和颜色。这个设置保存在ArcMap的“导出为CAD”对话框里很多人在这一步偷懒导出后就傻眼。我的建议是如果项目要求把GIS成果交付给CAD团队最好先跟对方确认交付标准再写一个固定的“GIS转CAD流程脚本”用ArcPy把字段转注记、图层映射、导出全部自动化。一次写好后面天天能省时间——这是写在这个流程里性价比最高的一件事。2.3 ArcGIS导出Excel表别忽视字段名和日期格式ArcGIS属性表导出Excel用的工具是“表转Excel”ArcToolbox——转换工具——Excel——表转Excel或者右键图层——打开属性表——表选项——导出选择“仅所选记录”导出用“导出表到Excel”选项。实际中两个高频问题第一字段名过长或含特殊字符导出后在Excel里显示不全或直接报错。解决方案是导出前先把字段名改成英文短名或者用“别名”代替。如果只是想给不会GIS的甲方领导看成果干脆用“导出——以DBF格式导出”再用Excel打开DBF也不容易报错。第二日期类型字段导出后变成数字串。因为你用的是Access或Excel环境下的ODBC驱动ArcGIS内部存储日期序号被直接暴露了。解决方法是导出前把日期字段用“字段计算器”转成文本字符串格式如YYYYMMDD或者导出后Excel里用“分列”功能处理。顺便提一下ArcMap的属性表里字段使用“双精度”类型时小数点前的0不显示比如0.5显示成“.5”这个问题在导出Excel后也可能存在。可以在“表属性——字段”中选定数字类型字段点击“数字格式”把“舍入”设置为“0.000”或者干脆用文本函数补齐前导0例如%02d % [字段]这类表达式不同版本语法有差异用的时候先小范围试验。3. 坐标系与空间量算错了这一步后面全是白干3.1 影像改坐标系统“定义投影”和“投影”不是一回事这是新人最容易混淆的概念。很多人在ArcToolbox里看到“定义投影”和“投影”以为差不多结果改了之后要么发现坐标没变要么数据跑到地球对面去了。我一句话说透定义投影Define Projection是给数据“贴标签”告诉软件这份数据是什么坐标系它不改变任何坐标值。投影Project才是真正的数学变换把坐标从A坐标系换算到B坐标系。如果你拿到的影像没有坐标系信息属性——源里显示“未知”或“Undefined”第一步应该用“定义投影”指定正确的坐标系。但问题是你怎么知道它原本是什么坐标系看来源。国家标准的CGCS2000地方测绘成果可能是西安80或北京54无人机原始POS数据可能是WGS84。用错了“贴错了标签”后面再投影全是错的。如果是把影像从WGS84改成CGCS2000或者其他投影要用“投影栅格”数据管理工具——投影和变换——栅格——投影栅格。注意投影栅格只支持少数几种重采样方法一般选“双线性”或“三次卷积”不要选“最近邻”除非是分类数据。有一次客户发来一份影像说“坐标偏移了几百米帮忙改一下”。我打开一看数据有WGS84标签但实际坐标值却是CGCS2000的平面坐标。这种不是坐标系转换能解决的必须“定义投影”改成CGCS2000再动态投影显示才对上。这个案例值得记住先看坐标值和实际位置的匹配情况再决定是定义还是投影顺序反了会越搞越乱。3.2 空间量算结果离谱先看看数据是不是“地理坐标系”地图上量个面积、算个长度结果是0.000几这样的数字或者大得离谱原因通常是数据是地理坐标系经纬度直接量算出来的单位是“平方度”而不是平方米。空间量算必须在“投影坐标系”下进行因为只有投影坐标系的X、Y单位才是米。解决思路两个思路一临时切换。在ArcMap中右键数据框——属性——坐标系选一个适合当地的投影坐标系比如北京54、CGCS2000的3度带高斯投影。前提是数据本身带正确的坐标系定义ArcMap会做动态投影量算结果会按数据框坐标系返回。思路二永久转换。用“投影”工具把要素类真正转成投影坐标系另存为新数据。后续所有计算、叠加分析都基于新数据最稳妥。还有一个小工具很实用“添加几何属性”数据管理工具——要素——添加几何属性可以直接给属性表新增“面积”“长度”等字段并且可以指定“面积单位”为平方米或公顷。批量统计时就不用一个个打开“计算几何”了。实际项目里做土地调查或国土空间规划面积统计结果跟“三调”口径对不上八成就是坐标系或面积计算方法问题。面积计算要明确用“椭球面积”还是“平面面积”不同项目要求不一样出成果前先沟通清楚避免白跑一遍。3.3 ArcGIS裁剪影像的“黑边”问题裁剪影像栅格裁剪在ArcGIS里有两个工具一个是“数据管理工具——栅格——栅格处理——裁剪”一个是“提取分析——按掩膜提取”。用不对的时候裁剪出来的影像四周是一大片黑色。黑边本质是NoData值被显示成黑色。解决逻辑很简单把背景值设置为NoData或者把NoData值设置为“无颜色”显示。方法一用“复制栅格”工具重新生成一份栅格在“NoData值”参数里手动指定比如0或255输出后黑边就没了。方法二在ArcMap图层属性——符号系统——分类——显示背景值把NoData颜色设为“无颜色”只是视觉隐藏导出图片时干净但数据值还在。方法三用“按掩膜提取”时注意掩膜范围要精确别让掩膜边界外产生大片新栅格区域。处理Landsat或Sentinel影像时背景通常是0或负值这些值不是地物反射率计算NDVI前最好先做掩膜或设置NoData不然算出来的结果会有大片异常值。这是我做植被覆盖度时反复强调的第一件事。3.4 字段小数点前不显示0数字格式的坑这个坑在出图、出表时特别恼火“0.56”显示成“.56”“0.02”显示成“.02”。不是数据错了是显示格式默认没加前导零。处理办法在图层属性——字段——选择对应字段点“数字格式”进入Number Format对话框数值选项里把“小数位数”设成“2”且勾选“显示千位分隔符”左侧的“始终显示前导零”之类的选项。不同版本术语有差异核心就是让格式从“#.#”变成“0.0”这种。如果是字段计算器直接生成显示字符串可以用Python表达式{:.2f}.format( !字段! )转成文本后右对齐显示保证0不丢。做成果表格时用这种方式处理文本字段导出的Excel也不会有0丢失的问题。这个细节在规划成果、资源调查报告中经常被专家质疑“你们的数值格式怎么不统一”很多核对意见就是这么来的。4. 制图与符号化图面干净整洁的小细节4.1 地类符号太密怎么办先分清标注、注记和制图表达做土地利用现状图、林业一张图时面状地类符号又密又杂乱。这里的“密”有两个来源一是地类界线太密二是内部的填充符号或文字标注太多。得到图面清爽的成果先理解三种机制的区别标注Label动态生成自动避让但位置不固定缩放时重新排。 注记Annotation静态文本存储在数据库里位置锁定可以单独编辑。 制图表达Representation基于规则的面填充、边界样式不会随比例尺变形走样。如果只是视觉上太密优先调标注避让规则。右键图层——属性——标注——放置属性选择“每个要素放置一个标签”“移除冲突”勾选。还可以在“符号——高级——要素权重”里提高边界线的权重让标注避开边界。如果填充符号比如林班里的斜线太密在符号选择器里调整“颜色”“间隔”或者换一种更稀疏的填充样式。面填充图案的间距是符号本身的属性误改要素几何是没有用的。如果是出图时符号自动压盖太多可以试试在布局视图里调整比例尺或者使用“简化建筑/面”这类制图综合工具处理后出图。4.2 修改图例名称和“图例项”断开连接出图时图例默认用的是“图层名称”。你明明在内容列表里把图层改成了“第三次国土调查地类图斑”图例里却还是显示数据库里的原始名称。这是因为图例项和图层的名称是动态关联的。解决办法双击图例——图例属性——项目选项卡——选中对应图层——在“图例项”里点“断开连接”。断开后就可以手动输入任意文字。注意断开连接的图例项不再跟随图层名称更新如果后来改了图层名图例不会自动变。另一个常见问题是图例中出现了一些不想显示的图层。在“图例属性——项目——仅显示当前图层”或“仅显示地图中的图层”里设置。Layout里有时会出现一堆空图层占位原因就是一些图层被关闭显示却仍然在图例里。4.3 ArcGIS画线步骤和“不要压盖线”的操作要领画线的标准操作打开ArcMap右键目标要素图层点击“编辑要素——开始编辑”在“创建要素”窗口里选目标图层和构造模板下拉选择“线”然后用鼠标在图上点击顶点双击或按F2结束。加捕捉Editor——捕捉——边、顶点、端点是必须的否则手画的线很难自动闭合到已有边界上。但真正要做的是“不压盖”。比如做地块边界几个相邻地块的公共边只能画一次其余地块要去“追踪”已有边线——用“追踪”构造工具时鼠标沿着已有边界移动Arcgis会自动捕捉并复制线段。这个功能熟练掌握后既保证不压盖又不会产生缝隙。质检时用“拓扑”检查。在Geodatabase要素数据集下创建拓扑添加“不能重叠”、“不能有缝隙”规则。如果只是线数据“不能自重叠”“不能相交”等规则可以用来检查压盖线。我见过不少人在SHP数据上做拓扑检查发现并没有“拓扑”菜单。因为SHP不支持拓扑规则必须先转成地理数据库要素集GDB才能建拓扑。这是又一个基础但高频的坑。4.4 检查尖锐角插件该用工具替代肉眼这个需求在地类图斑质检里特别常见某些图斑边缘折角太小形成尖锐角按规范需要排查修改。如果靠肉眼一个个看几万个图斑能看瞎。网上有“检查尖锐角”插件原理很简单遍历每个面要素的所有折点取相邻两条线段计算夹角小于设定阈值如10度或15度时输出为错误标记点或列表。这个逻辑不值得找插件自己用ArcPy脚本也能写大致流程是用“折点转点”工具把面要素的折点转成点记录每个折点所在的要素编号和顺序然后用“点距离”或逐线段计算向量夹角最后把小于阈值的折点输出。在ArcGIS Pro里可以用“几何检查”工具Data Reviewer的几何检查器添加“尖角检查”规则直接生成质检表。用工具检查只是第一步问题是检查出的尖锐角要不要改、怎么改这类问题一般要在拓扑编辑环境下用“整形要素”工具微调边界不能大动边线否则会影响相邻图斑。我建议把阈值设置成上级检查标准里的最小角度值另外统一用工具输出Excel便于留痕。5. 常用数据处理与空间分析实操中的高频场景5.1 ArcGIS制作植被覆盖度的完整计算链路植被覆盖度是遥感应用的基础成果ArcGIS里完全可以做。网上教程多但很多人做的结果全是0到1之外的异常值或者一片花斑。先说标准流程基于NDVI的像元二分模型。第一步准备数据。我用Landsat 8 OLI影像做说明红波段是B4近红外是B5。如果没做大气校正至少做辐射定标和表观反射率转换否则NDVI数值整体偏移。第二步计算NDVI。用栅格计算器Float(红色波段 - 近红外) / Float(红色波段 近红外)。这一步注意用Float否则整数除法会把结果截成0。第三步确定纯裸土NDVIsoil和纯植被NDVIveg。常见做法是取NDVI累计频率2%和98%的值作为土壤和植被端元。不要在0和1之间硬取因为实际数据很少有完全为0或1的像元。第四步计算植被覆盖度(NDVI - NDVIsoil) / (NDVIveg - NDVIsoil)同样注意括号和Float。第五步重分类和统计。把覆盖度按0.2、0.2-0.4、0.4-0.6、0.6-0.8、0.8等区间重分类成不同等级然后用“面积制表”Zonal Tabulate Area统计每类面积。做这个流程的常见坑一是输入影像有黑边或NoData没处理统计结果虚高二是NDVI计算后出现负值很多是水面或云影根据区域需要掩膜掉三是把NDVIsoil和NDVIveg写反导致覆盖度大面积负值。建议算完先做一个分布直方图看看峰值是不是在0.4-0.8左右偏离太多就该回查中间步骤。5.2 概化工具和提取流域边界顺序不要反“概化”Generalize工具在ArcToolbox里属于制图综合工具作用是减少线或面的折点数量让边界更平滑、数据量更小。用在流域边界提取后处理时很常见。但要注意概化工具的“容差”参数是最大允许偏移距离容差越大边界越平滑但可能会牺牲细节甚至出现自相交或拓扑错误。我建议概化前复制一份原始数据概化后用“检查几何”工具验证。提取流域边界集水区的完整顺序是对DEM进行预处理填洼Fill——先填洼不填洼流向会卡在坑里。计算流向Flow Direction。计算流量Flow Accumulation。设定集水面积阈值流量阈值提取河网。阈值越小河网越密一般根据流域面积和经验调整。将栅格河网矢量化Stream to Feature。以出水口位置为“倾泻点”用分水岭Watershed工具提取集水区。把栅格集水区转为面要素Raster to Polygon再做概化、平滑。这里的坑第一DEM必须是投影坐标系经纬度不适合做水文分析算出来的流量方向有偏差。第二如果DEM边界有NoData或无值区先做填洞处理否则分水岭会在无值区断掉。第三填洼不是万能的在平坦地区比如平原城市填洼后会生成大量平行水流线最好结合“条件函数”和实际河网做修正。第四出水口位置尽量画在主干河道上不要画在支流末端否则提取的流域范围明显偏小。5.3 ArcGIS运行进度框卡住不一定是卡死很多工具跑起来后进度条长时间停留在10%或某个百分比甚至显示“已用时间XX:XX”。这时先别急着关进程ArcGIS的进度框本身刷新频率不高尤其是在处理大栅格时进度条可能长时间不动但后台还在计算。判断真假卡死的办法打开Windows任务管理器看ArcGIS进程如ArcMap.exe、ArcGISPro.exe的CPU和内存占用。如果CPU活跃说明工具在运行如果进程无响应且内存无波动可能真卡了。对于栅格数据运算我建议把“后台处理”关掉地理处理选项里取消“启用后台处理”这样工具会以前台方式运行进度框更及时真卡了也能立即定位。如果经常跑大数据卡死优先检查输入数据的坐标系是否统一、空间范围是否合理还有临时目录空间是否充足。ArcGIS的临时文件默认放在系统C盘Temp下C盘满了所有工具都可能突然失败。把环境设置里的“当前工作空间”和“临时工作空间”改到大数据盘是基本操作。6. 在线地图与二次开发进阶路上的经验6.1 ArcGIS加载在线天地图安装步骤和坐标系匹配在ArcGIS里调用天地图作为底图是很多规划、国土项目的标配。流程不算复杂但细节多。第一步申请天地图的Key。到天地图官网注册开发账户创建应用申请TKtoken。个人学习申请一个免费的足够。第二步添加WMTS服务。在ArcCatalog的目录树里找到“GIS服务器——添加WMTS服务器”填服务地址。天地图的WMTS地址形如http://t0.tianditu.gov.cn/wmts?SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERvecSTYLEdefaultTILEMATRIXSETwFORMATtilestk你的KeyLayer用vec是矢量底图用img是影像底图用cva是注记地名层。一般建议至少叠加两个图层底图注记。添加成功后把注记图层放在底图上图面效果就是“影像地名”的标准底图。但ArcMap 10.x对WMTS的支持并不完善我在10.4上就遇到连接成功后地图窗口空白的情况。这种时候有几个替代方案一是下载天地图插件天地图官方的ArcGIS插件二是用“添加数据——从路径添加——输入WMTS URL”试试三是如果条件允许直接用ArcGIS ProPro对WMTS/OGC服务的支持明显更好。坐标系匹配是重头戏。天地图服务在“w”层级里用的是CGCS2000 Web MercatorEPSG:3857在很多图层里实际表现为WGS84 Web Mercator。ArcMap里如果你的数据框是WGS84地理坐标系会发现底图和本地矢量数据对不上或者影像模糊。解决方法是把数据框坐标系设为CGCS2000 Web Mercator或WGS 1984 Web Mercator让ArcGIS动态投影对齐。如果位置还是偏移检查本地数据本身的坐标系定义对不对。6.2 ArcGIS API for JS部署和REST服务目录浏览ArcGIS API for JavaScript是一套前端开发库初级开发者在部署上踩的坑比写业务代码还多。部署步骤大体是从Esri官网下载对应版本的API压缩包3.x版本是自托管部署4.x同样支持自托管。解压放到Web服务器根目录下比如Tomcat的webapps/arcgis_js_api目录。修改init.js和dojo.js中的baseUrl把官方的https://js.arcgis.com/4.x/路径改成你自己的服务器路径。以4.x为例修改[HOSTNAME_AND_PATH_TO_JSAPI]dojo/dojo.js为http://localhost:8080/arcgis_js_api/library/4.x/dojo/dojo.js。页面里引用时同样把init.js切换到自己的路径。部署后常见报错404资源找不到。原因多半是路径大小写写错注意library、dojo等目录名大小写敏感或者服务器MIME类型没配置.js、.css、.json要能被静态读取。另一个高频问题是浏览器控制台报“跨域请求被阻止”如果API是和地图服务分属不同域名需要配置CORS或者把API放在与ArcGIS Server同域下。发布服务后打开REST服务目录一般用http://localhost:6080/arcgis/rest/services。这个页面打不开时先看ArcGIS Server服务有没有启动浏览器能不能访问6080端口。如果地图服务发布了但Rest目录里看不到去ArcGIS Server Manager里确认服务“已启动”以及文件夹权限是否允许所有人查看。还有一个不是BUG但很容易被忽略的点在ArcMap中准备地图文档时必须在“共享为——服务”前把地图文档“属性——范围”里设置好“全图范围”否则发布后Rest目录预览是空的或只显示部分范围。如果条件允许新版项目可以优先考虑ArcGIS Maps SDK for JavaScript4.x之后产品线改名或ArcGIS Maps SDK for Native移动端。它的组件化、三维能力比老版本强很多但学习资料相对少团队如果刚开始还是从成熟的API for JS 4.x入手更稳。6.3 ArcGIS Pro 3.7连接PostgreSQL的注意点ArcGIS Pro可以直接连接PostgreSQL数据库把要素类存到PostGIS或企业级地理数据库中。但连接中的“版本匹配”“驱动安装”“数据格式”三件事做好了就不太会出问题。第一件驱动。PostgreSQL连接是需要本地客户端的ArcGIS Pro安装目录会自带一部分版本匹配的libpq但如果是比较新的PostgreSQL版本自带的客户端库版本过旧会导致连不上。解决方式是从PostgreSQL安装包里复制libpq.dll及相关依赖到ArcGIS Pro的数据库支持目录或者安装对应版本的PostgreSQL客户端工具。这一步很多人想不到报错“Unable to connect to database server”时先检查的是端口和IP但大概率是驱动不兼容。第二件扩展。如果要把ArcGIS的要素类数据直接存进PostgreSQL目标数据库需要启用空间扩展。PostgreSQL一般用PostGISArcGIS Pro在创建企业级地理数据库时会要求指定数据库平台并写入地理数据库系统表如果要使用PostGIS则需要先在数据库中执行CREATE EXTENSION postgis。数据库用户要有对应的权限尽量用超级用户建库避免后续权限恶心人。第三件坐标系和数据类型。不要在PostgreSQL里把要素类建成word反转或者类型不一致的表再让ArcGIS读应该让ArcGIS自己来创建或导入要素类。如果是对已有空间表的注册要在ArcGIS Pro里“注册到地理数据库”否则图标不识别。连接成功后在目录树“数据库”下新建数据库连接填主机、端口、数据库名、账号密码测试连接。注意这里填的是“数据库名”不是“模式名”。我见过有人把模式名填进去一直报连接失败。6.4 关于Add-in插件和反编译的几句实在话ArcGIS的Add-in插件.esriAddIn文件本质是个压缩包里面包含config.xml、dll、图片等资源。用解压工具打开后能查看config.xml了解插件配置。很多人拿到别人插件后想“研究”别人的实现方式用dnSpy或ILSpy打开dll看内部逻辑这种做法在技术圈里很常见但只建议对开源或自己公司开发的插件这么干涉及商业插件时必须尊重版权和许可协议。与其纠结反编译别人的插件不如自己动手写一个。Desktop版本用ArcObjects SDK在Visual Studio里装好Add-in模板写代码逻辑其实不难。Pro版本则是ArcGIS Pro SDK for .NET模板、文档都成熟做一个简单的“一键检查尖锐角”工具半天就能跑通。自己会写比依赖网上找的插件靠谱得多需要改阈值、改输出格式也方便。值得多说的体验是ArcGIS的插件开发、自动化处理核心价值不在于写多复杂的程序而在于把高频重复的数据检查工作流程固化下来。写一次脚本团队里其他人就不会再手动画线、肉眼查尖锐角了。最后再说点真话写了这么多说点心里话。ArcGIS这套体系非常庞大工具多、概念多但很多坑本质上都是底层概念没吃透造成的。坐标系怎么定义、数据格式怎么转换、拓扑规则怎么建弄懂这些底层逻辑比记住一百个快捷键有用得多。我的习惯是每遇一个报错就把报错信息、截图、解决过程记到一个文档里。坚持几年你会发现自己的“排错效率”提高一大截。这篇避坑指南我会持续更新碰到新的高频问题就补充进来。最后再分享一个小技巧每次处理矢量数据前养成先检查坐标系、先做备份、先在小范围试验三步习惯能帮你提前避免一半以上的返工。希望这篇内容能帮你少走弯路有更好用的技巧也欢迎你分享给我咱们一起把坑都填平。
返回列表