



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 1期陈小虎等 1M ap G IS文件快速转换 Shap efile文件的研究53文章编号 : 1672 - 8262 ( 2008) 01 - 53 - 03 中图分类号 : P208文献标识码 : BM apG IS文件快速转换 Shap efile文件的研究陈小虎 3 ,董竹 ,陈凯(成都市勘察测绘研究院 ,四川 成都 610081)摘 要 :分析了传统的从 M ap G IS文件到 Shap efile文件转换的方法并加以改进 ,解决了大量 M ap G IS文件和 Shap efile文件快速转换的问题 。经过用户实践证明 ,该方法简单有效 。关键词 : M ap G IS文件 ; Shap efile;快速转换 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 1 引 言实际生产过程中常常利用 M ap G IS完成数据生产 及加工 ,然后 转 换到 Shap efile 文 件 格式 , 利 用 A rcG IS 建立数据库 ,进行 G IS分析与应用 。这就涉及了 M ap 2G IS文件转换 Shap efile 文件的问题 。M ap G IS早 期版 本就具有将 Shap efile文件批量转换为 M ap G IS文件的 功能 ,并且 M ap G IS 615以后已经具备将单个文件转换 为 Shap efile文件的功能 。但 M ap G IS转换为 Shap efile 文件时 ,有如下 的几 个问 题 一直 没有 得 到很 好解 决 。 影响了 M ap G IS与 A rcG IS的数据共享 。( 1 ) M ap G IS没有批量将文件转换为 Shap efile 文 件的功能 。当有大量 M ap G IS文件需要转换到 Shap e2 file文件时 ,若用人工一个文件一个文件进行转换不仅 效率低 ,而且很容易出错 。( 2 ) M ap G IS文件本身带有颜色和符号信息 ,可是 转换为 Shap efile 文 件 时 , 这 些 信 息 将 全 部 丢 失 。在 A rcG IS里没有任何 M ap G IS的原始符号信息 (如子图 号 ,颜色 ) ,要重新赋颜色符号将是非常困难的事情 。( 3 ) M ap G IS文件里文字作为注释类型存在 ,而在 Shap efile文件没有注释类型 ,只有点 ( po in t)文件 ,通过 对字符类型字段的标注来实现文本的显示 。2 传统的处理方法在 M ap G IS 615 以前 ,通常是将 M ap G IS文件转换 为第 三 方 文 件 格 式 , 然 后 再 转 换 为 Shap efile 文 件 ; M ap G IS 615 以 后 , 可 以 单 个 文 件 单 个 文 件 转 换 为 Shap efile文件 , 但 是 转 换 后 失 去 了 所 有 的 符 号 信 息 。 将单个 M ap G IS文件转换为 Shap efile 文件的流程如图1 所示 。为了方便在 A rcG IS里重新给 Shap efile 文件赋上颜色符号 ,通常手工增加一些字段如“图层 ”、“颜色 ”、 “子图号 ”;然后使用 M ap G IS编辑模块的“根据参 数赋属性 ”将参数赋到属性字段里 。然后将文件转换 为 Shap efile文件 。图 1 单个 M ap G IS文件转 Shap efile流程传统方法转换 M ap G IS的点文件 , 是首先将点 文 件分离为子图文件和注释文件 ,然后分别增加参数属 性字段 ,注释文件还要增加一个文本字段 ,使用“注释 赋为属性 ”,将文本内容保存到属性字段里 。最后将文 件转换为 Shap efile文件 。传统的 转 换 方 法 烦 琐 复 杂 而 且 容 易 出 错 , 幸 好 , M ap G IS提供了完整的二次开发函数库 。用户完全可以 在 M ap G IS平台上开发面向各自领域的应用系统 。本文 介绍了利用 V isua l C + + 610与 M ap G IS二次开发函数库 实现 M ap G IS文件快速转换 Shap efile文件的研究 。3 程序设计与实现程序分成两个模块 ,第一个是“图元参数赋属性 ” 模块 ;第二个是“批量转换 Shap efile”模块 。考虑到图 元参数赋给属性后 ,用户可以将带有新属性的 M ap G IS 文件转换为其他格式 ,以增加灵活性 。311 图元参数赋属性模块M ap G IS类型文件拥有不同的后缀 :点文件 (. w t) ;线文件 (. w l) ;面文件 (. wp ) 。不同类型的文件需要添3 收稿日期 : 2007 05 30作者简介 :陈小虎 ( 1980 ) ,男 ,助理工程师 , 从事 G IS系统开发与地图编绘技术工作 。54 城 市 勘 测2008年加不同的图元参数属性字段 ;如子图文件需增加“子图 号 ”,“子 图 高 ”; 线 文 件 则 增 加“线 型 ”,“线 宽 ”。该模块首先根据文件后缀判断是否是 M ap G IS 文件 ,同时判断出文件类型 ,再根据不同的文件类别加 不同的参数属性字段 ,并将图元参数作为属性赋给参 数属性字段 。现以点文件为例说明该模块的实现 。( 1 )将点文件分离为子图与注释Shap efile 文 件 通 过 标 注 属 性 字 段 来 实 现 文 件 显 示 ,所以 M ap G IS的点文件必须将子图与 注 释分 离成 不同的文件 ,分别转换为 Shap efile文件 。子图参数赋属性打开 M ap G IS点文件并装入点工作区 ,新建“子图 号 ”、“子图高 ”、“子图角度 ”、“颜色 ”、“图层 ”共 5 个 字段 ,依次遍历文件中的每个图元并判断图元类型 ,如 果是子图则获取子图参数并将参数值赋给对应的属性 字段 ;如果是注释则删除 。当遍历结束后另存一个新 的点文件即得到一个有图元参数的子图文件 。主要代 码如下 :PN T_ IN FO p n t Info;CF IELD _H EAD t 5 ; cha r 3 a tt;/ /获取点文件的属性结构_Ge tA ttStru ( a i, PN T, &stru) ;/ /定义新增加的字段集lstrcp y ( t 0 . fie ldnam e, 子图号 ) ; t 0 . fie ld typ e = STR _ TYPE; t 0 . m sk_ leng = 20;lstrcp y ( t 1 . fie ldnam e, 子图高 ) ; t 1 . fie ld typ e = STR _TYPE; t 1 . m sk_ leng = 20;lstrcp y ( t 2 . fie ldnam e, 子图角度 ) ; t 2 . fie ld typ e = STR_TYPE; t 2 . m sk_ leng = 20;lstrcp y ( t 3 . fie ldnam e, 颜 色 ) ; t 3 . fie ld typ e = STR _ TYPE; t 3 . m sk_ leng = 20;lstrcp y ( t 4 . fie ldnam e, 图 层 ) ; t 4 . fie ld typ e = STR _TYPE; t 4 . m sk_ leng = 20;/ /将新定义的字段集插入点文件的属性结构c = _ In se rtStruF ld ( a i, PN T, 5 , t, 1) ;/ /获取点文件图元个数if ( _Ge tPn tN um ( a i, &i, &n) = = 0 )re tu rn 0;/ /遍历所有图元fo r ( i = 1; i n; i + + )if ( _Ge tPn t Info ( a i, i, &p n t Info ) = 0 ) / /获取第 i个图元 的图形信息con tinue; / /若获取失败眺出本次循环if ( _Ge tA tt ( a i, PN T, i, &stru, &a tt) = 0 ) / /获取第 i个图 元的属性信息con tinue;if ( p n t Info. typ e = = PN T_NO TE) / /如果点类型是注释_D e lPn t ( a i, i) ; / /删除点图元con tinue;/ /若图元类型是子图 ,则获取图元参数并存入属性if ( p n t Info. typ e = = PN T_SUB )sTem. Fo rm a t ( % ld , p n t Info. info. sub. subno ) ; _ Se tF ld2F rom Str ( a tt, stru, 子图号 , L PSTR (L PCTSTR ( sTem ) ) ) ;sTem. Fo rm a t ( % f , p n t Info. info. sub. he igh t) ; _Se tF ldF rom 2Str ( a tt, stru, 子图高 , L PSTR (L PCTSTR ( sTem ) ) ) ;sTem. Fo rm a t ( % f , p n t Info. info. sub. angle) ; _ Se tF ldF rom 2Str ( a tt, stru, 子图角度 , L PSTR (L PCTSTR ( sTem ) ) ) ;sTem. Fo rm a t ( % hd , p n t Info. ic lr) ; _ Se tF ldF rom Str ( a tt, st2ru, 颜色 , L PSTR (L PCTSTR ( sTem ) ) ) ;sTem. Fo rm a t ( % hd , p n t Info. laye r) ; _ Se tF ldF rom Str ( a tt, stru, 图层 , L PSTR (L PCTSTR ( sTem ) ) ) ;_W ritePn tA tt ( a i, i, stru, a tt) ; / /写入点图元属性注释参数赋属性 再次打开同一个点文件并装入点工作区 ,新建“内容 ”、“字符高 ”、“字符宽 ”、“字符间距 ”、“字符角度 ”、 “中文字体 ”、“颜色 ”、“图层 ”共 5 个字段 。依次遍历 文件中的每个图元并判断图元类型 ,如果是注释则获 取注释参数并将参数值赋给对应的属性字段 ,并将注 释的文本内容赋给“内容 ”字段 ; 如果是子图则删除该 图元 。当遍历结束后另存一个新的点文件得到一个有 图元参数和文本内容的注释文件 。( 2 )线文件与面文件的处理线文件 需 增 加“线 型 ”、“颜 色 ”、“线 宽 ”、“X 系 数 ”、“Y系数 ”、“图层 ”6 个字段 。面文件需增加“填 充颜色 ”、“填充图案 ”、“图案高度 ”、“图案宽度 ”、“图 案颜色 ”、“图层 ”6 个字段 。M ap G IS的线文件与面文 件处理相对点文件处理要简单一些 ,只需打开文件遍 历所有图元一次并将获取的图元参数值赋给对应的属 性字段即可 。312 批量转换 Shap efile模块M ap G IS文件与 Shap efile内部文件结构完全不同 , 并且存在一些特殊的文件结构 。比如在 Shap efile文件 中 ,对象 ID 属性具有唯一性 ,在 M ap G IS文件里 ,图元 ID 属性却是可以重复的 ,另外 M ap G IS文件里 ,图元被 删除后 ,仅仅是逻辑上的删除 ,只有压缩存盘后 ,被删 除的图元才真正的被物理删除 。为了避免转换出错 , 在转换前需要对 M ap G IS文件进行一些特殊的处理 。( 1 )遍历指定文件夹内 M ap G IS文件 打开指定文件夹 ,开始遍历文件夹里所有的 M ap 2G IS文件 :点文件 (. w t) 、线文件 (. w l) 、面文件 (. wp ) :/ /进行循环读取 ,对每个文件进行转换HANDL E hF ind;第 1期陈小虎等 1M ap G IS文件快速转换 Shap efile文件的研究55W IN32 _F IND _DA TA da taF ile; BOOL bMo reF ile s = TRU E;hF ind = F indF irstF ile ( strD ir, &da taF ile) ;wh ile ( hF ind! = INVAL ID _ HANDL E _VALU E & bMo re2F ile s = = TRU E) if ( da taF ile. dwF ileA ttribu te s = = F IL E _A TTR IBU TE _AR 2CH IV E)bMo reF ile s = F indN extF ile ( hF ind, &da taF ile) ;( 2 )对打开的文件进行压缩存盘M ap G IS文件进行删除图元操作后 ,图元仅仅是被 逻辑删除 ,在缺省情况下 ,保存工作区内容时 ,不清除被 删掉的图元 。重新装入文件时 ,被删掉的图元依然存 在 。只有将工作区的压缩标志设置为 1,在保存工作区 内容时 ,才能将被删除的图元将从物理上被清除掉 。strF ile0 = m _ strSou rceFo lde r + + strF ile;/ /打开指定的数据文件对应的工作区 ,并将数据装入到新 工作区中Pa i = _Op enF ileA rea ( ah in st, strF ile0. Ge tB uffe r ( strF ile0. Ge t2L ength ( ) ) ) ;strF ile = strF ile. L eft ( strF ile. Ge tL ength ( ) - 3) ;strF ile = m _ strFo lde r + + strF ile;/ /将工作区压缩标志设为 1_Se tPackF lag ( Pa i, 1 ) ;/ /保存工作区内容_ SaveA F ile ( Pa i, strF ile0. Ge tB uffe r ( strF ile0. Ge tL ength( ) ) ) ;( 3 )对文件进行重置缺省 ID 处理重置缺省 ID 实质上就是把图元唯一的图元号赋 给它的 ID 属性 。M ap Gis文件的图元 ID 属性 不是 唯 一的 , 可 以重 复 , Shap efile 的 对 象 ID 属 性 (O b jec t ID ) 却是 唯一 的 。 在转换前对文件进行重置缺省 ID 操作有助于提高文件转换的成功率 。以下是点文件 (. w t)的重置缺省 ID源代码/ /取图元个数if ( _Ge tPn tN um ( Pa i, &i, &n) = = 0)re tu rn ;/ /循环取所有记录fo r ( i = 1; i n; i + + ) / /取第 i条记录 if ( _Ge tA tt ( Pa i, PN T, i, &stru, &a tt) = 0 )con tinue;/ /根据字段名称设置字段值_Se tF ld ( a tt, stru, ID , ( cha r 3 ) &i) ;/ /写点定类型图元属性_W ritePn tA tt ( Pa i, i, stru, a tt) ;( 4 )将文件转换为 Shap efile文件M ap G IS文件用后缀名来区分点 (. w t) 、线 (. w l) 、面 (. wp ) 文件 , 而 Shap efile 文件后缀没有点 、线 、面的 区 别 。批量转换时 ,为避免转换后出现同名文件相互覆盖 的情况 ,使转换后的点文件名加 ”p ”,线文件名加 ”l”,面 文件名加 ”r”以示区别 。调用转换 shap e函数/ /将点文件转换为 shap efile文件_Shap eO u t ( Pa i, L PTSTR (L PCTSTR ( strF ile) ) ) ;4 结 论该程序在生产实践中的应用表明它能最大限度地 减少 M ap G IS文件转换到 Shap efi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车间安全知识培训内容课件
- 幼儿园教学课件设计比赛
- 教学课件成语有哪些类型
- 车辆自救互救课件
- 宠物饲养教学课件设计方案
- 特种设备知识培训平台课件
- 木片切割去划痕修磨工艺考核试卷及答案
- 特种知识技能培训课件
- 成套电气设计原理教学课件
- 2025年红十字初级急救员证考试题库及答案
- 职业技术学院旅游管理专业《旅行社经营与管理》课程标准
- 奶茶店股份合作合同协议
- 2025-2030中国空气粒子计数器行业市场发展趋势与前景展望战略研究报告
- 立杆方法分类普通电杆的组立系列课件
- 四年级音标试卷及答案
- 学校食堂运营管理职责与分工
- 2025云南师范大学辅导员考试题库
- BEC商务英语(中级)阅读模拟试卷11(共405题)
- 语文课堂教学目标设计“四出发”
- 2025《义务教育信息科技课程标准(2022年版)》测试题库及答案(共4套)
- 2025年度建筑劳务木工班组施工合作协议
评论
0/150
提交评论