广东17种土壤类型空间分布数据:ArcGIS工程、Shapefile与TIF成图实战指南
2026/9/10 10:12:17 网站建设 项目流程

简介:广东17种土壤类型空间分布数据,依据联合国粮农组织(FAO)土壤分类体系,区分土类、亚类、土属、土种等多层次类型,可满足地理、土地规划与农业领域对区域土壤空间信息的查询、制图和专题分析需求。数据包共19个文件,整体约152MB,以标准shapefile矢量数据为核心,含shp、prj、dbf、shx等配套文件,另提供可编辑mxd工程、高分辨率TIF栅格成图、Excel土壤分类编码表、辅助底图压缩包及显示样式修改示意图,结构清晰,便于不同软件环境使用。属性表中的SOIL_ID字段与“土壤分类编码表”中的“亚类”一一对应,用户可据此精确识别17类土壤类型,也可利用可编辑mxd自由调整地图样式、图例与配色方案,TIF格式则适合直接打印与展示。目前已有152人学习,适合需要快速获取广东土壤空间分布底图并进行二次编辑的研究者与GIS从业人员。

1. 广东17种土壤类型空间分布:从ArcGIS工程到标准shape与TIF成图

在拿别人交付的地理数据时,最怕的就是“一个.shp裸文件,缺投影、缺符号,也没说明”。这套广东17种土壤类型空间分布数据,把它做成了三联包:可编辑的mxd工程文件,标准shapefile格式的矢量面层,以及一张标准成图TIF。打开mxd就能看到已经配置好图层顺序和图例,把shape文件拖进QGIS也不会出现字段乱码。数据采用FAO土壤分类体系,制图单元分解为土类、亚类、土属、土种,属性表里的SOIL_ID与Excel分类编码表一一对应。这对手头正要做国土空间规划、农业区划或土壤侵蚀分析的人,是一个非常利落的起点。但真正要把它用在生产环境,还需要先弄懂文件结构、坐标系和属性表关系,否则后续配图、剪裁、统计都容易踩坑。

2. 从mxd到shape文件:先搞清文件家族和坐标参考

2.1 解压后每个文件是干什么的:后缀名决定工作流

拿到压缩包后,第一件事不是双击mxd,而是把整个目录固定下来。很多GIS新手会随手把所有文件堆到桌面,然后发现mxd里的图层路径全部失效。在这个资源里,同名的.shp.shx.dbf.prj.cpg.sbn.sbx组成一个完整的标准shapefile家族;.shp只存几何,.shx是几何索引,.dbf存属性,.prj存坐标系,.cpg存字符集声明,.sbn.sbx是ArcGIS系统自动生成的空间索引,删掉也能用,ArcGIS会根据要素范围自动重建。

文件后缀职责可否删除
.shp存储要素几何(面、点、线)删除则不可用
.shx几何位置索引,加速显示与查询可重建
.dbf属性表,SOIL_ID就在这里删除丢失属性
.prj坐标参考系统(WKT格式)删除后无投影
.cpg字符集(常见UTF-8或GBK,决定中文是否乱码)可重建
.sbn/.sbx空间索引,仅ArcGIS使用可重建
.shp.xml元数据可删除

除了土壤面层,目录里还有广东.shp行政边界、china-shapefiles.zip中国行政区.zip,以及广东省.gson广东.shp是省界,用于制图时给出边框;土壤类型空间分布_广东省.shp才是17类土壤的制图单元。区分两个同名“广东”的过程,实际上就是在确认你的分析图层到底是哪个。工作区路径建议保持稳定,比如统一放在D:\soil_delivery\下,后续所有相对路径、参考路径都不容易错。

2.2 SOIL_ID与FAO分类编码表:制图单元拆到了哪个层级

土壤类型空间分布_广东省.shp的属性表中,最关键的字段是SOIL_ID。配合土壤分类体系.xlsx里的“土壤分类编码表”,用SOIL_ID可以关联到亚类名称。xlsx中一般会有土类、亚类、土属、土种的分级,实际读法是从亚类出发,向上归纳土类,向下细分为土属和土种。比如一个多边形标着SOIL_ID对应的编码,在编码表里找到亚类名称,再关联到土类,就能得到完整分类路径。用ArcMap打开时,图例默认可能只显示大类或土类,如果你想看亚类,要用唯一值渲染并选择亚类字段。FAO体系的好处是国内外分类可对照,论文里写方法部分时可以直接引用,不需要再翻译当地俗名。

2.3 不要相信眼睛:用gdalinfo检查坐标参考

mxd里打开看起来位置正常,不代表原始shape文件的坐标系一定适合你的项目。用QGIS或命令行检查.prj更安心。这里以GDAL为例:

gdalinfo -proj4 土壤类型空间分布_广东省.shp | head -20

这行命令要求GDAL已安装(conda install gdal或pip install gdal均可)。gdalinfo读取shapefile时会输出Driver、Files列表以及图层的Geometry类型。加上-proj4后,会把.prj里的WKT坐标参考同步翻译成PROJ.4字符串,方便你在代码里直接做投影转换。注意最后的head -20只是截取前20行,避免属性字段列表过长刷屏。如果输出里看到PROJCSGCS_Beijing_1954GCS_WGS_1984等关键字,就说明坐标系明确。建议记下这一步的结果,后面做CAD定位时还要用到。

3. 用mxd可编辑工程做样式复刻:ArcGIS里这样操作不丢图例

3.1 打开mxd后先做两件事:检查数据源和另存模板

双击广东土壤类型空间分布.mxd,如果按默认打开,大概率看见红色感叹号。原因是mxd保存的是文件路径,把压缩包解压到新路径后,图层源没有自动重连。此时右键图层选择“Set Data Source”或“Properties→Source”,把数据源指向解压目录下的土壤类型空间分布_广东省.shp,修正后再双击图层打开符号设置。更稳的做法是先另存为一个副本:

广东土壤类型空间分布_存档.mxd

像上述这样把原始工程先留一份底稿,后续不管怎么改符号、调图例,都可以随时回到这版没动过的样式。和ArcMap自带的图层文件(.lyr)不同,mxd保存的是整个页面,包括图例、比例尺、指北针和所有图层,这正好满足“可编辑工程”的交付目标。另存之后,原始mxd不要再写,所有演示都用副本进行。

3.2 用显示样式修改示例迅速换配色

资源里的显示样式修改示例.jpg就解决一个核心问题:为什么我改了符号颜色,图例没有按预想显示。典型的ArcMap流程是:右键图层→Properties→Symbology→Categories→Unique Values。Value Field选SOIL_ID,点击“Add All Values”,ArcGIS会自动用现有配色填满17类。此时再双击每个符号,逐个替换颜色,或者直接在Color Ramp下拉框里选一套渐变。但对于土壤图,不建议使用层级渐变色,因为土壤类型是定名分类,用区分度高的定性配色比渐变更合理。样式示例图实际上在告诉你:每换一次配色,要点击“Apply”看整体效果,避免某一类颜色过深盖住多边形边界。

3.3 用ArcPy批量检查图层源和更新路径

如果一个mxd里插入了多个底图(省界、行政区、土壤层),手工一条条改太慢。写一个ArcPy脚本可以一次性列出所有数据源:

import arcpy mxd_path = r"D:\soil_delivery\广东土壤类型空间分布.mxd" mxd = arcpy.mapping.MapDocument(mxd_path) for lyr in arcpy.mapping.ListLayers(mxd): if lyr.supports("DATASOURCE"): print(lyr.name, "->", lyr.dataSource) mxd.saveACopy(r"D:\soil_delivery\广东土壤类型空间分布_copy.mxd")

arcpy.mapping.MapDocument接收的是mxd绝对路径;ListLayers遍历当前mxd中所有图层;supports("DATASOURCE")用来判断图层对象是否具备数据源属性,矢量图层都有,纯整饰图层不一定有。打印出来之后,你就知道哪些图层路径断链。最后saveACopy不会覆盖原文件,适合做版本留痕。需要注意的是,mxd中的相对路径设置会影响脚本读出路径的方式,建议在保存前勾选“Store relative pathnames”,部署到别人机器时容错更高。

4. 标准TIF成图在CAD中如何自动定位:GeoTIFF和世界文件

4.1 标准成图TIF到底是什么格式

很多人把TIF简单理解成一张图片,直接用于ArcMap时却拖不进去,或拖进去没有地理坐标。这个资源里的广东17种土壤类型空间分布.tif是栅格化的成图,它的定位能力来自两个地方:一个是TIF内部可能携带GeoTIFF标签,另一个是旁边可能伴随的.tfw世界文件。.tfw是一个6行文本文件,记录左上角坐标、像素尺寸和旋转参数。如果TIF没有世界文件,在GIS中就会落到坐标(0,0)附近。验证是否有定位信息,用:

gdalinfo 广东17种土壤类型空间分布.tif

输出里的OriginPixel Size就是定位的坐标原点与分辨率。如果看到Origin = (109.5, 21.5),说明左上角位置明确,像素大小通常是经纬度单位或米;这种情况下TIF可以直接叠加到矢量上。Size则表示栅格行列数,影响打印清晰度。没有地理信息的TIF只显示一行Corner Coordinates: (0.0, 0.0),这时候就需要补世界文件。

4.2 拿到普通TIF时,用GDAL补上地理参考

如果实际交付的TIF没有坐标标签,而手里有shapefile的投影参数,可以按以下方式补出一个可定位的GeoTIFF。这里假设原始TIF的行列数已知、范围也已知:

gdal_translate -of GTiff \ -a_srs EPSG:4490 \ -a_ullr 109.5000 21.5000 117.3000 20.1000 \ input_no_geo.tif 广东土壤类型空间分布_geo.tif

-a_srs指定目标坐标系,这里EPSG:4490是CGCS2000地理坐标系;如果你确认原始数据是WGS84,就写EPSG:4326-a_ullr按顺序给左上角X、左上角Y、右下角X、右下角Y,四个坐标值决定图像落位范围。注意这种赋值方式是整幅图拉伸到范围,如果TIF本身的投影不是简单经纬度,应该先用gdalwarp重投影。常见做法是先读取shapefile的Corner Coordinates,再用相同范围去补TIF,图层叠加才严丝合缝。

4.3 CAD中自动定位:MAPINSERT和ALIGN两条路线

网络上高频出现“tif影像图怎么在cad中自动定位”,放到这套数据上答案分成两种。如果是AutoCAD Map 3D或Civil 3D,直接输入MAPINSERT,在对话框中选择TIF,软件会读取TFW的坐标信息,自动把影像摆到真实坐标位置;前提是TIF与TFW同名且在同一目录下,并且CAD图形的坐标系与TIF坐标系兼容。如果是普通AutoCAD,不带地理空间模块,MAPINSERT不可用。这时就用手动但稳的ALIGN:先用IMAGEATTACH把TIF插入,然后用ALIGN命令依次指定影像上的已知点和目标坐标点。比如把TIF的两个图廓角点在CAD里输入对应经纬度或平面坐标,缩放旋转一次完成。

5. 把SOIL_ID与土壤编码表接起来:制作17类专题图的完整数据流

5.1 Excel编码表转为CSV,在ArcGIS里做属性关联

土壤分类体系.xlsx是Excel工作簿,ArcGIS虽然支持直接读取xlsx,但生产环境经常因为Excel被占用或版本差异失败。我一般的做法是先转成CSV:用Excel打开工作簿,选中“土壤分类编码表”工作表另存为soil_class.csv,编码选UTF-8。然后在ArcMap里做Join:

import arcpy shp = r"D:\soil_delivery\土壤类型空间分布_广东省.shp" csv = r"D:\soil_delivery\soil_class.csv" arcpy.JoinField_management( in_data=shp, in_field="SOIL_ID", join_table=csv, join_field="SOIL_ID", fields=["土类", "亚类", "土属", "土种"] )

这段代码的作用是把CSV里四个字段追加到shapefile属性表中。in_data是目标图层,in_field是目标图层关联字段;join_table是编码表,join_field是编码表中和SOIL_ID对应的字段;fields表示只追加这四个字段,避免把Excel里其他说明性列带入。join完成之后,打开属性表就能看到每个多边形附上了土壤分类名称,不再只显示一串ID。需要特别留意:CSV中关联字段的数据类型要与SOIL_ID一致,如果SOIL_ID是双精度,而CSV里是文本,join会失败,此时先在Excel里把编码列统一为数值或统一为文本。

5.2 土类、亚类、土属、土种:什么时候看哪一层级

拿到属性表后,常见困惑是符号化该选哪个字段。17种土壤类型是成果层级,通常对应亚类;土属和土种属于更细的制图单元,适合区域性调查。做全省小比例尺专题图时,用“土类”符号化,图例更精简;做县域分析或某种土壤的适种性评价时,按照“亚类”区分,因为有17类,图例项较多需要控制显示字号。SOIL_ID与亚类一一对应,这是编码表设计好的,所以最终分类精度以亚类为基准,土类是从亚类聚合上去的。你可以先按土类渲染一幅,再保存一个按亚类渲染的图层文件(.lyr),两个成果互不干扰。

用途推荐字段图例项数量典型场景
省域挂图土类8~12宏观空间格局
资源调查亚类17土壤类型精确清单
田间管理土属/土种30以上农业利用建议

5.3 在ArcPy里按唯一值自动生成17类配色

手工配17个颜色也能做,但效率低。如果要在脚本里完成,思路是先读取所有唯一值,再为每个值分配一个符号。ArcPy的符号化接口较繁琐,常见做法是直接利用mxd的图层属性,先在地图文档里设置唯一值渲染,再保存为图层文件。也可以退一步,在ArcMap的Symbology界面中,选择Unique Values后,点击“Add All Values”,然后用Color Ramp快速替换。更贴近自动化的场景中,我通常借助QGIS的PyQGIS库对shapefile做渲染,并导出为QML样式:

from qgis.core import QgsVectorLayer, QgsCategorizedSymbolRenderer, QgsSymbol from PyQt5.QtGui import QColor layer = QgsVectorLayer( r"D:\soil_delivery\土壤类型空间分布_广东省.shp", "soil", "ogr" ) field_idx = layer.fields().indexOf("SOIL_ID") categories = [] for i, val in enumerate(layer.uniqueValues(field_idx)): symbol = QgsSymbol.defaultSymbol(layer.geometryType()) symbol.setColor(QColor.fromHsv((i * 30) % 360, 120, 255)) categories.append(QgsRendererCategory(str(val), symbol, f"类别{val}")) layer.setRenderer(QgsCategorizedSymbolRenderer("SOIL_ID", categories)) layer.saveNamedStyle(r"D:\soil_delivery\soil_styles.qml")

这里用layer.uniqueValues取SOIL_ID字段的所有取值;QgsRendererCategory把每个值和符号绑定;saveNamedStyle输出QML样式文件,在QGIS中可以直接加载。然后再次确认你在代码里正确导入QgsSymbol,否则会报NameError。(i * 30) % 360用色相步长30度生成一组彼此不邻近的颜色,目的是让相邻类别色差尽量大。这个脚本只生成样式,不修改原始几何,原始shape数据不会受影响。

6. 交付验收时最值得盯住的三个坑:数据源、编码和定位

6.1 QGIS/ArcGIS显示“无效数据源”?

同类问题最常见的原因是文件路径整体移动后,mxd内记录的是绝对路径。解决办法是右键图层修复到新路径;更彻底的办法是重新拖一次shape文件,再复制符号。部署给别人前,检查mxd是否勾选了相对路径保存,同时将.shp四个主文件放在同一目录,避免单独拷出.dbf导致属性丢失。

6.2 属性表中文变成乱码

如果dbf中的中文乱码,先看cpg文件;缺失时默认按系统代码页解析,Windows是GBK,而很多分发数据实际保存为UTF-8。可以在QGIS的Layer Settings里分别用UTF-8和GBK重试;在ArcMap中打开dbf属性表前,用文本编辑器检查cpg内容。若cpg写着UTF-8却乱码,说明生成时标记可能有误,把字段值导出成CSV再单独处理是最后的兜底方案。

6.3 CAD定位偏差的检查顺序

完成CAD自动定位后,第一件事是用ID命令拾取TIF图廓角点,与理论坐标比较;偏差稳定在几十米,多半是坐标系基准不同,比如WGS84与CGCS2000在广东省范围内差异在米级。偏差如果是一个固定倍数,则很可能是单位问题:要么坐标系是度,而CAD里按米解析;要么图像分辨率是按打印比例尺计算的,和实际坐标范围不一致。把shapefile中某一特征点坐标作为参考点,在CAD里用ALIGN重定位一次即可。验证时把图层和TIF都加载到QGIS,叠加行政边界看轮廓是否重合,如果不重合就先检查坐标系是否一致,再检查TFW的像素尺寸是否正确。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询