资讯详情

资讯详情

长江经济带地级市矢量图:ArcGIS坐标系检查与数据挂接实战

简介长江经济带GIS矢量图是一份面向空间分析与地图制图的专题数据集覆盖2015年长江经济带沿线所有地级市行政边界适合政策规划、环境研究与区域经济分析等场景尤其适合GIS从业者与研究者使用。压缩包共7个文件囊括shp、shx、dbf、prj等标准Shapefile组件加上sbn、sbx空间索引和xml元数据整体大小仅294KB专为ArcMap设计导入后无需转换即可开展地图制图、空间查询等操作。目前已有1660人学习下载。这份矢量数据以精确的几何坐标描述各城市行政边界、相对位置等关键要素可直接用于制作专题地图、叠加生态与经济属性并快速可视化也能支撑区域差异比较、城市协同效应评估及生态保护布局分析为理解长江经济带城市格局提供可靠的地理底图。也可服务于地理教学与公众科普。1. 长江经济带地级市矢量图2015年边界数据到底够不够用做长江经济带区域分析的人第一件事往往不是下载统计年鉴而是找对一份能用的地级市边界矢量图。我见过不少项目把重心放在模型上结果底图坐标系错、缺几个市、属性表满是乱码后面所有分析都在一个不靠谱的地基上跑。这份长江经济带GIS矢量图的核心价值在于它按2015年行政区划口径整理了地级市面要素带省、市两级字段可以直接拖进ArcGIS做专题图、挂接经济数据或做空间统计。适合三类人做区域经济研究的做生态环境空间分析的以及刚接触ArcGIS但需要快速出图的学生。它的数据量不大但能不能直接用取决于你拿到后会不会先验一遍。2. 拿到文件先做体检坐标系、边界、属性表三个关键动作2.1 shapefile 文件包到底缺不缺件大部分这类资源以压缩包形式分发解压后应该看到一组同名不同后缀的文件。很多人犯的第一个错误是只把 .shp 拖进 ArcMap其余文件没管结果显示位置不对或者属性表为空。shapefile 不是一个单文件而是一个文件集合每个后缀负责一类内容。文件后缀作用缺失时的表现.shp几何图形本身图层无法加载.shx形状索引打开速度慢或无法读取.dbf属性表显示不出字段数据.prj投影坐标系定义提示未知空间参考.cpg字符编码声明中文属性可能乱码解压后用文件管理器看一眼最稳妥的是直接在 ArcCatalog 里预览。在 ArcGIS 中打开图层属性切到“源”选项卡如果坐标系显示“未知”那就是 .prj 文件缺失或没被识别。cd /path/to/your/shp_dir ls -la这条命令用来确认文件家族是否齐全。常见情况是只有 .shp 和 .dbf缺 .prj 和 .cpg前者会导致坐标系未知后者会在地理坐标系和投影坐标系之间产生歧义。判断这份数据能不能直接用先看缺不缺这两件。2.2 打开后先看要素数量与边界轮廓把 .shp 拖进 ArcMap 后先别急着放大按下全图缩放观察整体轮廓。长江经济带覆盖 11 个省级行政区地级市数量在 130 个左右如果要素数量明显少于这个量级说明数据可能只覆盖了部分区域或者某些地级市被合并处理过。接下来要做两步检查。第一步是打开属性表按省级字段做一下“按属性选择”顺次选中每个省观察高亮范围是否与预期吻合。第二步是局部放大到某个地级市的边界看轮廓是平滑的还是锯齿状的。锯齿本身不致命但如果边界穿过明显的大江大河主航道就要怀疑数据是经过简化处理的。我一般会顺手把“检查几何”工具跑一遍。这个工具在 ArcToolbox 的数据管理工具集里输入图层后能检查出空几何、重复几何、自相交等错误返回值 0 说明几何层面没毛病非 0 则需要修复几何后再使用。import arcpy fc rD:\gis_data\city_2015.shp desc arcpy.Describe(fc) print(desc.spatialReference.name) # 坐标系名称 print(desc.spatialReference.linearUnitName) # 若是地理坐标系此处为 None with arcpy.da.SearchCursor(fc, [SHAPEAREA]) as cur: for row in cur: if row[0] is None or row[0] 0: print(存在面积异常要素)这段脚本最有用的是打印坐标系名称和线性单位。如果输出结果是“GCS_WGS_1984”且 linearUnitName 为 None说明这是地理坐标系如果输出“Albers_Conic...”且单位为 Meter则是投影坐标系。属性表检查时如果看到面积字段是负值说明该要素的环方向有问题建议标记出来回头处理。2.3 坐标系确认WGS84 还是 CGCS2000单位是度还是米这是矢量图使用里最关键的判别点。WGS84 和 CGCS2000 都属于地心坐标系在省级尺度上图斑整体偏移不大但如果把两份不同坐标系的数据叠在一起边界会出现肉眼可见的错位尤其在河流分界处。判定方法很简单右键图层打开属性看“源”选项卡里的地理坐标系名称。常见写法是 GCS_WGS_1984 或 GCS_China_Geodetic_Coordinate_System_2000。如果显示的是投影坐标系比如什么_Albers_Equal_Area_Conic那说明数据已经做过投影。确认坐标系之后还有个容易混淆的操作定义投影和投影是两回事。定义投影是给数据“补上”坐标系信息投影是把数据从一套坐标系“转换”到另一套。很多人在数据没定义坐标系时直接选了“投影工具”结果报错就是因为工具用错了。提示ArcMap 中遇到“未知空间参考”时在 ArcToolbox 里选“定义投影”先给数据指定正确的坐标系名称再谈转换。如果做面积分析建议把地理坐标系的数据投影到阿尔伯斯等积投影上。长江经济带横跨维度范围较大阿尔伯斯投影双标准纬线通常取 25°N 和 47°N中央经线取 105°E 或 110°E具体参数以你手上数据范围为准。3. 挂接统计年鉴数据从几列 CSV 到一张能算的专题面3.1 准备可挂接的 CSV城市名、指标、年份三列起步拿到矢量图后属性表里往往只有行政区代码和名称真正的分析指标需要你自己挂进去。许多人直接打开 Excel 复制粘贴结果因为面要素排序和 Excel 行排序不一致整列数据串位。正确做法是准备一个以城市名或行政区代码为连接键的 CSV 文件。我常用的 CSV 结构是这样三列起步字段名类型说明city_name文本城市名须与矢量图属性表里的命名规则一致code_2015文本行政区划代码2015年口径gdp_2015数值当年指标值字段名尽量用英文不是 ArcGIS 读不了中文列名而是在后续 Python 脚本处理时英文更省心。如果统计年鉴里已经有行政区代码优先用代码做连接键因为代码的唯一性远高于名称。Excel 另存为 CSV 时注意编码格式。ArcGIS 10.x 在简体中文环境下读 GBK 编码的 CSV 通常没问题但如果你用新版 ArcGIS Pro 或跨平台交换数据建议另存为“CSV UTF-8”格式。另存后用文本编辑器打开看一眼确认没有出现“锟斤拷”之类的乱码。import pandas as pd df pd.read_csv(city_stats_2015.csv, dtype{code_2015: str}) df[city_name] df[city_name].str.strip() df[city_name] df[city_name].str.replace(市, , regexFalse) city_list [某某市, 某某州] # 实际使用中请从矢量图属性表导出 miss set(df[city_name]) - set(city_list) print(无法匹配的名称:, miss)这段脚本做的事情是规整 CSV 里的城市名去掉首尾空格去掉“市”后缀然后和从矢量图导出的城市名集合比对输出匹配不上的名称。注意 dtype 参数把行政区代码强制按字符串读避免前导 0 丢失replace 里的 regexFalse 表示只替换文字“市”不做正则匹配。3.2 表连接连接键的四种匹配失败原因在 ArcMap 里右键图层选择“连接和关联→连接”然后把 CSV 表按 city_name 或 code_2015 关联到面图层属性表。连接成功后面要素的属性表会多出指标字段右键图层打开符号系统就能直接按新字段做分级。匹配失败是常态常见原因有四种一是 CSV 和属性表里的城市命名规则不一致一个带“市”一个不带二是名称里夹了全角空格或制表符三是连接键字段类型不匹配文本字段和数字字段之间无法连接四是 CSV 里同一个城市出现了多行导致挂接后出现一对多重复记录。“保留匹配的记录”选项是默认的这时挂接不上的行会显示空值。有人为了保留全部记录选了“保留所有记录”结果所有未匹配的要素也保留着后续做统计时容易把空值行算进去需要注意。注意检查连接结果时用“表→导出”把连接后的属性表导成新 CSV再用 Python 看缺失项比在 ArcMap 界面里滚动查找高效得多。3.3 按省汇总与空间统计从市到省级的聚合逻辑地级市数据挂接好后下一步往往是按省级行政区汇总。这里不需要把市面融合成省面直接用统计工具按字段分组求和即可。import arcpy arcpy.Statistics_analysis( in_tablerD:\gis_data\city_2015.shp, out_tablerD:\gis_data\province_stats.dbf, statistics_fields[[gdp_2015, SUM], [gdp_2015, MEAN]], case_fieldprovince )这段代码把地级市面的 gdp_2015 字段按省分组同时求总和和平均值输出一个省级统计表。统计字段写成 SUM 和 MEAN 两行是为了兼顾总量和均值的展示需求。如果你还需要人口密度就在 statistics_fields 里加一个 POP_2015 字段的 SUM然后在后续步骤里用省面积字段除一下。这样处理不会改变原始面要素后续要做地级市级专题图时数据依然完整。4. 符号化与出图分级设色、标注避让和 300dpi 导出4.1 分级设色时分类数怎么定自然间断点还是分位数数据挂接完成后符号系统是决定图面好坏的关键。右键图层打开属性切到“符号系统”选“数量→分级色彩”字段选指标字段。ArcGIS 提供了自然间断点、分位数、相等间隔、几何间隔四种分级方式新手最容易困惑的是前两种怎么选。分级方式原理适用场景自然间断点按数据分布寻找类内方差最小的断点数值分布不均、有大量极端值分位数每级包含相同数量的要素想强调排名、关注省际相对位置相等间隔从最小值到最大值均分数值分布均匀时便于对比几何间隔按倍数关系分段数据跨度大且近似对数分布我一般先看数据直方图右偏严重时用自然间断点更合适因为它会把极端值单独聚成一类图面不会出现一整片最深色。分位数适合做排名解读但会掩盖数值差异的绝对大小写论文时容易被审稿人追问分类依据。分类数通常设 5 级。设得太多图例很挤太少又看不出梯度。颜色带我习惯选“渐变色”而非“随机色”。ArcGIS 里右键图例逐级调整颜色去掉最浅的两级让图面层次更明显。4.2 标注避让与透明度地图不再糊成一团面图层叠加标注时地级市名称互相压盖是通病。在图层属性里勾选“标注此图层中的要素”然后点击“放置属性”把“冲突检测”设为允许ArcGIS 会自动避让重叠名称。如果还压盖可以在放置属性里把“权重”调高或者把字体大小降到 7 号。长江经济带市域密集的区域中部几个省的地级市面积小、间距近名称容易叠在一起。用“标注管理器”按省级字段控制显示比例只有在缩放级别较高时显示所有地级市名称全图时只显示省级名称。透明度是另一个常被忽略的控制项。在图层属性→显示选项卡里把透明度设到 20% 至 30%底下的水系或地形图能透上来图面会显得更有空间层次。但出图打印时透明度过高会导致颜色失真一般 20% 就好。4.3 导出设置JPEG/TIFF、分辨率和空白边距出图导出时常见的问题是图面模糊、边缘发虚这通常是因为导出分辨率太低。ArcMap 里“文件→导出地图”JPEG 质量拉到最高分辨率设置 300dpi。如果是投稿论文建议导出 TIFF 格式配 LZW 压缩避免 JPEG 压缩带来的色块边缘。import arcpy mxd arcpy.mapping.MapDocument(rD:\gis_data\region.mxd) df arcpy.mapping.ListDataFrames(mxd)[0] lyr arcpy.mapping.ListLayers(df)[0] if lyr.supports(SYMBOLOGY): lyr.symbology.classValues [0, 500, 1000, 2000, 4000] lyr.symbology.classBreakField gdp_2015 arcpy.mapping.ExportToJPEG( mxd, rD:\gis_data\region_output.jpg, resolution300, quality95 )这段代码根据现有符号系统重新设置分级断点然后导出 300dpi 的 JPEG。classValues 列表手动指定断点适合你知道数据分布边界的情况如果你是第一次做建议先在界面里用自然间断点生成再回读断点值。ArcGIS Pro 用户注意arcpy.mp 的接口和 arcpy.mapping 不同symbol 设置需要操作 renderer 对象。导出前还要处理布局空边。数据框四周留白太多是常见问题在布局视图里选中数据框右键“属性→大小和位置”手动调整或者在数据框属性里选择“裁剪→裁剪至形状”把边界压到要素实际范围。图例、比例尺、指北针按出图规范补上但别让图例遮挡住图面关键区域。5. 避坑记录五个最容易翻车的地方与对应解法5.1 数据源本身的问题投影缺失、边界缺口、市域缺失第一个坑打开图层时显示“未知空间参考”地图跑到坐标原点附近。原因是压缩包里没有 .prj 文件或者 .prj 内容被换成了别的坐标系。解决方法是先用第 2 章的脚本查看坐标系信息确认数据实际应属 WGS84 还是 CGCS2000然后在 ArcToolbox 里用“定义投影”补上坐标系名称而不是用“投影”工具强行转换。第二个坑沿省界或市界放大后边界出现明显的锯齿或细缝两个相邻市之间的面没有完全贴合。现象是放大后能看到一条条白色线状缝隙原因是数据在制作时经过简化或不同市分别配准。解决方法是先用“检查几何”排除几何错误再用“融合”把地级市按省字段融合消除细缝如果细缝不影响宏观分析也可以直接在符号系统里给面边界加一个与填充色一致的描边视觉上盖掉缝隙。第三个坑全图范围少了几个地级市或某个市的范围明显偏小。现象是属性表里要素数量与公开口径不符。原因通常是数据源混合了不同年份的行政区划2015 年前后部分地级市经历过撤县设区范围发生了调整。解决方法是找到较完整的全国市级面数据按省会位置和河流走向逐个核对缺失的市用“按位置选择”从全国数据里裁出来再合并进当前图层。5.2 操作过程中的问题乱码、挂接率低、面积异常第四个坑属性表里城市名显示成乱码或者导入 CSV 后中文列名全部变成问号。现象很明显字段值为“????”或“锟斤拷”。原因有两种shp 文件的 .cpg 编码声明缺失或 CSV 文件使用了与当前 ArcGIS 环境不匹配的编码。解决方法是先用文本编辑器把 CSV 另存为 UTF-8 或 GBK 编码再试一次如果是 dbf 里的字段本身乱码基本救不回来建议用 QGIS 打开原文件后另存为新 shapefile让 QGIS 自动重写编码信息。第五个坑面积字段计算结果大得离谱或者用“计算几何”算面积时得到的数值完全不可信。现象是面积数值出现 10 的 10 次方量级甚至出现负数。原因是数据仍处于地理坐标系单位是度而不是米如果你在“计算几何”里选了“面积地理坐标系统”选项结果会以平方度为单位返回。解决方法是先把数据投影到阿尔伯斯等积投影然后在内部字段计算中用“面积几何”配合要素的投影面积单位重新计算。注意判断数据是地理坐标系还是投影坐标系最直接的方法是看经纬度范围。如果面要素的边界范围在 70 到 140 之间那是经度如果范围在 700000 到 1400000 之间那是投影后的米制坐标。6. 三件事快速验收矢量图坐标系、行政区名、边界细节拿到任何一份地级市矢量图我都习惯先做三件事三件事做完不超过十分钟能筛掉八成问题。第一件事看坐标系。打开图层属性后看“源”选项卡找到坐标系名称和线性单位。如果是地理坐标系确认是 WGS84 还是 CGCS2000如果是投影坐标系确认单位是米。这一步决定你后面能不能直接算面积也决定你能不能叠地图。做区域经济分析需要算面积密度时必须先把数据投影到等积投影上。第二件事核对行政区名。把属性表导出成 CSV和当年统计年鉴的行政区列表比对用 Python 脚本做一次差集。用时几分钟能同时排查两个问题名称写法是否一致以及有没有漏市。名称写法问题可以提前规整成统一格式漏市问题则要在数据源层面解决。第三件事抽查边界细节。随便选一个你熟悉的地级市缩放到市级边界对照河流走向和相邻市界快速判断边界是否错位。如果轮廓基本吻合说明数据几何精度尚可如果边界明显偏离了你熟悉的水系位置那这份数据只能用于宏观尺度分析不能用于县级或街道级级别的精细制图。这三件事做完后顺手截图存档包括属性表、坐标系信息和全图轮廓各一张。后续做论文或项目报告时需要交代数据来源和预处理过程这三张截图就是现成的依据。这份矢量图下载后先跑一遍第 2 章的检查脚本再决定是否直接使用。从那以后我每次拿到矢量图都强制自己走一遍这三步再开始做专题图。这帮我避免过多次返工也让数据问题在项目早期就暴露出来。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →