尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

2020全国村名点SHP数据实用手册:解压、坐标系转换与格式互转指南

2020全国村名点SHP数据实用手册:解压、坐标系转换与格式互转指南 简介本资源为2020年全国村级行政单位空间定位数据面向GIS从业者、城乡规划研究者、乡村振兴项目实施人员及地理信息相关专业师生解决基层行政区划点位缺失、空间分析底图不全等实际问题。压缩包共6个标准Shapefile组成文件shp存储村庄点位坐标、shx索引文件、dbf含村名、所属乡镇/县区等属性字段、prj坐标系定义WGS84、xml元数据说明及ReadMe.txt字段解释与使用提示完整支撑ArcGIS、QGIS等平台直接加载与空间分析包体大小59.26MB。已有2759人学习下载可直接用于制作全国村庄分布热力图、开展县域内村庄服务半径评估、叠加人口或经济指标进行聚类分析亦可作为农村基础设施选址、扶贫成效空间验证、数字乡村平台建设的核心地理底图。 干过GIS这行的人手里多半都有几个压箱底的数据包。2020年全国村名点数据shp文件.rar这类资源听起来不起眼真正用起来却能顶半边天——村名点数据是行政边界、人口分析、农村电商物流布点、地名地址匹配等项目的底图数据之一。尤其2020年这个时间断面正好衔接第七次全国人口普查前后的行政区划调整村级点位信息对做区域对比研究的人来说非常关键。但你真拿到这个RAR压缩包时麻烦才刚刚开始。文件体积大、解压报错、打开乱码、坐标系不对、字段看不懂、想转成其他格式又搞不定。这篇文章不是给你念ArcGIS教材而是把我实际操作这个文件、处理这些问题的完整过程摊开讲包括解压校验、打开排查、拆分转换到最后的避坑经验全程可复现。1. 解压前先看懂这个包RAR文件的体积、结构与校验1.1 为什么村名点数据通常以RAR格式分发很多刚入行的朋友一看.rar就习惯性双击结果发现要么解压到一半卡住要么解压出来一堆文件不知道谁是谁。先解释一个底层逻辑shp文件本身就是多文件结构一个完整要素类至少由.shp几何、.shx索引、.dbf属性、.prj投影四个文件组成加上.cpg、.sbn、.sbx、.xml这些附加文件一组数据动辄十几个文件。如果用裸shp格式传输很容易漏文件而且全国级别的村名点数据量级通常在几十万到上百万条记录dbf属性表轻松上百MB。RAR分卷压缩在这里起到两个作用一是把多文件打包成一个整体避免传输时缺胳膊少腿二是通过压缩算法把体积压到原来的三分之一左右方便网盘分享和邮件传输。你要做的第一件事不是急着解压而是先看包的整体情况。右键属性看压缩包大小如果超过1GB要考虑到解压后可能翻倍再看是不是分卷包名字类似2020年全国村名点数据shp.part1.rar、part2.rar这样的说明原始文件比较大被拆分成了多个分卷。分卷包必须保证所有分卷文件放在同一个文件夹内改任何一部分的文件名都会导致解压失败。1.2 分卷压缩与解压顺序我习惯用的解压工具是WinRAR和7-Zip双保险。WinRAR对RAR5格式支持最好解压大文件时进度条、剩余时间都显示得比较准7-Zip免费开源如果只是临时用一下不想付费直接拿7-Zip解压RAR也完全没问题。操作上选中第一个分卷.part1.rar或.rar右键选择解压到当前文件夹或解压到指定文件夹软件会自动读取后续分卷不需要你手动一个一个解。这里有个容易踩的坑文件名里的中文编码。如果压缩包是别人在Windows下用GBK编码压缩的你用macOS解压解出来的文件名可能是乱码甚至路径错乱。建议解压前先建一个英文路径的文件夹比如D:\GISData\village_2020避免中文路径和特殊符号。解压过程中如果提示你需要拥有下列分卷才能继续解压或者诊断信息里报某个分卷CRC错误说明某个分卷下载不完整重新下载对应分卷即可。提示如果压缩包带了注释或说明文档解压后先读txt说明很多数据来源、坐标系、属性字段解释都在里面比你自己猜省事得多。1.3 解压完成后的三个校验步骤解压出来不是终点我一般按三步校验避免后面打开才发现数据是坏的。第一步看文件结构。正常解压后应该有一堆文件其中最关键的是以村名点命名的.shp、.shx、.dbf、.prj四个核心文件。如果发现只有.shp没有.shx或者.dbf大小为0KB基本可以判断数据不完整重新解压或重新下载。第二步看体积是否符合预期。全国村名点数据解压后主文件通常几百MB到1GB以上这是正常现象——点要素本身几何简单大头在dbf属性表里毕竟每个村名、行政区代码、经纬度都在里面。如果你解压出来只有几MB那很可能是数据被裁过或者根本不是全国范围。第三步用ArcCatalog或QGIS的预览功能快速看一眼。ArcCatalog中在文件夹连接里定位到shp文件右侧预览窗口选择地理预览模式如果能看到密密麻麻的点分布在国界范围内说明几何数据基本正常选择表模式看属性表能正常显示说明dbf结构没问题。这一关过了再正式用ArcGIS Pro打开数据。2. 打开SHP之前的排查编码、坐标系与文件缺失2.1 没有CPG文件时的中文乱码打开shp后看到村名属性全是乱码这是最让人抓狂的问题。背后的原因其实很简单dbf文件存储字符串时用的是某种编码格式而ArcGIS读取时不知道应该用哪种解码就乱套了。国内村级数据dbf绝大多数字段都是GBK/GB2312编码少数新制作的数据用UTF-8。ArcGIS判断编码的依据是.cpg文件如果数据包里没有.cpgArcGIS会用系统默认编码去猜在中文操作系统上通常能猜对GBK但如果你的软件是英文环境或者新版本改了处理逻辑就容易读成UTF-8全村地名全变成锟斤拷。排查方法打开shp的属性表如果村名、所属省份这类字段显示为问号、方框或锟斤拷基本就是编码判断错误。解决方式有两种——在QGIS里加载shp时右下角会弹出选择数据源编码手动选GBK或UTF-8在ArcGIS Pro里则麻烦一些需要给数据补一个正确的.cpg文件再重新加载。操作步骤在shp同级目录新建一个文本文件内容写GBK或UTF-8文件名改成和shp主名完全一致扩展名为.cpg例如village_2020.cpg然后重新打开shp即可。经验教训我拿到一个外部数据源时不管有没有.cpg文件都会顺手用Notepad打开dbf前的.cpg看一眼养成习惯以后能少踩很多次乱码坑。2.2 坐标系的识别与转换坐标系是另一个高频问题。村名点数据的坐标系通常有两种情况一是WGS84经纬度GCS_WGS_1984二是CGCS2000China Geodetic Coordinate System 2000中国2000国家大地坐标系下的经纬度或高斯投影。在ArcGIS Pro中右键图层打开属性切到源选项卡看空间参考那一行。如果显示GCS_WGS_1984或者CGCS2000且单位是度Degree说明数据是地理坐标系经纬度直接存储如果显示CGCS2000_3_Degree_GK_CM_102E这类带中央经线的投影坐标系说明是投影坐标坐标值是带单位的米制值。搞清楚是哪种坐标系之后还要确认经纬度值本身是否合理。村名点的经度范围应该在73°E到135°E之间纬度在18°N到54°N之间。如果你打开数据发现坐标值全是几百上千万的数字那一定是投影坐标被误读成经纬度了或者反过来。此时不要直接修改坐标数值而是用ArcToolbox里的定义投影工具重新指定正确坐标系再用投影工具转换到你需要的坐标系。如果你要做的是Web端可视化或加载到三维地球类应用通常的流程是把数据转换成WGS84地理坐标系并导出经纬度字段如果你要和当地地形图、国土调查数据叠加分析则要转成对应的CGCS2000带号投影比如中央经线120°E就用CGCS2000_3_Degree_GK_Zone_40。转换完成后务必再叠一个已知底图比如在线影像底图目测检查点位是否落在合理位置。2.3 属性表结构与字段语义数据能显示之后别急着开工先看明白属性表。村级点数据的常见字段包括字段名含义说明类型NAME / 村名行政村名称文本PROVINCE / 省所在省自治区/直辖市文本CITY / 市所在地级市/地区文本COUNTY / 县所在县/区文本CODE / 行政区划代码12位村级行政区划代码文本X / LONGITUDE经度或X坐标双精度Y / LATITUDE纬度或Y坐标双精度TYPE / 类别村委会、居委会、农牧点等文本拿到手先做两件事第一统计一下数据记录总数和官方公布的村级行政区数量做个粗略对比正常应该在60万到70万量级含村委会、居委会如果差太多说明数据质量存疑第二检查行政区划代码字段是不是12位的标准代码前6位对应县级中间3位对应乡镇级后3位对应村级。这个字段是后续做聚合统计、空间连接的重要键值。如果数据里没有你想要的字段比如你想做人口分析但属性表里只有村名和坐标那也没关系——可以通过行政区划代码把外部的人口统计表join进来。注意代码长度必须完全一致join前把两张表的代码字段都改成文本类型否则数值类型的前导零丢失会导致匹配失败。3. 从点数据到业务成果拆分、格网与格式互转3.1 按行政区划拆分成多个省的SHP全国数据好用是好用但放到某些项目里反而太大了。比如我只负责云南省内的分析拿着全国60万个点在配置差一点的台式机里跑每个操作都要等十几秒。这时候最合理的处理是先按省拆分。ArcGIS Pro中实现按属性拆分的标准操作是使用按属性分割工具Divide by Attribute输入要素选择村名点shp分割字段选择省名称字段输出位置指定一个文件夹工具会把每一类的要素分别导出成一个shp文件。拆分完成后文件夹里自动生成云南省.shp、贵州省.shp等文件。如果你的ArcGIS版本里没有这个工具也有替代方案先用按属性选择选出目标省份右键图层选择数据→导出要素导出时选择所选记录同样能达到拆分效果。只是手动操作效率低建议用ModelBuilder循环跑一遍。拆分之后还要做一个细节工作重新整理每个省文件的字段删掉项目用不到的列避免dbf过大影响后续运算。ArcGIS Pro的删除字段工具可以批量删字段注意是物理删除操作前建议备份原数据。3.2 渔网分割生成服务网格网上很多人搜渔网分割shp实际场景常见于把点数据按规则网格划分到不同区域比如做网格化疫情排查、网格化环保巡查、商业选址的覆盖半径分析。这里的渔网Fishnet是ArcGIS里生成规则格网的工具和shp分割是两个不同的操作但经常组合使用。如果你想要做一个2km×2km的方格网把村名点按落到哪个网格打上格网编号操作顺序是第一步用创建渔网工具生成覆盖全省范围的格网面要素渔网范围可以从一个底图图层的范围提取也可以在工具里手动输入左上角和右下角坐标第二步用空间连接工具把村名点要素连接到渔网面要素连接操作选择JOIN_ONE_TO_MANY匹配选项默认INTERSECT即可第三步输出结果里会多一个网格唯一编号字段后续按这个字段聚合统计每个格网里的村点数、农产品供应点数量等都很方便。渔网分割的另一个常见用途是拆分超大shp。比如一个全国性的点图层太大运行某些工具时内存爆掉这时可以按10°×10°的经纬度网格把全国切成若干块分块处理完再合并。合并工具用合并Merge前提是各分块的字段结构完全一致建议合并前统一输出坐标系。3.3 常用转换shp转txt、CAD互转、shp转3dtiles搜相关词最多的三个转换需求我这里逐一写清楚。第一个shp转txt。这个需求的本质是想把shp里的坐标和属性导出成通用文本格式给其他程序用。最简单的方法是用表转Excel或表转CSV这两个工具都在ArcToolbox的转换工具集下直接输出属性表为CSV文本。但有个坑如果shp是投影坐标系导出的是投影坐标X、Y如果你要的是经纬度必须先通过添加几何属性工具Add Geometry Attributes把每个点的经纬度添加为新字段再导出CSV。工具里有POINT_X、POINT_Y这些属性类型可以分别添加经纬度和投影坐标。如果你要的是那种包含几何路径的txt格式比如一些土方计算软件、GPS手簿导入格式那就要用要素转JSON或第三方工具。有些测绘单位会用测定界 shp 转 txt 工具.tbx这类自定义工具本质就是用Python脚本遍历要素按预设格式输出点名、X坐标、Y坐标。第二个DXF转shp。这一般发生在CAD底图和矢量数据对接的场景。可以把DXF转shp直接用ArcToolbox转换工具里的从CAD转出功能输入DXF文件后选择输出要素类型点、线、面需要注意的是DXF文件里同一种图层可能同时含有点、线、面直接转shp会丢几何类型建议先用CAD转地理数据库把完整信息导入到gdb再按需要导出为shp。转换后还有一个常见问题CAD里的文字注记如果用TEXT实体会生成点要素属性里的文本字段保存的是文字内容这对转村名注记非常方便。第三个shp转3dtiles。城市级、乡村级三维场景建模中经常要把点数据叠加到三维地球上。村名点数据转3dtiles的核心思路是把点变成三维场景里的广告牌Billboard或点云主流做法是使用CesiumLab的矢量切片/三维切片工具直接把shp拖进CesiumLab设置高度字段和样式输出3dtiles数据格式。如果你的数据量不大也可以先转成GeoJSON再用Cesium ion官方工具在线切片。做这类转换时坐标系统一用WGS84经纬度高度字段如果没有可以直接填0或从DEM采样。转换完成后用CesiumJS加载一个效率较高的做法是把属性字段精简到只保留名称、代码、类型三个核心字段因为3dtiles属性太大会拖慢前端浏览器加载速度。我再单独说一下su怎么导入shp这个问题虽然它不在转换清单里但很多人做草模的时候会问。SketchUp本身不能直接导入shp通常的做法是先把shp转成DXF或DWG再通过SketchUp的导入DWG/DXF选项导入导入后注意调整单位CAD里单位可能是米SketchUp默认毫米需要统一比例。4. 实测中容易踩的坑与解决思路4.1 文件太大分包、压缩与取舍手头这个文件太大发又发不出去存又占空间怎么办这个要分场景解决。如果你是要给别人传输/分享用WinRAR的分卷压缩最直接。右键选择添加到压缩文件在常规选项卡里把压缩分卷大小设置为500MB或者自定大小比如500M软件会自动生成part1、part2等多个分卷。对方解压时只要把全部分卷放在同一目录解压第一个文件即可自动还原。注意分卷必须下载完整少一个都解不出来所以我在传大文件时通常会把分卷一个一个传并在文件名里标注序号方便对方检查。如果你是为了减少存储空间建议不要只压一遍RAR就不管了而是从数据源头上做瘦身。第一优先级是删掉不需要的字段保留核心字段第二优先级是检查有没有冗余空间数据比如有面积或长度字段但值是无效计算产生的第三优先级是考虑把全国数据按省拆成多个小shp只保留会用到的省份。空间上能省下不少更重要的是后续处理性能显著提升一个500MB的全国点文件拆成各省后单个省几十MB处理速度快很多。文件太大还有一个容易被忽略的原因——shp的dbf属性字段里塞了大量长文本比如有些数据源的村名备注字段长达254字符还有几十条历史沿革记录。这类字段对空间分析毫无用处却占满了dbf存储空间建议直接删除。4.2 RAR密码与损坏文件关于RAR密码的问题我要多说两句。如果你从公开渠道下载的压缩包提示有密码通常有三种情况一是数据分享者设了密码密码一般写在下载页说明或网盘目录里二是压缩包在传输过程中被第三方加密三是你下载到的文件本身不完整导致解压程序误认为头部被破坏。优先处理逻辑是这样先看看压缩包注释WinRAR打开文件后右侧信息栏一般会显示添加注释作者如果写了密码会留在那里。找不到就去下载源页面找提取码/解压码相关说明。如果都没有而你又明确知道数据是自己加密的只是密码忘了这就比较麻烦——RAR的加密机制很难绕过暴力破解时间长且不一定成功。我的建议是先找原始来源重新下载因为很大概率是别人二次分发时加了密原始发布者那里反而是免密或统一密码。与其花时间破解不如重新获取。关于损坏文件常见提示是压缩文件已损坏或CRC校验失败。先不要急着重新下载整个大文件先用WinRAR的修复功能工具路径在工具→修复压缩文件把损坏的RAR包用RAR格式修复一次看能否重建完整文件。如果修复失败再检查一下是不是某个分卷没下载完整只重新下载提示出错的那一个分卷即可不需要全部重来。这一条在带宽有限的环境下特别管用。4.3 数据质量检查重复、缺失与偏移拿到村名点数据我强烈建议你做一个简单的数据质量体检再决定怎么用。三项必查项重复点、缺失值、空间偏移。重复点检测打开属性表在行政区划代码字段上使用查找重复项工具Find Identical如果查出大量重复记录说明原始数据可能来自多个来源的拼接代码相同但坐标略有偏移。处理时以行政区划代码为基础只保留坐标精度最高的一条记录其余删除。缺失值检查重点看村名字段和代码字段是否为空。有些村名点是标注点本身不是行政村驻地点可能是自然村、屯、农牧业点这类记录的业务含义和行政村不同如果后续要做村级统计必须用TYPE字段过滤只保留村委会类型。空间偏移检查这个属于最隐蔽的坑。我碰到过一次数据整体偏移了大概2公里原因是源数据在分发时坐标系定义写错了明明存的是CGCS2000高斯投影坐标prj文件却写成WGS84经纬度加载后所有点位落在国界外。排查方法是加载全国行政区划矢量数据与村名点叠加随机抽几个点核对地名和所在的县是否匹配。如果发现某一片区域整体偏移但形状没变形多半是坐标系定义问题用定义投影改成正确坐标系就能套合如果是个别点偏差那可能是地名不匹配的错标点需要人工或基于最近距离重新匹配。如果只想做快速可视化展示不做精细空间分析也可以省掉偏移检查但凡是涉及统计、定位、路径规划的数据应用这一步不能省不然后面每个分析结果都会跟着错。5. 几个典型场景的完整操作流5.1 云南省县域轮廓叠加下的村名点提取群里有人搜索云南省县域轮廓shp配合村名点来用我以这个为例走一遍完整操作。第一步准备底图数据。下载云南省县域轮廓shp通常包含县界和县名属性。第二步加载村名点shp和县域轮廓shp在ArcGIS Pro里用按位置选择工具目标图层选村名点源图层选云南省县域轮廓相交方式选与源图层要素相交完成选择后被选中的就是落在云南省范围内的村名点。第三步右键导出所选要素为新的shp。这里的技巧在于如果之后经常要按省份提取建议把步骤录制成Python脚本用arcpy的SelectLayerByLocation_management函数循环处理一次生成全国各省村级点文件。手工点击的话三十多个省点下来确实会浪费不少时间。5.2 用市级面要素快速聚合村点数量有些项目不放省更关注市一级的汇总统计。比如核算每个地级市下辖的村名点数量以此作为医疗资源分布的研究基础数据。操作上也是两步先按位置选择某市面要素内的村点再用汇总统计数据工具按城市字段统计村点数量。如果数据量超过百万建议使用空间连接方式一次完成连接面要素和点要素时匹配选INTERSECT在弹出的字段映射里添加计数统计输出要素里自动带上每个网格/城市对应的村点数。这里提醒一下空间连接默认是一对多一份点会被连接到多个面如果你用的是一对一模式有些面积重叠的面会导致同一个点落到多个市统计结果虚高。务必检查面要素之间是否有重叠有重叠就先做融合。5.3 珠江流域shp叠加村名点做缓冲区分析珠江流域shp和村名点叠加使用的场景可能是做流域范围内村级点位分布统计。这类操作的核心是把流域面要素和村名点做相交或按位置选择得到流域内的村庄点。进一步如果要分析河流两侧村点的数量就要对河流水系线做缓冲区再和点做叠加。ArcGIS的缓冲区工具默认生成面要素输入要素可以是线或面。缓冲距离要根据数据尺度设定比如做500米、1公里、5公里三级缓冲区。生成后建议对重叠缓冲区做融合避免统计时同一个点被多个缓冲区重复计数。还有一个小经验河流线要素通常是一整条多段线缓冲生成后面积巨大分析前最好按流域、干流/支流字段筛选分河段做不然统计结果会失衡。6. 收尾还要注意的几个小细节最后分享几个我在实操中反复用到的小习惯虽然不起眼但能省下很多返工时间。第一所有从RAR解压出来的shp数据先复制一份到项目专用的gdb文件地理数据库里再用gdb里的数据做后续操作。gdb对要素类处理性能比裸shp快且支持更丰富的字段类型和拓扑关系万一操作失误原始shp还在。第二涉及坐标系转换时原数据不要覆盖保存始终用投影工具生成新文件并在文件命名里带上坐标系后缀比如village_2020_GK_120E.shp。命名规范虽然麻烦但在混合坐标系的项目里能救命。第三导出CSV或txt时注意字段值里可能包含逗号、换行符、引号这些特殊字符会让文本文件错乱。导出前用计算字段把可疑字段里的逗号替换成全角逗号或者统一用制表符分隔通常能避免很大的麻烦。第四处理全国级数据时ArcGIS Pro比ArcMap流畅得多。如果电脑配置一般建议把所有操作分省进行先把全国shp按省提取到gdb再逐省处理每天跑两三个省一周也就跑完全国比一次操作卡死重来要高效得多。村名点shp文件就是这么个东西看着平平无奇用起来思路千变万化。文件本身只是一个起点真正重要的是你拿它去回答什么问题、和什么数据叠加分析。把解压校验、编码识别、坐标系排查、拆分转换这些基本功练扎实无论拿到什么数据包你都有章可循。希望这篇实操笔记能帮你少走一些弯路更快把数据变成真正有价值的分析结果。本文还有配套的精品资源点击获取
返回列表