ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

吐鲁番-哈密盆地GIS数据交付:mxd、shape、TIF三件套与CAD定位实战解析

吐鲁番-哈密盆地GIS数据交付:mxd、shape、TIF三件套与CAD定位实战解析 简介吐鲁番-哈密盆地位于新疆东部是重要的构造与地理单元。这套资源面向GIS专业学生、科研人员与制图用户提供盆地的地理位置与海拔高度数据解决从原始数据到标准成图之间的制图与编辑需求。压缩包内含14个文件整体大小约186MB核心包括可编辑的ArcGIS工程文件.mxd、标准shapefile矢量数据涵盖shp、dbf、prj等附件以及可直接用于展示的TIF高程成图矢量边界与海拔栅格可配合使用。另附中国省级行政区划shapefile可根据研究范围进行裁剪docx文档便于下载前预览成图样式降低选错资料的机率。资源将矢量边界、海拔栅格与工程模板整合在一起既适合快速出图也便于按个人风格二次调整。目前已有190人学习浏览适合需要吐鲁番-哈密盆地基础地理底图的课堂作业、论文配图或项目前期分析。全部文件打包为zip解压后即可在ArcGIS等软件中打开使用无需额外转换。1. 吐鲁番-哈密盆地三件套mxd、shape、TIF各管什么做地理数据交付最怕对方拿到的是“死数据”图片导出了不能改矢量发过去坐标是乱的工程文件打开就提示数据源丢失。吐鲁番-哈密盆地这套mxd、shape、TIF三件套交付包就是把三者绑在一起分工却完全不同——mxd是ArcMap的工程文件记录图层组合、符号化规则和出图版式不保存几何与高程本体shape是真正的矢量底料边界、城市点、高程点都能被任何GIS平台直接读TIF则是把制图成果“拍”成带地理坐标的栅格不需要装ArcGIS也能看。适合谁做地质、水利、交通或自然资源项目的工程师既要把这一带的地理位置和海拔信息交给看图人又要交给改图人最后多半还要落到CAD里继续画图。这里按数据源的选型、mxd制作、shape规范、TIF输出与CAD定位的顺序展开终点是高频问题TIF到了CAD里怎么自动落在正确位置。2. 地理位置与海拔高度的数据底座坐标系、高程源与数据处理2.1 先圈定盆地范围和海拔“两头”吐鲁番-哈密盆地习惯简称吐哈盆地西起吐鲁番市以西东到哈密市以东北倚博格达山和哈尔里克山南界觉罗塔格低山带工作区大致框在东经87.5°~94.0°、北纬41.5°~43.5°面积在5万平方千米量级。这套数据之所以要单独讲海拔是因为它有两个极端吐鲁番一侧的艾丁湖实测约-154.31米是中国陆地最低点而天山山前带和南侧丘陵又能到2000米以上。一般的统一色带和默认拉伸会把负值区压成黑色必须单独处理。海拔数据的标准做法是拿数字高程模型做掩膜提取。盆地边界shape如果还没有先用公开的中比例尺地理数据勾出山麓线再按山前断裂带和坡度转折修边这个边界要作为后续一切裁切和统计的基础。2.2 高程数据源选型SRTM、ASTER GDEM、ALOS怎么选数据源空间分辨率覆盖范围适合场景注意事项SRTM GL1 / GL330米 / 90米全球一般制图与高程统计局部空洞需要填补常用于主数据ASTER GDEM V330米全球备选与交叉验证局部有条带和伪影负值区需核对ALOS AW3D3030米局部12.5米全球山前带、地形破碎区属于DSM林区高程是树冠顶面吐哈盆地地形相对平缓但有低海拔负值区我一般选SRTM GL1做主数据ASTER GDEM V3做对照两者做差后把异常像元筛出来。分辨率不必追12.5米这套交付的目的是地理位置确认和海拔分级30米足够文件体积也容易控制。取数后第一件事是看DEM的像元类型SRTM默认是16位整型单位米ASTER GDEM V3也以整型为主。如果DEM被重分类成整型-154.31会变成-154统计口径要在元数据里写清楚。2.3 用ArcPy把DEM裁剪成盆地范围并提取海拔统计拿到盆地边界后和DEM对齐先统一坐标系再做掩膜。import arcpy from arcpy.sa import * arcpy.env.workspace rC:\TurpanHami\data arcpy.env.overwriteOutput True dem srtm30_turpan_hami.tif mask basin_boundary.shp # 按边界做掩膜提取输出与边界范围对齐的DEM dem_clip ExtractByMask(dem, mask) dem_clip.save(dem_basin.tif) # 分区统计按边界的每个面统计高程 stats ZonalStatisticsAsTable( mask, OBJECTID, dem_clip, rC:\TurpanHami\data\elev_stats.dbf, DATA, ALL ) with arcpy.da.SearchCursor(stats, [OBJECTID, MIN, MAX, MEAN]) as cur: for row in cur: print(ID:, row[0], MIN:, row[1], MAX:, row[2], MEAN:, row[3])ExtractByMask的两个输入必须同坐标系如果DEM是地理坐标而边界已经投成兰伯特会报投影不匹配建议都先转成CGCS2000地理坐标。ZonalStatisticsAsTable的zone字段用OBJECTID保证每个面单独统计“ALL”表示同时输出MIN/MAX/MEAN/STD“DATA”表示忽略NoData像元。跑完先看MIN正常值应该在-155到-140之间如果出现-9999这类哨兵值说明NoData没被正确识别要先做SetNull处理再统计。2.4 投影坐标系直出UTM还是自定义兰伯特坐标系是这次交付最容易埋雷的地方。吐哈盆地跨UTM 45N和46N两个分带如果整个盆地只用45N出图东侧变形会越来越大用高斯-克吕格3度带又得按90°、93°、96°分带切图交付就变成多个图幅。常见做法是双轨制内部存储和交换用CGCS2000或WGS84地理坐标所有平台打开都不乱制图出图mxd布局和TIF成图用自定义兰伯特双标准纬线标准纬线取北纬41°和44°中央经线取东经90°东西向变形小一张图覆盖全盆地不用分带如果后续要进CAD按米定位改用中央经线设在盆地中部的横轴墨卡托投影加X偏移让全图坐标落在正数区。sr_proj arcpy.SpatialReference( PROJCS[Local_Lambert,GEOGCS[GCS_CGCS2000, DATUM[D_China_2000,SPHEROID[CGCS2000,6378137.0,298.257222101]], PRIMEM[Greenwich,0],UNIT[Degree,0.0174532925199433]], PROJECTION[Lambert_Conformal_Conic], PARAMETER[False_Easting,0],PARAMETER[False_Northing,0], PARAMETER[Central_Meridian,90],PARAMETER[Standard_Parallel_1,41], PARAMETER[Standard_Parallel_2,44], PARAMETER[Latitude_Of_Origin,40],UNIT[Meter,1]] ) arcpy.management.Project(dem_basin.tif, dem_basin_lambert.tif, sr_proj)Project对栅格重投影时输出像元大小会变化高程栅格用双线性插值即可。这里提醒一个关键细节DEM投影后最小/最大高程统计口径不变但面积和距离量算结果会和地理坐标系差一个与纬度相关的比例所以出图时务必在mxd里统一数据框坐标系否则shape叠在TIF上会错位。3. 制作可编辑mxd图层组织、分层设色与相对路径3.1 mxd到底存了什么地图文档不是数据本体mxd是二进制地图文档打开ArcMap时看到的图层列表、画布范围、符号系统、图例比例尺指北针全写在里面但几何与高程数据都保存在外部的shp/tif里。所以mxd本身无法脱离数据文件单独交付别人拿到的mxd如果引用的是C盘旧路径换机器就得手动修复。所谓“可编辑”的关键不是符号做得多花哨而是路径相对化、图层命名稳定、符号规则清晰可继承。我一般会按这个目录结构交付让相对路径有稳定的参照系TurpanHami_Project/ ├── 1_Boundary/ # 边界、城市、等值线等shape ├── 2_DEM/ # 裁剪后的高程tif ├── 3_Auxiliary/ # 道路、水系、注记等辅助图层 ├── 4_MXD/ # TurpanHami.mxd工程文件 └── 5_OutPut/ # 导出的TIF、tfw、PDFmxd放在4_MXD里所有数据按这个相对关系存放再在 ArcMap 的 File Map Document Properties 里勾选 Store relative pathnames to data sourcesmxd换了根目录也能打开。3.2 图层顺序与海拔分层设色负值区怎么配色图层的加载顺序从下往上按“DEM底图→山体阴影→盆地边界→等高线→水系交通→城市地名”排。底图负责海拔信息矢量负责位置信息符号互不压盖。海拔显示推荐用“分类色带”而不是单一拉伸。盆地里既有低于海平面的艾丁湖又有南北天山前山带默认拉伸会把负值区压进黑暗里。这里给一组经验值海拔区间米颜色说明-154 ~ 0青绿海平面以下低地突出艾丁湖0 ~ 500浅绿冲洪积平原与绿洲500 ~ 1000黄绿哈密盆地主体1000 ~ 2000橙黄山前丘陵与低山2000 ~ 3000棕红天山前山带3000以上深褐/雪白高山区在Symbology里选Classified把中断值Break Values按上表输入分类数选6。注意0米线必须作为强制断点不要让它被算法合并到-50或50那一档。细节上-154~0这段区间用青绿色系会让艾丁湖成为整张图最有记忆点的区域。3.3 相对路径与断开的源跨机器可编辑的保命设置数据源断开是mxd最容易出现的“不可编辑”场景。对方打开后所有图层的名字前面都是红色感叹号双击也是灰的多数不是数据坏了而是路径没相对化或文件名被改过。我一般会在交付前用脚本把数据源检查一遍import arcpy mxd_path rC:\TurpanHami\Project\4_MXD\TurpanHami.mxd mxd arcpy.mapping.MapDocument(mxd_path) for lyr in arcpy.mapping.ListLayers(mxd): if lyr.supports(DATASOURCE): print(lyr.datasetName, -, lyr.workspacePath) # 根目录变了就用这个批量替换路径 mxd.findAndReplaceWorkspacePaths(rC:\TurpanHami, rD:\Data\TurpanHami) mxd.save()这个脚本适用于ArcMap 10.xArcGIS Pro里mxd要用arcpy.mp但思路一样先列数据源再替换根路径。更常见的坑是mxd在子目录数据在兄弟目录ArcMap的相对路径是相对mxd所在目录展开的只要压缩包内目录层级不变就不会断。交付前务必在一台只装基础版ArcMap、没有额外插件的机器上打开一次验证。3.4 布局里的经纬网与比例尺参数mxd的Layout里建议加拉网格。吐哈盆地成图比例尺一般在1:50万到1:100万经纬网间隔设1°如果出1:25万比例尺间隔设30′。操作路径是右击数据框 Properties Grids New Grid Graticule间隔填1°边框和标注字体按图廓格式统一。比例尺条按页面单位厘米、地图单位按数据框坐标系设置。还有一个容易被忽略的点图名、制图单位、投影信息这些注记要放在Layout的图廓外而不是地图画布内。否则TIF导出后这些文字会被烧进栅格到了CAD里变成无法关闭的底图水印只能用裁剪挡住。4. 标准shape文件字段设计、拓扑检查与编码陷阱4.1 shape该拆成哪几层边界、点位、等值线只交付一个盆地范围Polygon往往不够用。我一般按图层语义拆成四类方便CAD里按需开关图层名几何类型内容典型要素basin_boundary.shpPolygon盆地完整边界与内部分区盆地轮廓、海拔分区basin_city.shpPoint城镇、观测站点、关键地物吐鲁番、哈密、鄯善、艾丁湖basin_contour.shpPolyline海拔等值线0米线、300米、500米basin_road_hydro.shpPolyline交通与水系铁路、国道、季节性河流重点说两个习惯点要素必须带海拔字段艾丁湖点记录-154.31不能省略负号0米等高线要单独做一条线图层这是“海拔高度”可读性最重要的一条线。4.2 字段设计10字符硬限制与海拔字段命名shapefile的dBase属性表有两个硬限制字段名最长10个字符单表字段数有限。不要用长中文名做字段名标准做法是字段用拼音或英文缩写中文显示放“字段别名”里。推荐字段表字段名类型宽度说明OBJECTIDLong10要素编号NameText50中文地名Name_ENText50拼音或英文地名TypeText20类别边界/城市/等值线Elev_MFloat10,2海拔单位米允许负值Area_SqKmDouble18面积平方千米SourceText50数据来源与年份Elev_M用Float且保留两位小数艾丁湖才能存成-154.31而不是被四舍五入成-154。图层属性里把字段别名改成中文即可不要硬用中文字段名。4.3 几何修复与拓扑检查RepairGeometry先于一切分析shapefile拖进ArcMap后不要直接拿去裁切和叠加先做几何检查。最常见的错误是自相交、重复顶点和空几何。import arcpy arcpy.env.workspace rC:\TurpanHami\Project\1_Boundary arcpy.env.overwriteOutput True arcpy.management.RepairGeometry(basin_boundary.shp) geometry_report rin_memory\geom_report arcpy.management.CheckGeometry(basin_boundary.shp, geometry_report) with arcpy.da.SearchCursor(geometry_report, [TABLE_NAME, STATUS]) as cur: for row in cur: if row[1] ! OK: print(问题表:, row[0], 状态:, row[1])RepairGeometry会删除重复顶点并修正自相交但不会自动重算面积字段所以修完之后要重新计算Area_SqKm。CheckGeometry输出一个报表要素类TABLE_NAME和STATUS字段标出有问题的要素。如果出现“坐标超出范围”多半是原始数据在度与米之间混用了先用DefineProjection给一份坐标系声明再检查prj文件最后做投影转换。顺带把交付文件列清楚一个完整shape至少要有.shp、.shx、.dbf、.prj、.cpg五个文件。4.4 编码陷阱中文属性在ArcGIS、QGIS与CAD之间来回倒shape的DBF对中文编码支持很弱常见的乱码场景有两个ArcMap 10.x默认把DBF存成GBKQGIS打开时中文乱码在QGIS里存成UTF-8后老版ArcMap又可能读乱。编码问题的标准解法是这样数据统一存UTF-8同时给同名字的.cpg文件写入UTF-8ArcMap 10.4以上版本能识别如果要在ArcMap 10.2等旧版本里用就把DBF存成GBK去掉.cpg靠中文系统代码页识别QGIS打开GBK数据时手动指定源编码为GBK只要数据还要进CAD的FDO连接就保留Name_EN拼音字段CAD按系统代码页读文本英文最稳。验证方法很简单在QGIS里右键图层 属性 源切换UTF-8和GBK看中文列是否正常在ArcMap里看表格属性里的代码页设置乱码时用.cpg强制指定。5. TIF成图输出与CAD自动定位分辨率、tfw配准与f5刷新5.1 导出TIF的三组参数分辨率、压缩与世界文件mxd里的Layout调好后File Export Map导出TIF。有3个参数直接影响CAD里的表现分辨率上300DPI用于打印如果只是做CAD定位底图150DPI足够文件体积能小四分之三压缩选LZW无损不要用JPEG压缩否则CAD里显示会出现色斑最关键的是在Format设置里勾选Write World File导出后同目录会出现同名.tfw。tfw是六行纯文本结构固定10.000000 0.000000 0.000000 -10.000000 612345.678 4578123.456第1行是X方向每个像素对应的地面宽度米/像素第2、3行是旋转系数正常导出为0第4行是Y方向像素高度一般为负值第5、6行是左上角像素中心的地面坐标。CAD能自动定位是靠这六行反算每个像素的位置。5.2 CAD里自动定位MAPIINSERT读tfwIMAGEATTACH读不了很多人把TIF拖进CAD发现图不在预期位置因为纯AutoCAD的IMAGEATTACH命令不会自动读取tfw。注意在AutoCAD Map 3D或Civil 3D里用MAPIINSERT命令插入TIF软件会自动读tfw并按真实坐标摆放在纯AutoCAD里用IMAGEATTACH必须手动填参数。手动插入的步骤我一般这样做插入参考点填tfw第5、6行的坐标缩放比例填tfw第1行绝对值的倒数不对——如果tfw第1行是10表示一个像素是10米缩放比例就填10旋转角度填0。前提是tfw第2、3行都是0且TIF的坐标系是米制投影。经纬度的TIF不要硬插先投影成米制。5.3 用F5刷新SHAPE图层显示的小技巧在Map 3D里通过FDO数据连接加载shape后样式修改常出现“图层不刷新”的情况边界线不变、影像半透明度不生效、填充没有更新。这种时候不用重启CAD我一般在Map Task Pane里选中对应地图按F5强制重建地图显示缓存shape的线型和填充会立刻重绘TIF底图也会重新加载显示。需要注意F5刷新的是显示缓存不是重新读盘——外部用QGIS或ArcMap覆盖了shape文件之后F5不会读到新数据必须在Map Explorer里先断开再重新连接数据源这点很多人踩过坑。本文还有配套的精品资源点击获取
返回列表