☰
全国3300多自然保护区空间分布数据:mxd+shp+TIF三件套使用指南
2026/10/11 12:12:03 网站建设 项目流程

简介:全国3300多个自然保护区的空间分布数据,适合GIS使用者、生态科研人员和规划管理者开展制图、分析与报告编制。包内含标准Shapefile矢量文件、可编辑的mxd地图工程、标准成图TIF栅格以及配套Excel属性表,属性字段涵盖保护区级别、名称、始建年份、所属省市县、面积、编号、类型和保护对象等。压缩包共10个文件,约154.28MB,主要文件类型包括shp、dbf、shx、prj、mxd、tif、xlsx等,其中shp为通用矢量格式,mxd可在ArcGIS中二次编辑,TIF可直接用于展示输出,Excel便于快速检索统计。已有167人学习下载。借助该数据可直观观察全国自然保护区分布格局,进行叠加分析、缓冲区分析、专题制图以及分类统计,能够为生物多样性保护研究、生态安全评估和自然保护地优化管理提供可靠的数据支撑。

1. 全国3300多自然保护区空间分布:一份数据三张面孔,拿到手怎么用

做生态评价项目时,最头疼的不是算法,而是底图数据。有一次我要把全国3300多个自然保护区的边界叠到遥感分类结果上做统计,找了一圈数据:要么是名录PDF手工转出来的坐标点,只有位置没有边界;要么是十年前的旧数据,坐标系写的是“北京54”,跟手上的影像对不上;最离谱的一份,属性表里连保护区名称都没有,只有一串看不懂的代码。所以当看到「全国3300多自然保护区空间分布——mxd可编辑文件+标准shape文件+标准成图TIF」这种标题时,先别急着下结论,你要确认的是:这份数据到底是拿来干嘛的、三种格式怎么配合、以及到手之后哪些地方容易踩坑。

这套数据的定位很明确:不是一份原始素材,而是三件套。mxd是 ArcMap 工程文档,拿到手就能改符号、调图例、出专题图;shapefile 是真正的矢量源数据,能做叠加分析、面积统计、空间查询;TIF 是已经配好版式的标准成图,汇报、打印、快速浏览都用它。对做生态规划的工程师、高校做空间分析的研究生、以及需要把保护区边界叠进自己系统的开发者来说,这套东西省掉的不是制图时间,而是从零开始矢量化3300多个边界的绝望工作量。当然,省时间的代价是:你必须在动手前知道每个文件的脾气。

2. 三种文件格式的分工:shapefile、mxd、TIF 各管哪一段

2.1 shapefile 是数据本体:shp/shx/dbf/prj 谁缺席都不行

shapefile 看起来是一个文件,实际上是一组文件族。标准情况下你会看到至少四个同名文件:.shp 存几何形状、.shx 是几何索引、.dbf 存属性字段、.prj 存坐标系定义。国内的数据还经常带一个 .cpg,用来记录字符编码。任何一份“不完整”的 shp 都会在打开时报错或者像裸奔一样,没带 .prj 就问不出来坐标系,加到 ArcMap 里默认变成未知坐标系。

拿到这套数据后,第一步不是急着拖进地图,而是先把文件族列一遍,缺了谁心里要有数。缺 .shx 时 ArcMap 还能自动重建索引,缺 .prj 就麻烦了,后续所有投影转换都建立在猜坐标系的基础上,等于后面每一步都在赌。通常国家级保护区的边界以面要素(Polygon)为主,属性表里每一条记录对应一个保护区边界,字段一般包含名称、级别、类型、面积、批准时间这类基础信息。

正因为 shapefile 是数据本体,所以做任何空间分析都以它为准。mxd 里的符号化只是“化妆”,TIF 只是“拍照”,真正能在 Python 里读、在 ArcGIS 里算、在 QGIS 里改的是这套 shp。我拿到手通常先看一眼文件大小,一个省的数据和全国数据体积差很多,心里对边界精细度先有个数。

2.2 mxd 是可编辑的排版工程:打开后能改什么

mxd 是 ArcMap 的工程文档,它本身不存几何数据,只存“怎么展示这些数据”的规则:图层顺序、符号样式、标注字段、比例尺、图例位置,以及最重要的数据源路径。标题里强调“可编辑”,意思是这份 mxd 没有做任何锁定处理,拿到手不是为了看一张已经渲染好的静态图,而是为了把它改造成你的专题图版式。

比如项目要求出“某省国家级自然保护区分布图”,你不需要重新加载数据配符号,只需要打开 mxd,关掉省级图层的显示,把图例里多余的类别删掉,再调整一下比例尺位置就能导出成图。省下的时间主要花在图上,而不是花在符号系统上。

不过 mxd 有一个躲不开的坑:版本兼容。ArcMap 10.x 生成的 mxd,拿到新版 ArcGIS Pro 里打开时通常要转换一次,转换后布局可能会有细微变化,比如字体替换、阴影偏移。反过来,Pro 生成的工程文件(.aprx)旧版软件根本打不开。所以如果你手里只有 ArcMap,确认收到的是 .mxd 就对了;如果你用 Pro,做好打开后微调版式的心理准备。

2.3 TIF 是标准成图:从矢量到栅格的一次定型

TIF 是这套三件套的“成品图”,本质是把矢量渲染成栅格图片的同时,保留地理参考信息。一般分两种情况:带 .tfw 世界文件的 TIF,或者把坐标信息直接写进 TIF 头部的 GeoTIFF。无论哪种,拖进 GIS 软件时都能自动落在正确的地理位置上,不需要手动配准。

为什么已经有了 shapefile 还要 TIF?因为很多场合的用途根本不涉及编辑。写报告要插图、给领导汇报要投屏、打印要做图册——这些场景要的是一张已经配好底色、边界、注记的成品图,而不是一个还得打开软件去配符号的源数据。TIF 是“定格”,好处是任何人打开都能看到完全一致的画面,不存在字体缺失、符号丢失、路径断开这些矢量工程的毛病。

代价是 TIF 改不了。发现某个保护区名称写错了、某条边界位置不对,你不可能在 TIF 里直接改,必须回到 shapefile 修改几何、回到 mxd 重新出图,再导出一张新 TIF。这就是三件套配合的逻辑:shapefile 是底子,mxd 是版式,TIF 是交付物。我用这套数据出图时,永远保留修改日期,TIF 只作为最终输出,不拿它做中间过程。

3. 把数据用起来:打开 mxd、读属性表、配符号的完整动作

3.1 ArcMap 里打开 mxd 并修复数据源:最小操作三步

一个 mxd 文件从别人手里传过来,最常见的情况是打开后图层全部变成红色感叹号,这是数据源路径失效。ArcMap 里记录的路径是作者本机的绝对路径,比如 D:\保护区数据\shapefile\xxx.shp,换一台电脑路径就断了。修复操作分三步:

第一步,用 ArcCatalog 定位到 mxd 所在文件夹,选中 mxd 在右侧预览窗口看图层列表,如果几何图形没有显示,说明数据源确实断了。第二步,双击 mxd 打开工程,在内容列表中右键任意一个带感叹号的图层,选“属性”,切到“源”选项卡,点击“设置数据源”按钮,重新指向本机对应的 shp 文件。第三步,逐个图层执行,直到所有图层恢复正常。

这里有个技巧:在 ArcMap 菜单“文件 → 文档属性 → 数据源选项”里,把存储路径方式改成“相对路径”,再次保存 mxd。之后整个工程文件夹拷到任何位置都能正常打开,不用反复修路径。这也是我给数据使用者最常见的建议——mxd“可编辑”的真正含义之一,就是你有权限改掉这些让人头痛的路径配置。

3.2 属性表里能读到的字段:名称、级别、类型、面积怎么看

打开 shp 属性表,你面对的是几十列字段,得先分清哪些是分析要用的、哪些只是制图用的。名称字段建议先看一眼编码,如果乱码,是后面避坑章节要处理的问题。级别字段一般是文本型,记录了“国家级”“省级”“市县级”这样的分类;类型字段区分保护区的生态类别,比如森林生态、湿地、荒漠、草原、海洋;面积字段可能是以公顷或平方公里为单位,拿到手先在字段计算器里用一条表达式确认量纲。

一个关键操作:右键面积字段选“统计”,会给出总和与平均值,把这个总数和官方公布的自然保护区总面积对照一下,误差在 5% 以内算正常,超过 10% 就要警惕边界精度或投影方式的问题了。因为 shapefile 的面积字段有两种来源:一种是在某种投影下用平面几何算出来的,另一种是用椭球面积公式算出来的,两种算法在同一片区域上能差出几个百分点。

3.3 按级别与类型配置符号:一套能直接引用的参数

mxd 里自带的符号化规则通常可以直接用,但如果你想按自己的风格重配,记住配色原则:级别用色阶区分权重,类型用色相区分性质。我的习惯是国家级保护区用深红色(RGB 200, 40, 40)、省级用橙色(RGB 230, 130, 50)、市县级用黄绿色(RGB 170, 200, 80),这样一个图例拉出来,视觉上国家级最显眼,符合管理上“重点区域一眼看到”的诉求。

按类型配色时,森林生态用深绿(RGB 60, 130, 60)、湿地用蓝色(RGB 80, 140, 180)、荒漠用土黄色(RGB 190, 160, 110)、草原用草绿偏黄(RGB 140, 170, 80)。操作路径是右键图层 → 属性 → 符号系统 → 类别 → 唯一值,把“级别”或“类型”字段拖进去,手动修改每个类别的填充色。透明度建议设到 25% 到 30%,尤其是要叠加遥感影像或地形底图时,半透明填充能同时看到保护区边界和底图内容,不至于把底图盖死。

轮廓线设置 0.4 磅就够,色值跟填充色一致但稍微加深。线太粗在小比例尺下会让相邻保护区糊成一片,太细打印出来看不见。配完符号后不要急着导图,先缩放到全国范围看一眼整体效果,再放大到某省局部看边界是否清晰。

4. 坐标系与几何质量:做分析前先过的三关

4.1 先读 prj 确认坐标系:两种常见基准的辨认方法

做任何涉及面积、距离、叠加的分析之前,第一步永远是确认坐标系。用文本编辑器打开 .prj 文件,看到的是一长串 WKT 字符串,不用全看懂,只看关键词。搜一下文件里有没有 China_Geodetic_Coordinate_System_2000 或 D_WGS_1984(标注为 2000 或 1984 的基准面),有前者就是 CGCS2000 国家大地坐标系,有后者就是 WGS84。

如果你用的是 Python,一行代码就能读出更直观的信息:

from pyproj import CRS # 读取 shapefile 同名的 prj 文件,解析坐标系定义 crs = CRS.from_wkt(open("自然保护区.shp.prj", encoding="utf-8").read()) print(crs.name) # 输出坐标系名称,如 CGCS2000 / WGS 84 print(crs.to_epsg()) # 输出对应的 EPSG 编号,方便后续统一转换

这段代码的意义在于:很多 shp 的 .prj 文件并不标准,ArcMap 能读不代表 geopandas 能读,用 pyproj 解析一遍能尽早发现坐标系定义是否残缺。判断真实投影的黄金方法是:加载到 ArcMap 里,开启右下角的坐标显示,把鼠标移动到地图上,看看显示的坐标是经纬度(121.5, 31.2 这种小数)还是带 7 位数以上的米制坐标(比如 500000, 3400000 这种),前者是地理坐标系,后者是投影坐标系。这一步肉眼判断比看任何文档都直观。

4.2 统一到等积投影:算面积和叠置分析的标准动作

地理坐标系直接量面积,得到的是“度²”这种没有任何实际意义的单位,必须投影成米制坐标后面积才有意义。但投影方式也有讲究:等角投影(如墨卡托)保形状、等积投影保面积。算保护区面积、算覆盖率这类需求必须用等积投影,全国尺度的数据一般用阿尔伯斯等积投影(Albers Equal Area),双标准纬线参数常取北纬 25 度和 47 度,中央经线取东经 105 度,这个参数组合在国内专题图里用得最多。

用 geopandas 转换投影并重算面积的代码也很直接:

import geopandas as gpd # 读取原始 shapefile,encoding 按实际属性表编码调整 gdf = gpd.read_file("全国3300多自然保护区.shp", encoding="utf-8") # 先把数据统一到 CGCS2000 地理坐标系,便于检查 gdf = gdf.to_crs("EPSG:4490") # 定义全国 Albers 等积投影参数 albers_crs = "+proj=aea +lat_1=25 +lat_2=47 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +datum=CGCS2000 +units=m +no_defs" gdf_albers = gdf.to_crs(albers_crs) # 在等积投影下重算面积(平面面积,单位是平方米),转为平方公里 gdf_albers["area_km2"] = gdf_albers.geometry.area / 1e6 # 输出新的 shapefile 备用 gdf_albers.to_file("自然保护区_albers.shp", encoding="utf-8")

逻辑说明:整个流程分四步——读取、统一地理坐标、投影到等积坐标系、重算面积。这里把 EPSG:4490(CGCS2000 地理坐标系)作为中转站,是因为原始数据可能混合了各种坐标系,先统一到地理坐标系再投影到 Albers,路径最清晰。转换时如果原始数据是 WGS84,老版本工具会要求设置基准面转换参数,但在 CGCS2000 与 WGS84 之间差异极小(分米级到米级),对保护区边界这种比例尺的数据来说直接忽略也没关系。

4.3 几何检查与修复:空几何、自相交、重复面

全国尺度的面数据,矢量化过程中几乎必然留下几何问题。最常见的是三类:空几何(属性有记录但几何为空)、自相交(边界线自己缠在一起)、重复面(同一个保护区出现两次)。做叠加分析时,这些问题会导致面积计算结果为负数、相交操作报错、统计结果虚高。

ArcMap 里修复几何用工具箱里的“修复几何”工具最省事:

import arcpy fc = "自然保护区_albers.shp" # 对要素类执行几何修复,修复自相交与空几何 result = arcpy.management.RepairGeometry(fc) print("修复完成:", result[0])

RepairGeometry 会把自相交的环拆成有效面,删除空几何对应的无效要素。但注意,它对“重复面”无能为力——两条记录边界完全重合,修复工具不知道该留哪条。重复面要自己查:在属性表里对唯一 ID 字段做“出现次数”统计,凡是计数大于 1 的记录就是重复项,人工核对后删除多余记录。

5. 避坑手册:这套数据最常见的五种翻车现场与解法

5.1 mxd 打开后全部红感叹号:相对路径没生效

现象:双击 mxd 后,内容列表里所有图层前都有红色感叹号,地图窗口一片空白,像是“数据全丢了”。

原因:作者保存 mxd 时使用的是绝对路径,比如 D:\某目录\shp\xxx.shp,文件拷到你机器上后路径变了,ArcMap 按原路径找不到文件。

解决:不要重新加载所有图层,逐个右键图层 → 属性 → 源 → 设置数据源,把路径指到本机对应文件。全部修完后,在“文件 → 文档属性”中把数据源选项改为“相对路径”再保存。相对路径意味着 mxd 只记录文件相对工程文档的位置,以后整个文件夹拷走也不会再断路径。

5.2 TIF 打开全灰一片或全黑:渲染拉伸方式不对

现象:TIF 拖进 GIS 软件后不显示自然色,要么全灰,要么黑乎乎一片,放大才能隐约看到边界轮廓。

原因:TIF 是单波段的高程或黑白底图时,软件默认用线性拉伸渲染,但数据的直方图集中在很窄的像元值区间(比如 100 到 150),线性拉伸会把 0 到 255 全段映射,导致画面对比度极低,看起来就是一层灰。

解决:右键图层 → 属性 → 符号系统,把拉伸类型从“无”或“线性”改为“百分比裁剪”,裁剪量设为 2%。即把直方图两端各砍掉 2% 的极值,再映射到全色域,对比度一下就出来了。如果画面仍然偏灰,适当调一下 Gamma 值到 0.8 左右,能再提亮一档。

5.3 属性表里的面积和官方名录对不上:投影方式与边界精度双重作用

现象:属性表里某保护区的面积是 5000 公顷,网上查到的官方数据是 5500 公顷,相差 10%,好几个都对不上。

原因:两个原因叠加——一是原始属性面积可能直接在地理坐标系下用“度²”算的,误差本身就能到百分之几;二是边界矢量化时做了制图简化,把小弯小角磨平了,面积天然偏小。

解决:先按第 4 章的流程投影到 Albers 等积坐标系下重算面积,再和官方数字对比。如果重算后误差仍然超过 5%,重点检查那些边界曲折的保护区,极可能是矢量化用线被简化过。修正思路是:不要手工去描边界,回到遥感影像上重新数字化,或者用高精度行政区边界做裁剪和校正。

5.4 dbf 属性中文乱码:编码文件缺失或读取工具按错编码

现象:属性表里的中文全部显示成“鍥界骇淇濇姢鍖?”,或一堆问号,但英文和数字正常。

原因:shp 属性表本质是 dBASE 数据库,中文存储时字符集可能是 UTF-8 或 GBK。如果 .cpg 文件丢失,ArcMap 会按系统默认编码读取,Windows 中文系统默认 GBK,遇到 UTF-8 存储的文件就乱码。

解决:先看文件目录里有没有 .cpg 文件,没有的话自己新建一个和 shp 同名的 .cpg,内容写入 UTF-8,保存后重新加载图层,乱码通常能恢复。如果还不行,用 QGIS 打开,在导入时手动指定编码(GBK 或 UTF-8 逐个试)。千万别直接在 ArcMap 里手动改字段值,那是治标不治本——根子是编码声明缺失,补上声明才是正解。

5.5 面与面大面积重叠:做统计前必须去重

现象:把数据加载后放大到某地,发现两个保护区的边界大面积重合,或者一个国家级保护区完全包含一个省级保护区,做面积加总时总数虚高。

原因:这份数据的来源可能融合了多期名录和边界修订结果,同一片区在不同时期有不同命名和级别,历史版本没有被清理,导致重复入库存。

解决:先对“名称”字段做唯一性检查,重复的按更新时间保留最新版本;再跑一次空间自相交分析(ArcToolbox → 相交,把图层和自己做叠加),找出重叠图斑,按属性优先级保留高级别的记录。统计意义上是“叠加去重”,处理完再做面积汇总才是真实的总量。这个去重逻辑直接决定后续所有统计数字的可靠性,别嫌麻烦。

6. 进阶:把这套数据变成能算面积、能出图、能更新的分析能力

用脚本把第 4 章的流程串起来,每次拿到新版数据自动跑一遍质量检查,是最值得投入的一件事。脚本做的事很固定:读取 shapefile → 检查坐标系 → 转 Albers → 修复几何 → 重算面积 → 输出报告。内容包括无效要素数量、重复要素数量、面积总量、与上一版数据的差异对比。跑一次一秒钟,但能在问题数据进入分析管线之前就拦截住。

第二件值得做的事是保护区和行政区划的叠加统计。用下面的代码可以快速算出每个县面积占比:

import geopandas as gpd reserves = gpd.read_file("自然保护区_albers.shp") counties = gpd.read_file("县级行政区_albers.shp") # 空间求交:各县与保护区边界的交集 inter = gpd.overlay(counties, reserves, how="intersection") inter["area_km2"] = inter.geometry.area / 1e6 # 按县名汇总保护区面积并算占比 reserve_area = inter.groupby("县名")["area_km2"].sum() county_area = counties.set_index("县名").geometry.area / 1e6 coverage = reserve_area / county_area * 100 print(coverage)

这段代码的威力在于:叠加求交后按县汇总,直接得到每个行政区被保护区覆盖的百分比,这是做生态保护红线评估、自然保护地整合优化时最常用的基础指标。注意前提是 counties 和 reserves 必须在同一个等积投影下,否则面积比例在低纬度和高纬度地区整体失真。

第三件值得做的是把数据发布成标准地图服务,不管是 ArcGIS Server 还是开源的 GeoServer 都可以。这能让整个团队都通过 URL 访问同一份保护区边界,不同项目不再各自拷贝 shp,避免版本漂移。发布前记得先完成第 5 章的去重和几何修复,否则服务端不会报错,但用户叠加统计时会得到一份错误的数字。

说句实话,我第一次拿类似数据做全国面积统计时,就是没做投影转换,直接在 WGS84 地理坐标系下量面积,结果总量比官方公布数字少了十几个百分点,被项目负责人当场问住。从那以后养成的习惯是:任何面积统计之前,先看一眼右下角坐标是经纬度还是米,再跑一步投影转换,三秒钟的成本,换一整条分析链路的可信度。希望帮到你。

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

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

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

立即咨询