免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第 1期陳小虎等 1M ap G IS文件快速轉(zhuǎn)換 Shap efile文件的研究53文章編號 : 1672 - 8262 ( 2008) 01 - 53 - 03 中圖分類號 : P208文獻(xiàn)標(biāo)識碼 : BM apG IS文件快速轉(zhuǎn)換 Shap efile文件的研究陳小虎 3 ,董竹 ,陳凱(成都市勘察測繪研究院 ,四川 成都 610081)摘 要 :分析了傳統(tǒng)的從 M ap G IS文件到 Shap efile文件轉(zhuǎn)換的方法并加以改進(jìn) ,解決了大量 M ap G IS文件和 Shap efile文件快速轉(zhuǎn)換的問題 。經(jīng)過用戶實(shí)踐證明 ,該方法簡單有效 。關(guān)鍵詞 : M ap G IS文件 ; Shap efile;快速轉(zhuǎn)換 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 1 引 言實(shí)際生產(chǎn)過程中常常利用 M ap G IS完成數(shù)據(jù)生產(chǎn) 及加工 ,然后 轉(zhuǎn) 換到 Shap efile 文 件 格式 , 利 用 A rcG IS 建立數(shù)據(jù)庫 ,進(jìn)行 G IS分析與應(yīng)用 。這就涉及了 M ap 2G IS文件轉(zhuǎn)換 Shap efile 文件的問題 。M ap G IS早 期版 本就具有將 Shap efile文件批量轉(zhuǎn)換為 M ap G IS文件的 功能 ,并且 M ap G IS 615以后已經(jīng)具備將單個(gè)文件轉(zhuǎn)換 為 Shap efile文件的功能 。但 M ap G IS轉(zhuǎn)換為 Shap efile 文件時(shí) ,有如下 的幾 個(gè)問 題 一直 沒有 得 到很 好解 決 。 影響了 M ap G IS與 A rcG IS的數(shù)據(jù)共享 。( 1 ) M ap G IS沒有批量將文件轉(zhuǎn)換為 Shap efile 文 件的功能 。當(dāng)有大量 M ap G IS文件需要轉(zhuǎn)換到 Shap e2 file文件時(shí) ,若用人工一個(gè)文件一個(gè)文件進(jìn)行轉(zhuǎn)換不僅 效率低 ,而且很容易出錯(cuò) 。( 2 ) M ap G IS文件本身帶有顏色和符號信息 ,可是 轉(zhuǎn)換為 Shap efile 文 件 時(shí) , 這 些 信 息 將 全 部 丟 失 。在 A rcG IS里沒有任何 M ap G IS的原始符號信息 (如子圖 號 ,顏色 ) ,要重新賦顏色符號將是非常困難的事情 。( 3 ) M ap G IS文件里文字作為注釋類型存在 ,而在 Shap efile文件沒有注釋類型 ,只有點(diǎn) ( po in t)文件 ,通過 對字符類型字段的標(biāo)注來實(shí)現(xiàn)文本的顯示 。2 傳統(tǒng)的處理方法在 M ap G IS 615 以前 ,通常是將 M ap G IS文件轉(zhuǎn)換 為第 三 方 文 件 格 式 , 然 后 再 轉(zhuǎn) 換 為 Shap efile 文 件 ; M ap G IS 615 以 后 , 可 以 單 個(gè) 文 件 單 個(gè) 文 件 轉(zhuǎn) 換 為 Shap efile文件 , 但 是 轉(zhuǎn) 換 后 失 去 了 所 有 的 符 號 信 息 。 將單個(gè) M ap G IS文件轉(zhuǎn)換為 Shap efile 文件的流程如圖1 所示 。為了方便在 A rcG IS里重新給 Shap efile 文件賦上顏色符號 ,通常手工增加一些字段如“圖層 ”、“顏色 ”、 “子圖號 ”;然后使用 M ap G IS編輯模塊的“根據(jù)參 數(shù)賦屬性 ”將參數(shù)賦到屬性字段里 。然后將文件轉(zhuǎn)換 為 Shap efile文件 。圖 1 單個(gè) M ap G IS文件轉(zhuǎn) Shap efile流程傳統(tǒng)方法轉(zhuǎn)換 M ap G IS的點(diǎn)文件 , 是首先將點(diǎn) 文 件分離為子圖文件和注釋文件 ,然后分別增加參數(shù)屬 性字段 ,注釋文件還要增加一個(gè)文本字段 ,使用“注釋 賦為屬性 ”,將文本內(nèi)容保存到屬性字段里 。最后將文 件轉(zhuǎn)換為 Shap efile文件 。傳統(tǒng)的 轉(zhuǎn) 換 方 法 煩 瑣 復(fù) 雜 而 且 容 易 出 錯(cuò) , 幸 好 , M ap G IS提供了完整的二次開發(fā)函數(shù)庫 。用戶完全可以 在 M ap G IS平臺(tái)上開發(fā)面向各自領(lǐng)域的應(yīng)用系統(tǒng) 。本文 介紹了利用 V isua l C + + 610與 M ap G IS二次開發(fā)函數(shù)庫 實(shí)現(xiàn) M ap G IS文件快速轉(zhuǎn)換 Shap efile文件的研究 。3 程序設(shè)計(jì)與實(shí)現(xiàn)程序分成兩個(gè)模塊 ,第一個(gè)是“圖元參數(shù)賦屬性 ” 模塊 ;第二個(gè)是“批量轉(zhuǎn)換 Shap efile”模塊 。考慮到圖 元參數(shù)賦給屬性后 ,用戶可以將帶有新屬性的 M ap G IS 文件轉(zhuǎn)換為其他格式 ,以增加靈活性 。311 圖元參數(shù)賦屬性模塊M ap G IS類型文件擁有不同的后綴 :點(diǎn)文件 (. w t) ;線文件 (. w l) ;面文件 (. wp ) 。不同類型的文件需要添3 收稿日期 : 2007 05 30作者簡介 :陳小虎 ( 1980 ) ,男 ,助理工程師 , 從事 G IS系統(tǒng)開發(fā)與地圖編繪技術(shù)工作 。54 城 市 勘 測2008年加不同的圖元參數(shù)屬性字段 ;如子圖文件需增加“子圖 號 ”,“子 圖 高 ”; 線 文 件 則 增 加“線 型 ”,“線 寬 ”。該模塊首先根據(jù)文件后綴判斷是否是 M ap G IS 文件 ,同時(shí)判斷出文件類型 ,再根據(jù)不同的文件類別加 不同的參數(shù)屬性字段 ,并將圖元參數(shù)作為屬性賦給參 數(shù)屬性字段 ?,F(xiàn)以點(diǎn)文件為例說明該模塊的實(shí)現(xiàn) 。( 1 )將點(diǎn)文件分離為子圖與注釋Shap efile 文 件 通 過 標(biāo) 注 屬 性 字 段 來 實(shí) 現(xiàn) 文 件 顯 示 ,所以 M ap G IS的點(diǎn)文件必須將子圖與 注 釋分 離成 不同的文件 ,分別轉(zhuǎn)換為 Shap efile文件 。子圖參數(shù)賦屬性打開 M ap G IS點(diǎn)文件并裝入點(diǎn)工作區(qū) ,新建“子圖 號 ”、“子圖高 ”、“子圖角度 ”、“顏色 ”、“圖層 ”共 5 個(gè) 字段 ,依次遍歷文件中的每個(gè)圖元并判斷圖元類型 ,如 果是子圖則獲取子圖參數(shù)并將參數(shù)值賦給對應(yīng)的屬性 字段 ;如果是注釋則刪除 。當(dāng)遍歷結(jié)束后另存一個(gè)新 的點(diǎn)文件即得到一個(gè)有圖元參數(shù)的子圖文件 。主要代 碼如下 :PN T_ IN FO p n t Info;CF IELD _H EAD t 5 ; cha r 3 a tt;/ /獲取點(diǎn)文件的屬性結(jié)構(gòu)_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;/ /將新定義的字段集插入點(diǎn)文件的屬性結(jié)構(gòu)c = _ In se rtStruF ld ( a i, PN T, 5 , t, 1) ;/ /獲取點(diǎn)文件圖元個(gè)數(shù)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個(gè)圖元 的圖形信息con tinue; / /若獲取失敗眺出本次循環(huán)if ( _Ge tA tt ( a i, PN T, i, &stru, &a tt) = 0 ) / /獲取第 i個(gè)圖 元的屬性信息con tinue;if ( p n t Info. typ e = = PN T_NO TE) / /如果點(diǎn)類型是注釋_D e lPn t ( a i, i) ; / /刪除點(diǎn)圖元con tinue;/ /若圖元類型是子圖 ,則獲取圖元參數(shù)并存入屬性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) ; / /寫入點(diǎn)圖元屬性注釋參數(shù)賦屬性 再次打開同一個(gè)點(diǎn)文件并裝入點(diǎn)工作區(qū) ,新建“內(nèi)容 ”、“字符高 ”、“字符寬 ”、“字符間距 ”、“字符角度 ”、 “中文字體 ”、“顏色 ”、“圖層 ”共 5 個(gè)字段 。依次遍歷 文件中的每個(gè)圖元并判斷圖元類型 ,如果是注釋則獲 取注釋參數(shù)并將參數(shù)值賦給對應(yīng)的屬性字段 ,并將注 釋的文本內(nèi)容賦給“內(nèi)容 ”字段 ; 如果是子圖則刪除該 圖元 。當(dāng)遍歷結(jié)束后另存一個(gè)新的點(diǎn)文件得到一個(gè)有 圖元參數(shù)和文本內(nèi)容的注釋文件 。( 2 )線文件與面文件的處理線文件 需 增 加“線 型 ”、“顏 色 ”、“線 寬 ”、“X 系 數(shù) ”、“Y系數(shù) ”、“圖層 ”6 個(gè)字段 。面文件需增加“填 充顏色 ”、“填充圖案 ”、“圖案高度 ”、“圖案寬度 ”、“圖 案顏色 ”、“圖層 ”6 個(gè)字段 。M ap G IS的線文件與面文 件處理相對點(diǎn)文件處理要簡單一些 ,只需打開文件遍 歷所有圖元一次并將獲取的圖元參數(shù)值賦給對應(yīng)的屬 性字段即可 。312 批量轉(zhuǎn)換 Shap efile模塊M ap G IS文件與 Shap efile內(nèi)部文件結(jié)構(gòu)完全不同 , 并且存在一些特殊的文件結(jié)構(gòu) 。比如在 Shap efile文件 中 ,對象 ID 屬性具有唯一性 ,在 M ap G IS文件里 ,圖元 ID 屬性卻是可以重復(fù)的 ,另外 M ap G IS文件里 ,圖元被 刪除后 ,僅僅是邏輯上的刪除 ,只有壓縮存盤后 ,被刪 除的圖元才真正的被物理刪除 。為了避免轉(zhuǎn)換出錯(cuò) , 在轉(zhuǎn)換前需要對 M ap G IS文件進(jìn)行一些特殊的處理 。( 1 )遍歷指定文件夾內(nèi) M ap G IS文件 打開指定文件夾 ,開始遍歷文件夾里所有的 M ap 2G IS文件 :點(diǎn)文件 (. w t) 、線文件 (. w l) 、面文件 (. wp ) :/ /進(jìn)行循環(huán)讀取 ,對每個(gè)文件進(jìn)行轉(zhuǎn)換HANDL E hF ind;第 1期陳小虎等 1M ap G IS文件快速轉(zhuǎn)換 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 )對打開的文件進(jìn)行壓縮存盤M ap G IS文件進(jìn)行刪除圖元操作后 ,圖元僅僅是被 邏輯刪除 ,在缺省情況下 ,保存工作區(qū)內(nèi)容時(shí) ,不清除被 刪掉的圖元 。重新裝入文件時(shí) ,被刪掉的圖元依然存 在 。只有將工作區(qū)的壓縮標(biāo)志設(shè)置為 1,在保存工作區(qū) 內(nèi)容時(shí) ,才能將被刪除的圖元將從物理上被清除掉 。strF ile0 = m _ strSou rceFo lde r + + strF ile;/ /打開指定的數(shù)據(jù)文件對應(yīng)的工作區(qū) ,并將數(shù)據(jù)裝入到新 工作區(qū)中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;/ /將工作區(qū)壓縮標(biāo)志設(shè)為 1_Se tPackF lag ( Pa i, 1 ) ;/ /保存工作區(qū)內(nèi)容_ SaveA F ile ( Pa i, strF ile0. Ge tB uffe r ( strF ile0. Ge tL ength( ) ) ) ;( 3 )對文件進(jìn)行重置缺省 ID 處理重置缺省 ID 實(shí)質(zhì)上就是把圖元唯一的圖元號賦 給它的 ID 屬性 。M ap Gis文件的圖元 ID 屬性 不是 唯 一的 , 可 以重 復(fù) , Shap efile 的 對 象 ID 屬 性 (O b jec t ID ) 卻是 唯一 的 。 在轉(zhuǎn)換前對文件進(jìn)行重置缺省 ID 操作有助于提高文件轉(zhuǎn)換的成功率 。以下是點(diǎn)文件 (. w t)的重置缺省 ID源代碼/ /取圖元個(gè)數(shù)if ( _Ge tPn tN um ( Pa i, &i, &n) = = 0)re tu rn ;/ /循環(huán)取所有記錄fo r ( i = 1; i n; i + + ) / /取第 i條記錄 if ( _Ge tA tt ( Pa i, PN T, i, &stru, &a tt) = 0 )con tinue;/ /根據(jù)字段名稱設(shè)置字段值_Se tF ld ( a tt, stru, ID , ( cha r 3 ) &i) ;/ /寫點(diǎn)定類型圖元屬性_W ritePn tA tt ( Pa i, i, stru, a tt) ;( 4 )將文件轉(zhuǎn)換為 Shap efile文件M ap G IS文件用后綴名來區(qū)分點(diǎn) (. w t) 、線 (. w l) 、面 (. wp ) 文件 , 而 Shap efile 文件后綴沒有點(diǎn) 、線 、面的 區(qū) 別 。批量轉(zhuǎn)換時(shí) ,為避免轉(zhuǎn)換后出現(xiàn)同名文件相互覆蓋 的情況 ,使轉(zhuǎn)換后的點(diǎn)文件名加 ”p ”,線文件名加 ”l”,面 文件名加 ”r”以示區(qū)別 。調(diào)用轉(zhuǎn)換 shap e函數(shù)/ /將點(diǎn)文件轉(zhuǎn)換為 shap efile文件_Shap eO u t ( Pa i, L PTSTR (L PCTSTR ( strF ile) ) ) ;4 結(jié) 論該程序在生產(chǎn)實(shí)踐中的應(yīng)用表明它能最大限度地 減少 M ap G IS文件轉(zhuǎn)換到 Shap efi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度礦產(chǎn)資源勘探保密合同3篇
- 2025屆江蘇省蘇州市區(qū)重點(diǎn)名校中考生物適應(yīng)性模擬試題含解析
- 2025版路燈照明設(shè)施安全維護(hù)合同4篇
- 2025年廠區(qū)配電系統(tǒng)改造與電氣設(shè)備租賃及維護(hù)合同3篇
- 二零二五年換熱器設(shè)備技術(shù)改造與售后服務(wù)協(xié)議3篇
- 運(yùn)輸組織課程設(shè)計(jì)客運(yùn)站
- 二零二五版建行信用卡透支合同標(biāo)準(zhǔn)范本3篇
- 2025年度電商臨時(shí)促銷活動(dòng)合同書范本3篇
- 二零二五年洛陽文化旅游景區(qū)商鋪?zhàn)赓U合同4篇
- 二零二五版林業(yè)科研合作開發(fā)合同范本4篇
- 金蛇納瑞企業(yè)2025年會(huì)慶典
- 安保服務(wù)評分標(biāo)準(zhǔn)
- T-SDLPA 0001-2024 研究型病房建設(shè)和配置標(biāo)準(zhǔn)
- (人教PEP2024版)英語一年級上冊Unit 1 教學(xué)課件(新教材)
- 全國職業(yè)院校技能大賽高職組(市政管線(道)數(shù)字化施工賽項(xiàng))考試題庫(含答案)
- 2024胃腸間質(zhì)瘤(GIST)診療指南更新解讀 2
- 光儲(chǔ)電站儲(chǔ)能系統(tǒng)調(diào)試方案
- 2024年二級建造師繼續(xù)教育題庫及答案(500題)
- 小學(xué)數(shù)學(xué)二年級100以內(nèi)連加連減口算題
- 建設(shè)單位如何做好項(xiàng)目管理
- 三年級上遞等式計(jì)算400題
評論
0/150
提交評論