1. 从Excel表格到地图上的点:为什么你需要这个技能?
如果你手头有一堆带地址或者经纬度的数据,比如客户地址、门店位置、甚至是野外调查的采样点,它们通常都躺在Excel表格里。这些数据在表格里只是一行行冰冷的数字和文字,但你知道它们每一个都对应着地球上某个具体的位置。怎么才能让这些数据“活”起来,在地图上直观地展示出来,进行空间分析和可视化呢?这就是我们今天要解决的核心问题:把Excel里的经纬度数据,变成ArcGIS里可以操作的、标准的Shapefile点文件(.shp)。
我见过太多朋友,包括刚入行的新手和一些有经验但不太熟悉GIS的同事,在这个环节上踩坑。最常见的场景就是:辛辛苦苦整理好了数据,一导入ArcGIS,要么点全飞到不知道哪个大洋去了,要么干脆导入失败报错。问题往往出在数据准备的细节和坐标系的理解上。这个过程本身并不复杂,但就像做菜一样,食材(数据)处理不好,再好的厨具(软件)也做不出美味。这篇文章,我就结合自己这些年处理各种稀奇古怪数据的经验,手把手带你走一遍从Excel数据准备,到ArcGIS里成功生成shp点的全流程。我会把那些容易忽略的“坑”和关键设置都讲清楚,目标是让你看完就能自己动手,一次成功。
2. 数据准备:磨刀不误砍柴工
很多人觉得数据准备就是打开Excel输几个数,其实这里面的门道决定了后续90%的成功率。这一步没做好,后面在ArcGIS里怎么折腾都可能白费功夫。
2.1 Excel版本与格式:兼容性是第一道坎
首先得说说ArcGIS和Excel的“版本恋情”。这是一个历史遗留问题,但非常重要。我用的主力版本是ArcGIS 10.8,但这个问题在较早的版本里尤为突出。ArcGIS 10.3及以前的版本,默认只支持老旧的Excel 97-2003文件格式,也就是后缀为 .xls 的文件。 如果你用的是新版Excel(.xlsx或.xlsm),直接去添加,ArcGIS很可能“不认识”它,在目录列表里根本看不到。
怎么办? 最稳妥的办法,不管你现在用哪个版本的ArcGIS,都养成一个好习惯:在保存准备用于导入的Excel文件时,选择“另存为”,然后在“保存类型”里下拉,找到 “Excel 97-2003 工作簿 (*.xls)” 并保存。这样就确保了最大程度的兼容性。我建议专门为GIS导入准备一个.xls版本的原数据文件,而你的主数据文件(.xlsx)则用于日常维护和计算,两者分开管理。
2.2 表格内容编排:细节决定成败
现在,我们打开这个.xls文件,来看看数据该怎么摆。这可不是随便填填就行。
第一,表头(字段名)的命名规范。 这是新手最容易栽跟头的地方之一。ArcGIS对Shapefile的字段名有比较严格的限制:
- 长度限制:最好控制在10个英文字符以内。虽然有些情况下能显示更长的中文,但为了绝对稳定和兼容其他GIS软件,我强烈建议用简短的英文或拼音。例如,用“Customer”代替“客户名称”,用“Sales”代替“销售额”。如果非用中文,千万不要超过4个汉字,并且绝对不要使用空格。
- 字符限制:不能以数字开头,不能包含特殊符号,比如减号(-)、点(.)、方括号([])、引号(‘ “)等。下划线(_)通常是安全的。像“2024-销售额”、“店名.1”这样的字段名,一定会导致导入错误。
- 我的建议:就用简单的英文单词或缩写。例如,经度用“Lon”或“Longitude”,纬度用“Lat”或“Latitude”,名称用“Name”,地址用“Address”。
第二,经纬度数据的格式。 这是核心中的核心。你的Excel里,经度(X坐标)和纬度(Y坐标)必须是独立的两个数字列。
- 格式设置:在Excel里,选中这两列,右键选择“设置单元格格式”。不要用“常规”或“文本”!选择“数字”选项卡下的“自定义”。在类型里,你可以输入
0.000000。这里的小数点后位数,取决于你数据的精度。如果是GPS手持机采集的,可能0.000000(6位小数)就够了;如果是高精度测绘数据,可能需要更多位。这个设置是为了确保数字以浮点数的形式存储,而不是被当成文本或整数。 - 数据本身:请确保你的经度值在 -180 到 180 之间(东经为正,西经为负),纬度值在 -90 到 90 之间(北纬为正,南纬为负)。对于中国范围内的数据,经度大约在73°E到135°E之间,纬度大约在4°N到53°N之间。如果你看到有“116.123456”这样的值,那是正确的十进制表示法。千万不要出现“116°12‘34.56”E”这种度分秒格式,ArcGIS无法直接识别,必须提前转换成十进制小数。
第三,其他字段的格式。 除了经纬度是数字,其他很多信息,比如门店编号、身份证号、电话号码等,如果是一串数字但不参与计算,我强烈建议将其设置为“文本”格式。为什么?因为如果以数字格式存储,像“001”这样的编号,Excel会自作聪明地显示为“1”,前面的零就丢了,导入ArcGIS后也会丢失。设置为文本格式,就能原样保留。方法很简单:选中列,在“设置单元格格式”里选择“文本”,或者在输入数字前先加一个英文单引号 ‘,例如 ‘001。
3. ArcGIS中的转换实战:一步步带你走
数据在Excel里收拾利索了,现在打开ArcGIS。我以最常用的ArcMap界面为例,ArcGIS Pro的操作逻辑类似,工具名称也差不多。
3.1 第一步:将Excel表转换为ArcGIS识别的表
在ArcMap中,你不能直接对.xls文件进行空间操作。首先需要把它转换成ArcGIS内部的地理数据库表(Geodatabase Table)或dBASE表。
- 打开 ArcToolbox。
- 依次找到 转换工具 (Conversion Tools) -> Excel -> Excel转表 (Excel to Table)。
- 在打开的工具窗口里:
- 输入Excel文件:浏览找到你准备好的那个.xls文件。
- 工作表:如果你的Excel里有多个工作表(Sheet),在这里下拉选择包含数据的那一个。通常就是
Sheet1$。 - 输出表:指定一个输出位置和名称。我习惯把它放在默认的地理数据库(.gdb)里,这样管理起来方便。
- 点击“确定”运行。
常见问题与排查: 如果工具运行报错,比如出现“错误000864”或“无效的表名”之类的提示,99%的原因要回溯到我们上一章讲的数据准备。
- 检查表头:立刻回去检查Excel的字段名,有没有特殊符号?有没有以数字开头?有没有超长?
- 检查数据格式:有没有某些单元格看起来是数字但其实是文本(左上角带绿色小三角)?或者反过来?
- 检查工作表名:工作表名称里是否包含了非法字符(如空格、横杠)?可以尝试将工作表改名为简单的“Data”。
转换成功后,你会在ArcMap的内容列表(Table Of Contents)里看到这个新添加的表。右键点击它,选择“打开”,可以查看数据是否完整导入。
3.2 第二步:基于经纬度创建点要素
这是将表格数据“空间化”的关键一步。我们有了带X和Y坐标的表,现在要让它在地图上显示出来。
- 在内容列表里,右键点击你刚刚转换成功的那个表,不要点错成.xls文件本身。
- 选择 “显示XY数据…” (Display XY Data)。
- 会弹出一个非常重要的设置窗口:
- X字段:这里选择你的经度字段。记住,在GIS和大多数数学规范里,X对应经度(Longitude)。
- Y字段:这里选择你的纬度字段。Y对应纬度(Latitude)。
- 坐标系:这是整个流程中最关键、最容易出错的一步! 点击旁边的“编辑…”按钮。
3.3 第三步:坐标系选择:绕不开的核心知识
点击“编辑”后,会进入空间参考属性窗口。这里你需要告诉ArcGIS,你提供的这一对经纬度数字,是基于哪个坐标框架测量出来的。
核心原则:如果你的原始数据是GPS采集的或者从互联网地图上获取的经纬度(十进制小数),那么它们几乎肯定是基于 WGS 1984 地理坐标系。 在搜索框里输入“WGS 1984”,在结果中通常选择 “WGS 1984” (其权威代码是 EPSG:4326)。选中它,点击确定。
千万要避开的坑:
- 不要选择任何带“Projected”字样的坐标系:比如“WGS 1984 Web Mercator”或者各种带“UTM Zone”的。那是投影坐标系,是把球面坐标投影到平面时用的。如果你用投影坐标系的参数去解释一组地理坐标(经纬度),点就会飞到错误的地方,或者软件直接报错。
- 如果你的数据来源特殊:比如来自某些老旧工程图纸或特定测绘项目,提供了明确的坐标系信息(如“Beijing 1954”、“CGCS2000”),那么你需要在这里选择对应的地理坐标系。这一点必须向数据提供方确认清楚。
设置好坐标系后,一路点击“确定”。ArcMap会基于你表格中的每一行数据,在当前的视图窗口中生成一个临时的点图层(通常叫“事件”)。这时候,你应该能看到你的数据点正确地显示在了地图上(可能需要缩放或平移一下视图)。
4. 导出为永久Shapefile文件
上一步生成的“事件”图层是临时的,关闭文档就会消失。为了后续反复使用和分析,我们必须把它导出为标准的Shapefile格式。
- 在内容列表里,右键点击这个临时点图层(就是刚刚生成的那个)。
- 选择 “数据” -> “导出数据…”。
- 在导出数据对话框中:
- 导出:选择“所有要素”。
- 输出要素类:点击文件夹图标,选择你想保存的路径,并给文件起个名字,比如
Store_Locations.shp。注意,Shapefile实际上是由.shp,.shx,.dbf等好几个文件组成的,你只需要指定主文件名,ArcGIS会自动生成一整套。 - 保存类型:确保是“Shapefile”。
- 点击“确定”。
导出完成后,系统会问你是否将导出的数据添加到地图中,选择“是”。现在,内容列表里就有一个永久的、绿色的点图层了。你可以右键打开它的属性表,检查一下所有字段是否都完整地从Excel迁移过来了。
5. 进阶技巧与疑难排错
走完上面四步,基本流程就通了。但实际工作中总会遇到一些特殊情况,这里分享几个我常遇到的进阶问题和解决方法。
5.1 处理带分隔符的文本文件(CSV/TXT)
有时候数据不是Excel,而是CSV或TXT文件。其实原理完全一样,甚至更简单。在ArcGIS中,你可以直接右键点击文件夹连接 -> 添加数据,文件类型选择“文本文件”或“所有文件”,就能直接添加CSV。添加后,它会在内容列表里显示为一个表,后续的操作(右键->显示XY数据)和Excel转过来的表一模一样。同样需要注意字段名规范和坐标格式。
5.2 经纬度数据“漂移”或聚在一起怎么办?
如果导出的点全部堆在同一个位置(比如都在0,0坐标附近),或者跑到了奇怪的地方:
- 首先复查坐标系:99%是坐标系选错了。确认你选的是“WGS 1984”这类地理坐标系,而不是任何投影坐标系。
- 检查X、Y字段是否选反:经度(东-西方向)应该对应X字段,纬度(北-南方向)对应Y字段。如果搞反了,点会出现在错误的大陆。
- 检查数据值:确认经纬度数值的单位是“度”,并且范围合理。把纬度当经度用,数值超过90,肯定会出错。
5.3 属性表字段丢失或乱码
导出为Shapefile后,如果发现中文内容变成乱码,这是因为Shapefile的.dbf文件对中文编码支持的老问题。一个解决办法是,在导出前,在ArcMap的“表格选项” -> “导出”时,可以选择编码(如果版本支持)。更稳妥的办法是,在Excel准备阶段,就把中文字段名改成英文或拼音缩写,内容中的中文一般能保留,但为了保险,也可以在导入后,在ArcGIS的字段计算器里进行校对和修正。
5.4 批量处理多个Excel文件
如果你有几十个结构相同的Excel文件需要转换,一个个操作太累。可以尝试使用模型构建器 (ModelBuilder) 或 Python脚本。思路是循环遍历文件夹中的每个.xls文件,重复执行“Excel转表”和“创建XY事件图层”这两个工具,最后合并所有图层。这需要一点ArcGIS Python (arcpy) 的知识,但学会后效率提升巨大。
242



被折叠的 条评论
为什么被折叠?



