简介:地理信息系统(GIS)中,矢量数据以点线面精确表达地理要素,而Shapefile(shp)是应用最广泛的矢量格式之一。通过理解shp的文件结构、坐标系与属性编码,可以高效处理基础地理数据。例如,全国地貌shp数据可作为国土空间规划、生态评价等分析的底图,显著减少预处理成本。在实际应用中,常需进行shp转3dtiles以进入三维场景,或通过渔网分割shp实现网格化统计。此外,shp转CAD、shp转txt等格式转换也属高频需求,而中文乱码、坐标偏移等问题则需借助cpg文件与投影转换解决。掌握这些方法,能大幅提升GIS数据使用效率。
1. 项目概述:这份全国地貌shp数据到底能干什么
做GIS这行,绕不开一份能直接用的基础地理数据。以前想在项目里加一层地貌底图,要么去各种数据网站东拼西凑,要么拿着栅格DEM自己分类提取,费时费力还不一定准。直到我拿到这份“全国地貌分布shp矢量图层数据”,才算是真正省下了一大半的预处理时间。它把全国范围的地貌类型按面要素整整齐齐地切好,平原、丘陵、山地、高原、盆地这些大类以及对应的亚类全部落到矢量图层里,直接用ArcGIS或者QGIS打开就能叠图、统计、出图。
这份数据适合谁用?如果你是做国土空间规划、生态评价、农业区划、地质灾害风险评估,或者单纯想在项目里加一层全国尺度的地貌底图,那它非常合适。做地理教学、区域研究的人也一样能拿它当基础底图。它对新手很友好——不需要懂遥感分类,不需要写代码,拿到shp拖进软件里就能看到结果;对老手来说,它又是一个可以省掉大量重复工作的基础数据源。这份数据的价值在于:不需要再为“全国地貌”这件事专门跑一次数据生产流程,直接在此基础上做分析、出成果。
好,下面我把拿到这份数据后的完整实操过程、技术细节和踩坑记录都写出来。从数据包结构讲到字段含义,从加载到转换,从统计到拆分,尽量把能想到的都覆盖到,尤其是那些网上资料很少讲但实际经常出的问题。
2. 数据整体设计与结构拆解
2.1 shp文件包里的基础构成
很多人拿到shp文件,看到一坨后缀不同的文件就懵了。这里必须先把Shapefile的文件结构说清楚,因为接下来所有操作都离不开这个基础认知。
一份完整的Shapefile,至少由三个文件组成:.shp(几何信息,记录每个面要素的坐标和形状)、.shx(索引文件,让软件能快速定位几何记录)、.dbf(属性表,记录每个面要素的字段值)。这三个文件缺一不可,缺了任何一个,shp都打不开或显示不全。除了这三个基础文件,我这份地貌数据还带了几个额外的辅助文件:
.prj:投影信息文件,记录坐标系和投影参数。没有它,软件会默认用WGS84经纬度坐标来读,很可能让要素位置跑偏。.cpg:字符编码声明文件,里面写的是UTF-8或者GBK,告诉软件用哪种编码去读dbf里的中文属性。这个文件特别容易被忽略,但恰恰是中文乱码问题的根源。.sbn/.sbx:空间索引文件,能加快大数据量的查询速度。.xml:元数据文件,记录了数据的来源、修订日期、坐标系等说明信息。
我把这份数据包里的字段列了个表,方便对照理解:
| 字段名 | 类型 | 说明 |
|---|---|---|
| FID | 整型 | 要素编号,软件自动生成 |
| Shape | 几何 | 面要素,Polygon类型 |
| 一级代码 | 文本 | 地貌大类编码,如P表示平原、Q表示丘陵、M表示山地 |
| 一级类型 | 文本 | 地貌大类中文名,如平原、丘陵、山地、高原、盆地 |
| 二级代码 | 文本 | 细分地貌编码,如P1表示冲积平原、M2表示中低山 |
| 二级类型 | 文本 | 细分地貌中文名 |
| 面积_km2 | 双精度 | 该面要素的面积(单位:平方公里) |
| 周长_km | 双精度 | 该面要素的周长(单位:公里) |
这里要特别说一下“面积_km2”这个字段。有些朋友拿到shp以后,喜欢直接打开属性表,把那列“面积_km2”加起来作为某个区域的地貌总面积,这个做法在这份数据里问题不大,因为数据生产者已经做好了面积预计算。但如果你自己从别的数据源转过来的shp,没有这个字段,那我建议用软件自带的计算几何功能重新算一遍,千万别用默认的Shape_Area字段——那个字段使用的是数据自身的投影坐标系,单位不一定是平方公里,尤其是经纬度坐标系下,它算出来的是度,不是米,数值完全不能用。
2.2 坐标系与投影:这份数据用的是哪一种
打开我这份全国地貌数据,默认加载进来后,我建议第一时间查看它的坐标系。正常情况下,这份数据应该采用CGCS2000国家大地坐标系,投影是兰伯特等角圆锥投影(Lambert Conformal Conic),中央经线105°E,标准纬线25°N和47°N。这套参数是全国尺度数据常用的配置,因为兰伯特投影在中纬度地区变形小,特别适合像中国这样跨纬度范围大的国家。
有朋友拿到shp之后,发现右下角没有显示坐标,或者显示的是度分秒,就以为是数据乱了。其实不是,这是软件读取方式的问题。你在ArcGIS里右键图层,选择“属性—源”,就能看到完整的坐标系描述。如果这里显示的是GCS_WGS_1984,那说明这份数据在发布时保留了原始经纬度坐标,没有套投影。我给两个选择:一是直接沿用WGS84经纬度,适合做全国范围的小比例尺概览图;二是自己重新投影到兰伯特或阿尔伯斯(Albers)等积圆锥投影,适合做面积统计和区域分析。
实际操作中我踩过一个坑:有段时间我拿这份数据跟县域边界做叠加统计,发现面积总是对不上,后来检查了一下,问题出在两者坐标系不一致——地貌数据是WGS84经纬度,县域边界是CGCS2000高斯投影,ArcGIS虽然能实时投影,但计算面积时如果没统一坐标系,结果就会偏差很大。所以跨数据叠加之前,先统一坐标系是铁律。
shp数据做投影转换,我一般用这两条路:
- 在ArcGIS Pro里用“投影”工具,选好目标坐标系,注意要选“投影”,不是“定义投影”——“定义投影”只是给数据打一个坐标系的标签,并不会改变坐标数值,用错的人实在太多了。
- 在QGIS里右键图层,选择“导出—要素另存为”,在CRS那栏选目标坐标系,QGIS会自动做坐标转换,比ArcGIS的流程更直观。
2.3 数据精度与切割粒度
我特别想强调一点:这是一份全国范围的中比例尺数据,不是高精度地籍数据。它的空间分辨率属于“宏观分析可用,微观定位不够”的级别。用它在全国尺度上看地貌格局没问题,做地级市级别的粗略统计也能接受,但你要是想拿它去分析一个村庄或者一块具体的地块,那就不合适了——边界会和实际地形差得比较远,因为制图综合已经把很多小图斑合并掉了。
数据里的面要素切割粒度挺讲究的。地貌类型的边界不像行政区划那样有明显的界碑,它更多是依据坡度、海拔、起伏度这些地形指标划出来的。比如平原和丘陵的界限,通常是按海拔200米左右来切;丘陵和山地的界限,通常看相对高差和坡度。不同数据源的划分标准有细微差异,所以如果你拿这份地貌数据和其他单位的地貌图对比,会发现边界位置不完全一样,这是正常现象,不是数据错了。
3. 拿到shp后第一时间要做的三件事
3.1 正确打开shp文件的方式
先说ArcGIS怎么打开shp。有朋友双击shp文件却没反应,或者系统弹出“找不到可打开的程序”,就来问我。实际上ArcGIS打开shp的正确方式不是双击,而是先启动软件,再在“目录”面板里定位到shp文件所在文件夹,把它拖到地图窗口里。或者用“添加数据”按钮,选择shp文件。ArcGIS作为ESRI的软件,对双击打开这个操作默认支持得不好。
QGIS打开shp就友好得多,可以直接把shp文件拖进QGIS窗口,它会自动加载并匹配坐标系,没有那么多限制。如果拖进来之后图形位置不对,多半是prj文件缺失或损坏,手动设置图层坐标系,选择WGS84或者CGCS2000就可以。
打开以后,先别急着分析,我习惯先做一个目视检查:按属性表里的“一级类型”字段渲染一下,看看平原、山地这些类型是否分布合理——东部平原、西部高原山地,这是大格局,如果颜色分布乱七八糟,比如平原出现在青藏高原腹地,那就要怀疑数据源或者投影出问题了。
3.2 中文乱码问题的根源与处理
打开属性表,发现中文全是“锟斤拷”或者“问号”,这是很多初学者的噩梦。这个问题基本出在cpg文件上。dbf文件本身自带一个编码标记,但如果cpg文件缺失或者内容写错了,软件就不知道怎么解码中文。
我以前处理过一份从网上下载的shp,属性表全是乱码。排查过程是这样的:先用记事本打开cpg文件,发现里面写的是“ANSI”,但实际数据是UTF-8编码,所以怎么读都是乱的。把cpg改成UTF-8,重新打开,属性表恢复正常。
如果你手上那份shp连cpg文件都没有,有两个处理办法:
- 在QGIS里,打开shp时会弹出“选择编码方式”的窗口,手动选UTF-8或GBK,试到属性表显示正常为止。
- 在ArcGIS里没有可视化的编码选择,但可以先把dbf用Excel打开(Excel能按编码读dbf),乱码时用WPS或记事本改编码后另存。这个方法不如在QGIS里处理来得直接,所以遇到乱码我第一个想到的还是QGIS。
3.3 属性表与字段检查清单
打开属性表后,我建议按这个清单过一遍:
- 总要素数量是否跟数据说明一致。比如说明里写了全图7850个面要素,结果你一数只有7600个,那可能是加载时被过滤了,或者是原数据本身有问题。
- 每个字段是否都有值,有没有大量Null。特别是“一级类型”“二级类型”这些核心字段,如果出现大面积空值,对后续统计就是灾难。
- 检查面积字段的最大最小值是否在合理范围。比如最小值是0或者负值,说明有些面要素的自相交或拓扑错误,需要修复。用“修复几何”工具可以批量处理这一类问题。
做完这三步,数据基本处于可用的状态,接下来才进入真正的分析和应用环节。
4. 地貌数据的典型应用实操
4.1 按行政区统计地貌面积占比
这是GIS工作里最常见的需求:想知道某个省、某个市,或者某条河流流域范围内,各种地貌类型各占多少面积。操作逻辑不复杂,但步骤里有不少细节值得注意。
我习惯用ArcGIS Pro的工具箱完成这个任务。先加载行政区划边界和地貌数据,然后执行“相交(Intersect)”工具。注意,这里的“相交”不是简单地把两个图层叠在一起看,而是生成一个新图层,这个图层把两个输入图层的属性都保留下来,几何上按边界重新切割。举个例子,如果一个县域边界横跨了平原和低山丘陵两种地貌,相交之后,这个县会变成两个面要素,一个标注平原,一个标注低山丘陵,面积也按实际切割后的大小重新计算。
相交完成之后,在结果图层上右键,打开属性表,你会发现FID、一级类型、县名这些字段都在一起。接下来做一个汇总统计,我一般用“按属性选择”加“汇总统计数据”的组合:
- 在“摘要统计”工具里,选择“一级类型”作为分组字段,选择“面积_km2”作为统计字段,统计类型选“总和”。
- 输出的表格里就会列出每种地貌类型在该区域内的总面积。
- 如果想按县域分别统计,那分组字段就不只选“一级类型”,而是先按“县名”分组,再按“一级类型”分组,输出结果就是每个县每种地貌的面积矩阵。
这个操作里的关键点是:统计之前一定要确保数据在等积投影坐标系下。我前面提过,如果数据是WGS84经纬度,直接用面积字段会出问题。在相交之前,先把源数据用“投影”工具转成Albers等积投影,再用投影后的数据做相交和统计,这样面积结果才可信。我的习惯参数是中央经线105°E,标准纬线25°N和47°N。
4.2 用渔网分割shp做局部网格化统计
“渔网分割shp”在热搜词里出现次数不少,这其实是一个很实用的空间分析手段。比如你想把全国地貌数据按1公里乘以1公里的网格切分,统计每个网格内的主要地貌类型,或者为后续建模准备网格化的特征输入。
渔网工具在ArcGIS里叫“创建渔网(Create Fishnet)”,在QGIS里叫“创建网格(Create Grid)”。操作步骤:
- 在ArcToolbox里找到“数据管理工具—采样—创建渔网”。
- 设置渔网范围。这里有技巧,最好选择“与图层范围相同”,让渔网完全覆盖地貌数据的边界范围,不要手动输入坐标范围,否则容易留白。
- 设置像元宽度和高度。注意这里单位是地图单位,如果你的数据是投影坐标系,那单位是米;如果是经纬度,那单位是度。1公里乘以1公里的网格,在投影坐标系下就是宽高均设1000。
- 生成渔网后,用“面相交”工具把渔网和地貌数据做叠加,输出结果就是每个网格碎片上的地貌类型。
- 最后用“汇总统计”能算出每个网格里不同地貌的面积比例,或者用“标识(Identity)”工具直接把地貌类型赋给每个网格。
实际使用中,我提醒一句:创建渔网的时候留意“创建标注点”那个选项,默认是勾选的,会同时生成一个点图层,如果不需要就取消勾选,否则输出里多一堆没用的点要素。
4.3 全国地貌图的制图技巧
拿到好数据,不出图就亏了。地貌制图其实很有讲究,我这里说几个我实际操作中验证过比较管用的技巧:
第一,分类渲染时用“一级类型”字段,选择冷色和暖色对比方案。比如平原用绿色系,丘陵用黄色系,山地用棕色系,高原用红色系,盆地用灰色系。这种配色符合地图学的视感习惯,也容易被领导和甲方接受。ArcGIS的符号系统里,符号库自带一套“地貌”分类样式,但说实话那套配色偏老气,我一般自己手动调。
第二,如果想要更精细的效果,可以用“二级类型”渲染,但图例会非常长。我的做法是出两级比例尺图:小比例尺全国图用一级类型,大比例尺局部图再用二级类型。
第三,图层叠加顺序上,地貌数据作为底图,应该放在行政边界之下、遥感影像之上。这样能保证边界线清晰,又不会盖住地貌面要素的底色。再配合一个半透明效果,把等高线或者水系叠上去,整张图会很有层次感。
第四,导出图片时分辨率至少300dpi,否则地貌边界放大看全是锯齿。在ArcGIS Pro里“布局—导出”时,记得把“抗锯齿”质量调到高。
5. 系列格式转换实操记录
5.1 shp转3dtiles,把地貌数据拉进三维场景
热搜词里“shp转3dtiles”排在第一位。确实,现在倾斜摄影、三维GIS项目越来越多,很多单位想把二维的shp数据变成三维场景里能叠加的图层。shp转3dtiles的思路不复杂,就是把面要素抽稀成三角网,并附带属性信息,再按LOD金字塔方式切片,输出成3dtiles格式,供Cesium等前端加载。
我的操作流程是:
- 先用QGIS把shp投影到Web Mercator坐标系(EPSG:3857),因为3dtiles场景里经常配合在线影像底图,在线底图普遍是这个坐标系。
- 进入CesiumLab的“通用切片”模块,选择“矢量数据”输入,选择刚才那个投影后的shp文件。
- 设置切片参数。LOD层级一般从0到16,地貌数据是大范围面数据,起始层级可以设置得低一些,比如从4开始,减少瓦片数量。
- 选择属性字段输出。切片时可以把“一级类型”和“面积_km2”写成属性,前端点击每个面就能弹出属性框。
- 切片完成后,把输出的tileset.json和一个瓦片目录发布到静态服务器,在Cesium里用
Cesium3DTileset加载就好。
如果你不想装桌面工具,纯命令行也有办法,可以用shp2tiles这类开源工具直接转换,但参数调整的灵活度不如桌面工具,出图效果看运气。我的建议是:只转一个省级或者小范围区域时,可以直接命令行处理;全国范围的数据,建议用桌面工具,因为瓦片数量大,命令行工具的默认抽稀设置容易让边界变模糊。
5.2 批量shp转CAD
做规划、设计这行的人经常会碰到“把shp转成CAD”的需求。规划局给的成果是shp,但设计院的小伙只用CAD,格式必须转换。ArcGIS自带“导出至CAD”功能,但这个功能一次只能导出一个图层。如果你有几十个shp文件,手动一个个导会崩溃。
批量操作我建议用Python脚本,在ArcGIS Pro的Python窗口里直接写循环:
import arcpy import os in_folder = r"D:\shp_data" # 存放shp的文件夹 out_folder = r"D:\cad_output" # 输出CAD的文件夹 os.makedirs(out_folder, exist_ok=True) for shp in arcpy.ListFeatureClasses("*.shp", "", in_folder): out_dwg = os.path.join(out_folder, os.path.basename(shp).replace(".shp", ".dwg")) arcpy.ExportCAD_conversion(shp, "DWG_R2018", out_dwg, "OVERWRITE_EXISTING") print(f"转换完成: {os.path.basename(shp)}")跑一遍下来,文件夹里所有shp就都变成dwg了。这里提醒几个点:
- 导出CAD的版本参数“DWG_R2018”要根据你目标CAD的版本选。选太低版本,高版本CAD打开没问题,但会丢失一些细节;选太高版本,低版本CAD打不开。
- CAD里默认没有“面”概念,shp里的面要素转过去后会变成闭合的多段线(LWPOLYLINE),填充和图案都没有,需要自己在CAD里补。
- 属性字段转过去后,CAD里默认不会显示文字标注。想在CAD里直接看到地貌类型名称,可以用“注记”方式导出,但会生成大量文本对象,文件体积会大不少。我的建议是导出CAD后,在CAD里用“提取线”加“标注”两步补充。
5.3 shp转txt/测定界shp转txt工具
“测定界shp转txt工具.tbx”是地籍测量领域经常会用到的东西。土地勘测定界的时候,测量单位通常需要提交txt格式的界址点坐标成果表,而采集数据往往是用shp存的面状宗地。txt里要的内容一般是:点号、X坐标、Y坐标、边长、角度。
手动从shp属性表复制坐标到txt,那是“身体在地狱”的活儿,尤其是几百个界址点的情况下。我找到一个比较靠谱的办法:
在ArcGIS Pro里,先用“要素折点转点”工具,把面要素的每个顶点提取成点要素。用“添加Geometry属性”工具,给这些点添加经纬度坐标字段。然后打开属性表,全选,右键复制,粘贴到Excel里整理,再导出为txt。这个流程能跑通,但有点绕,步骤多,容易出错。
更正规的做法是直接用ArcGIS的“Excel表格转文本”配合VB脚本,或者直接写Python,读取面要素的几何坐标,输出为标准的TXT格式。我分享一个Python片段,它可以遍历每个面要素的顶点点位,按“点号 X Y”的格式写入txt:
import arcpy fc = r"D:\data\界址.shp" out_txt = r"D:\data\界址.txt" with open(out_txt, "w", encoding="utf-8") as f: with arcpy.da.SearchCursor(fc, ["SHAPE@"]) as cursor: for row in cursor: geom = row[0] for part in geom: for point in part: if point: f.write(f"{point.ID}, {point.X:.3f}, {point.Y:.3f}\n") print("转换完成")如果你连Python也不想写,有的GIS论坛里能搜到“shp转txt.tbx”这种现成工具箱,下载下来放到ArcToolbox里直接挂载使用,本质上是封装好的脚本,我用过一次,能用,但处理大数据量时速度偏慢。
5.4 dxf转shp:反向操作也常见
说完shp转CAD,反向的dxf转shp也经常碰到。有些人从设计院拿到的图是CAD格式,CAD里的地块是闭合多段线,但没有属性字段,要转成shp用来做空间分析。
QGIS里处理这个最方便:直接把dxf拖进QGIS,它会识别出多个图层,选择你需要的那个面图层,右键导出为shapefile。如果CAD里的闭合多段线在导出后被识别成线而不是面,需要先运行“修复几何”工具,或者使用“多边形化(Polygonize)”工具把闭合线转成面。
这里有个老生常谈的坑:CAD文件里如果有多层嵌套块引用,直接导入QGIS时块里的图形不会自动展开。你需要先在CAD里用“分解”(Explode)命令把块炸开,再存成dxf,再导入QGIS,这样才能转出干净的shp。
5.5 SU导入shp:SketchUp里的地形底图
“su怎么导入shp”这个搜索词说明还真有不少人在SketchUp里用GIS数据。做法也不复杂:SketchUp本身不直接支持shp,需要借助插件。网上比较流行的做法是装“SketchUp ESRI”插件,或者用QGIS先把shp导出为KML/KMZ格式,然后在SketchUp里用“导入KML”功能加载。KML导入后,面要素会变成带纹理的闭合面,可以在上面继续建模。
如果你的目标是生成三维地形,那直接用DEM数据转成TIN,再导入SketchUp会更靠谱。shp地貌数据更适合当“贴图底图”用——先把地貌shp转到KML,加载到SketchUp里定位,然后在上面画建筑轮廓。这个工作流用到不少项目里,算是比较成熟的组合。
6. 常见问题与排查技巧实录
6.1 问题速查表
平时在群里被问到最多的问题,都是shp文件操作里的通病,我整理了一个速查表,按症状找药:
| 症状 | 原因 | 解决办法 |
|---|---|---|
| 文件拖进软件但不显示图形 | 缺少shx或dbf文件,或者shp坐标范围异常 | 检查三个基础文件是否齐全;用“数据检查”工具扫描 |
| 属性表中文全是乱码 | cpg文件缺失或编码声明错误 | 用QGIS重新选择编码打开;或用记事本检查cpg内容 |
| 显示位置偏移至非洲/海上 | prj文件缺失,或坐标系定义错误 | 手动设置正确的坐标系;不要轻易选“定义投影” |
| 面积统计结果明显偏小/偏大 | 坐标系是经纬度,使用了错误的面积字段 | 投影到等积坐标系后重新计算面积 |
| 面要素边界有自相交或缝隙 | 原始数据拓扑错误 | 用“修复几何”工具批量修复 |
| 导出CAD后要素属性丢失 | CAD格式不支持dbf属性直接嵌入 | 用注记方式导出,或在CAD中手动标注 |
6.2 ArcGIS Pro里怎么把shp按属性拆分
“arcgispro怎么把shp拆分”在热搜里的热度不低。拆分需求通常是这样的:一份全国地貌shp,想按省、按市、或者按地貌类型拆分成多个独立文件。
拆分有几种思路,我按推荐程度排:
- 按属性拆分为多个文件:用“按属性分割(Split by Attributes)”工具,输入shp,选择拆分字段(比如“一级类型”),工具会为字段里的每个唯一值生成一个新shp文件。比如“一级类型”里有5种地貌,就会输出5个shp。这是最简单的方法,我常用。
- 按位置裁剪拆分:如果你有一张县级边界,想裁剪出本县域的地貌数据,用“裁剪(Clip)”工具,输入要素是地貌shp,裁剪要素是县域边界,输出只保留县域范围内的部分。
- 按范围拆分成区块:如果数据量巨大,分析时内存不够,可以先用“创建渔网”生成网格,然后用“裁剪”工具把数据按网格切成多个小块,分块处理。
“按属性分割”里有个小细节,输出命名规则默认是“原文件名_字段值.shp”,但字段值如果是中文,在部分操作系统上文件名会出乱码,建议在运行前把字段值替换为拼音或数字编码,导出后再映射回中文名称。
6.3 shp文件导出时缺失cpg文件的处理
热搜词里有一条很具体:“shp文件导出的时候没有cpg文件是怎么回事”。这个现象在ArcMap里导出国标数据时很常见。原因其实不复杂:ArcMap在导出shp时,如果源数据的dbf字符编码是双字节或者中文字符集,它会自动生成cpg文件;但如果源数据的dbf字符编码在它眼里是“系统默认ANSI”,它就可能不生成cpg。
解决办法:
- 手动补一个cpg文件。在你导出shp的文件夹里,新建一个文本文件,改名为和shp同名、后缀为.cpg,用记事本打开,写入“UTF-8”并保存。要注意文件名必须和shp主文件一致。比如shp叫“地貌分布.shp”,cpg就得叫“地貌分布.cpg”。
- 用QGIS代替ArcGIS导出。QGIS导出shp时会强制让你选择编码,如果选了UTF-8,它就会生成对应的cpg文件,稳定可靠。
补完cpg后,重新打开shp属性表,中文基本就恢复正常。如果还是乱码,那就说明dbf里的实际编码和cpg声明的不一致,这时要反向排查,先确定dbf是哪种编码,再改cpg。
6.4 图层不显示?先检查坐标范围
还有一类打开shp后地图上什么都没有的问题,不是文件坏了,而是数据坐标范围跟当前地图范围离得太远。比如你在WGS84经纬度地图里加载一份以米为单位的投影坐标数据,数据范围可能是X: 500000, Y: 4000000这种大数值,而当前地图范围默认是经纬度,X: 73, Y: 26左右,差了十万八千里,自然看不到图形。解决办法是右键图层,选择“缩放至图层”,软件会直接飞到数据所在的正确范围。
这几个问题看起来不大,但实际工作中几乎天天碰到,多花两分钟排查,能省下后面分析时的大麻烦。
7. 写在最后的一点个人体会
做了这么多年GIS数据处理,我越来越觉得,一份干净、结构合理、字段齐全的数据本身就是最大的财富。数据格式转换、坐标系统一、拓扑修复这些活儿,说难不难,说简单也不简单,关键是要有耐心,遇到问题不慌,一步步排查。拿到任何一份shp数据,我建议都按这个流程过一遍:先查文件完整性,再查坐标系,然后看属性表,最后才开始分析。顺序错了,后面全得返工。
这份全国地貌分布shp数据我实际用了大半年,从全国尺度的专题制图到几个省份的地貌统计,再到三维场景的叠加展示,都在用。平时积累的那些转换工具和脚本,我也顺手整理在了一个文件夹里,每次遇到新项目都能拿出来复用。希望这篇记录能帮你少走一些弯路。
本文还有配套的精品资源,点击获取