资讯详情

长江下游干流GIS数据包处理:坐标系校核与山体阴影合成

📅 2026/9/11 23:41:02 | 华诺云谱 👁 阅读
长江下游干流GIS数据包处理:坐标系校核与山体阴影合成
简介面向 ArcGIS 用户与 GIS 学习者的长江流域下游干流区间水文地形数据包内含河流、湖区等 shp 矢量图层及 dem90m 栅格地形并配套 mxd 工程文件可满足流域制图、水文分析、科研展示与教学演示等场景需求无论新手还是有一定基础的用户都能较快上手。资源共包含 49 个文件压缩包约 26.27MB覆盖 shp/shx/dbf 矢量数据、adf 栅格地形、prj 投影信息、mxd 地图文档以及预先导出的 jpg/pdf/eps 成果图可支撑从图层编辑、空间查询到最终出图的完整流程。目前已有 1232 人学习/下载。对于熟悉 ArcGIS 的用户可在 mxd 中重新链接图层后一键出图快速获取研究区水系与地形叠加图不熟悉 GIS 的读者也能直接使用附带的图片成果免去软件操作门槛。数据整体聚焦长江下游干流区间包含河流、湖泊、地形等要素适合区域水文研究、空间分析练习及课程设计参考使用时建议根据研究区域自行复核精度。1. 先把长江下游干流数据包的构成摸清再谈怎么用拿到《长江流域-长江下游干流区间》这套数据常见的第一反应是双击长江干流下游区域地形图.mxd结果 ArcMap 打开后全是红色感叹号地图区域空白一片。这不是数据损坏而是 mxd 只记录图层路径不内嵌空间数据解压目录一变就找不到了。数据包里同时装有River_5.shp、长江下游干流区间.shp以及dem90m栅格还带好了已导出的 jpg、PDF、EPS 三种出图文件说明它不是单层数据而是一个“矢量水系 地形栅格 工程模板 成果图片”的完整制图包。适合两类人一类是做流域分析或论文配图但不想从零配准坐标的 GIS 用户另一类是完全不碰 ArcGIS只需要交付图片的设计、规划岗。前者要学会修数据源和统一坐标系后者只需找出图目录但要搞清楚图片的底图层能不能拆、分辨率够不够印刷。2. 坐标参考与 shp 属性检查.prj 与 .dbf 里到底写了什么2.1 先读 .prj 文件判断数据是经纬度还是投影坐标很多叠加错位的根因在于坐标系不一致而不是图形画歪了。.prj文件存的是 ESRI WKT 文本描述该图层的坐标系统、基准面、投影方式和单位。数据包中的长江下游干流区间.prj和River_5.prj可以直接用文本方式打开。cat 长江下游干流区间.prj输出内容大致以PROJCS或GEOGCS开头。如果以GEOGCS开头说明是地理坐标系单位为度如果以PROJCS开头说明是投影坐标系单位为米。长江流域制图的常见组合是 WGS84 地理坐标或者 Albers 等积投影两种坐标系叠在一起时ArcMap 会自动做动态投影显示但一旦做面积计算、缓冲区分析或者栅格重采样就必须统一。也可以用 Python 快速读取便于批量筛查多个 shp 是否同坐标系。from osgeo import ogr ds ogr.Open(长江下游干流区间.shp) layer ds.GetLayer() srs layer.GetSpatialRef() print(srs.ExportToWkt())这段代码通过 GDAL 打开 shp 并读取图层的空间参考ExportToWkt()返回标准 WKT 字符串。对比两条河流图层的输出结果就能确认它们是否使用同一地理坐标系。如果只想看单位可以打印srs.GetLinearUnitsName()或者srs.IsProjected前者返回米或度后者返回布尔值是最快的同类图层比对方式。2.2 .dbf 属性表里有网格编码先看懂再决定要不要做查询.dbf是 shp 的属性表文件存的是要素的属性字段。数据包里的River_5.dbf和长江下游干流区间.dbf都可以在 ArcMap 里右键图层打开属性表直接看。字段通常有编号、长度、名称有些河流分段数据会带等级字段比如用GRID_CODE区分主干和支流。在没有 ArcGIS 的环境下可以用 Python 的 dbf 库直接读取。import dbf table dbf.Table(长江下游干流区间.dbf) table.open() for record in table: print(record)输出结果是每条要素的属性记录。dbf.Table()读取 dBASE 格式文件open()打开后可遍历记录。这里强调一点.sbn和.sbx是 ArcGIS 为 shp 建立的空间索引文件数据包里这两个文件说明原始数据被编辑过索引复制或压缩传输时不要只拷.shp和.dbf否则 ArcGIS 会重新建索引大数据量下打开速度会明显下降。2.3 坐标系不统一时的通用处理路径如果dem90m栅格是 WGS84 经纬度而矢量图层是投影坐标拿到手的第一件事不是直接叠加而是先把栅格重投影到矢量所在的坐标系下。ArcGIS 里的标准路径是 ArcToolbox - Data Management Tools - Projections and Transformations - Raster - Project Raster。参数推荐设置说明Input Rasterdem90m原始 DEM 栅格Output Coordinate System按矢量图层坐标设置建议与 River_5.shp 保持一致Resampling TechniqueBilinearDEM 用双线性插值避免最近邻产生阶梯感Output Cell Size90 或与目标一致保持原始分辨率即可不强制重采样到更小命令行下也可以用 GDAL 完成同样的工作适合脚本化批量处理。gdalwarp -t_srs EPSG:32650 -r bilinear -tr 90 90 dem90m dem90m_utm.shp-t_srs指定目标坐标系-r bilinear指定双线性重采样-tr为输出像元尺寸。这里要注意的是判断原始栅格是否已有投影可以打开同目录下的metadata.xml或.aux.xml查看这两个文件记录了栅格来源和统计信息不要随便删除。3. mxd 双击打开全是红色感叹号图层重链接与出图前检查3.1 mxd 不存空间数据只存路径引用mxd 是 ArcMap 的工程文档记录的是图层文件路径、符号化方式、比例尺、图例等显示信息。默认情况下ArcMap 保存的是相对路径还是绝对路径取决于打开文件时勾选的选项。用户传到压缩包再解压后路径前缀变了ArcMap 自然找不到图层。数据包里的 mxd 双击后出现红色感叹号是 ArcGIS 使用的常规现象不代表图层文件缺失。修复的方法是先在 ArcCatalog 里建立文件夹连接把解压目录挂进去然后回到 ArcMap右键任意红色感叹号图层选择 Data - Repair Data Source在弹出的对话框里定位到解压目录下对应的 shp 文件。这个办法对单个图层有效但数据包里有五六个图层一个个点太慢推荐直接写脚本批量修复。3.2 用 ArcPy 批量修复 shp 数据源路径ArcMap 环境下用arcpy.mapping模块可以遍历 mxd 里所有断开的图层并批量替换数据源。import arcpy import os mxd_path r长江干流下游区域地形图.mxd data_dir r数据解压目录 mxd arcpy.mapping.MapDocument(mxd_path) for lyr in arcpy.mapping.ListBrokenDataSources(mxd): old_ds lyr.dataSource new_ds os.path.join(data_dir, os.path.basename(old_ds)) lyr.replaceDataSource(data_dir, SHAPEFILE, lyr.name, True) print(repaired: lyr.name) mxd.saveACopy(长江干流下游区域地形图_fixed.mxd) print(done)这段脚本先通过ListBrokenDataSources找出 mxd 中所有断链图层再用replaceDataSource把每个图层的数据源指向新目录。第三个参数lyr.name是图层在 mxd 中的名称第四个参数为 True 表示使用相对路径保存修复结果。注意lyr.name不一定等于文件名如果图层名在中途被修改过建议改用os.path.basename(old_ds)来匹配原始文件名。ArcGIS Pro 用户需要换成arcpy.mp的写法核心思路一致但 API 名称不同。3.3 出图前的图层完整性和显示顺序检查修复完数据源不代表立刻能出图还需要检查几个常见问题。首先看图层顺序在内容列表中长江下游干流区间应当位于河流图层之下DEM 栅格置于最底层否则河流会被覆盖。其次是属性表是否带无值字段部分 shp 的.dbf里存在空值或空几何要素建议先用 Select by Attributes 检查字段是否为空再决定是否删除。一个实用的快速检查点是比例尺范围。右键图层 - Properties - General检查 Visible Scale Range有些图层被设置了最小显示比例缩小到全图时报错或消失看起来像数据损坏实际是显示范围问题。4. dem90m 栅格与山体阴影合成让地形图产生层次4.1 ArcInfo GRID 格式容易认错w001001.adf 文件夹是整套栅格数据包里dem90m是一个文件夹而不是单文件里面是w001001.adf、dblbnd.adf、hdr.adf、sta.adf、vat.adf这些文件。这是 ArcInfo GRID 格式ArcGIS 中的原生栅格存储方式w001001.adf是主数据文件dblbnd.adf记录栅格边界范围sta.adf存统计信息hdr.adf存元数据vat.adf是栅格属性表。这五个文件是一个整体复制或移动时缺失任何一个都会导致栅格无法加载。dem90m名称里的 90 指的是分辨率约 90 米对应 SRTM 3 弧秒数据重采样后的结果。作为流域尺度的地形底图这个分辨率足够用来生成山体阴影和等高线但用于城市尺度的坡度分析精度不足这点在后续使用时要有预期。4.2 用 Hillshade 工具生成阴影地貌ArcMap 中加载dem90m后默认显示的是灰度色带层次感很弱需要生成山体阴影叠加。标准路径是 ArcToolbox - Spatial Analyst Tools - Surface - Hillshade。参数推荐值说明Azimuth315光源方位角西北方向入射立体感最强Altitude45光源高度角45 度可平衡阴影范围和细节Model Shadows勾选生成模拟阴影做地形图底图时更有立体感Z factor1高程与水平方向单位一致时取 1如果输出栅格整片黑或整片白说明 Z factor 设置不当。经纬度坐标系下高程单位是米而水平单位是度Z factor 可取 0.00003 左右这个值因纬度不同有差异建议先用 1 试算再根据直方图调整。用 Python 脚本调用时参数保持一致。import arcpy arcpy.env.workspace r数据解压目录 out_hillshade arcpy.sa.Hillshade(dem90m, 315, 45, NO_SHADOWS, 1) out_hillshade.save(hill90) print(hillshade saved)Hillshade是 Spatial Analyst 的栅格计算函数返回的是栅格对象必须调用save()才会写入磁盘。NO_SHADOWS表示不生成模拟阴影只做光照渲染如果做整图效果我一般改成SHADOWS并在 ArcMap 中把透明度设在 30% 左右。4.3 矢量水系、行政边界与地形栅格的叠加顺序山体阴影生成后在内容列表中把dem90m放在最底层hill90放到其上并设置透明度为 30% 到 40%再把长江下游干流区间和River_5依次叠上去。这里有一个常见误用直接把 DEM 彩色渲染和水系叠加结果河流被高程色带盖住读图困难。正确做法是 DEM 只作明暗底图不参与颜色表达。透明度设置在图层属性 - Display - Transparency栅格和矢量图层都支持透明度滑块按百分比控制。实际出图时建议 Polygon 水系透明度设为 0线状河流透明度设为 0保证专题要素清晰。如果叠加后发现水系和地形明显错位比如河流压在山脊上请回看第 2 章重点检查dem90m与 shp 是否同坐标系。常见做法是栅格保留 WGS84矢量也保持 WGS84在数据框属性里统一设置为 Albers 等积投影这样既满足面积计算需求又不会破坏原始数据精度。动态投影只影响显示不会修改源数据适合快速出图场景。5. 不打开 ArcGIS 也能用图原有 EPS/PDF 成果的二次利用出图目录里已经放好了 jpg、PDF、EPS 三种格式的成果图。jpg 适合预览和 PPTPDF 适合直接打印和论文初审EPS 是印刷级矢量格式可在 Adobe Illustrator 或开源 Inkscape 中继续编辑。这三份文件的价值在于不懂 GIS 的人可以直接取用不需要安装任何 GIS 软件。但有些场景需要微调比如去掉图例中的某个分类、改字体、换单位标注此时打开 EPS 编辑是最快的路径。EPS 文件在 Inkscape 中打开后会保留矢量对象的分组结构每个图层大致对应 ArcMap 里的元素。改完导出时注意选择嵌入字体避免文字变成路径后无法再编辑。PDF 文件可以用 pdffonts 检查字体嵌入状态。pdffonts 长江干流下游区域地形图.pdf输出结果列出字体名称、类型和是否嵌入。Embedded 列显示 no 的字体在打印或投稿时容易存在兼容性问题。所有字体都应该嵌入推荐使用 Ghostscript 重新处理 PDF 并嵌入缺失字体。如果想从 EPS 得到高分辨率位图可以使用 Ghostscript 直接转换。gs -dSAFER -dBATCH -dNOPAUSE -sDEVICEpng16m -r300 -dEPSCrop -sOutputFileoutput.png input.eps-r300控制输出 300 DPI-dEPSCrop表示按内容范围裁切避免白边。-dEPSCrop参数也可以替换为-dUseCropBox后者适用于读取 PDF 中的裁剪框。出图目录里给的 EPS 和图例是固定好的最大短板是不能调整制图范围。如果只需要裁剪局部区域建议直接用 ArcMap 打开修好的 mxd在 Layout View 中缩放数据框到目标区域再通过 File - Export Map 输出新的 PDF 或 EPS。出图目录作为预览和快速交付物是最合理的定位需要定制时再回到 mxd 修改并重新导出。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。