[發明專利]一種VCT文件到shapefile文件的矢量數據并行轉換方法有效
| 申請號: | 201310745410.4 | 申請日: | 2013-12-30 |
| 公開(公告)號: | CN103678705A | 公開(公告)日: | 2014-03-26 |
| 發明(設計)人: | 陳振杰;周琛;李飛雪;黃秋昊;陳沖;吳潔璇;黃濤 | 申請(專利權)人: | 南京大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 南京同澤專利事務所(特殊普通合伙) 32245 | 代理人: | 石敏 |
| 地址: | 210093 江*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 vct 文件 shapefile 矢量 數據 并行 轉換 方法 | ||
1.一種VCT文件到shapefile文件的矢量數據并行轉換方法,所述VCT文件包括文件頭、要素類型參數、屬性數據結構、注記、幾何圖形數據和屬性數據,其中所述幾何圖形數據包括三類,分別是點要素、線要素和面要素;所述轉換方法包括以下步驟:
第一步、打開VCT文件,并進行并行環境初始化,生成指定數目p的進程;
第二步、主進程逐行讀取VCT文件,分別構建該VCT文件中文件頭、要素類型參數、屬性數據結構、注記、幾何圖形數據和屬性數據的要素索引,具體為:
1)找到以“HeadBegin”作為開始標識符、“HeadEnd”作為結束標識符之間的字符串信息作為文件頭,并從文件頭中找到該VCT文件的投影參數;
2)找到以“FeatureCodeBegin”作為開始標識符、“FeatureCodeEnd”作為結束標識符之間的字符串信息作為要素類型參數,以行為單位遍歷該要素類型參數,得到VCT文件中每個圖層的編號以及該圖層的圖層類型名稱、幾何圖形數據類型和該圖層包含的屬性表的名稱;
3)找到以“TableStructureBegin”作為開始標志符、“TableStructureEnd”作為結束標志符之間的字符串信息作為屬性數據結構,以屬性表為單位遍歷所述屬性數據結構,得到第2)步驟中每個屬性表包含的屬性字段個數以及各屬性字段的名稱、類型和數據長度;
4)找到以“PointBegin”作為開始標識符、“PointEnd”作為結束標識符之間的字符串信息作為點要素,所述點要素中每五行為一個點數據,其中每個點數據的第二行為該點數據所屬圖層編號;遍歷所有的點數據,根據每個點數據所屬圖層編號將點數據進行區分,得到不同圖層編號包含的點數據的起始地址和結束地址,并與第2)步已得到的圖層編號進行對應,從而得到各點要素圖層所包含的數據的起始地址和結束地址以及每個點要素圖層的點數據個數;
5)找到以LineBegin?作為開始標識符、LineEnd?作為結束標識符之間的字符串信息作為線要素,順序尋找所述線要素中包含的所有線數據,其中每個線數據的第二行為該線數據所屬的圖層編號、第五行為該線數據包含的點數據個數,根據第五行的數值得到該線數據占據的文件行數;逐單位讀取線數據,根據各線數據所屬的圖層編號將線數據進行區分,并得到所有線數據的起始地址與結束地址;將上述的圖層編號與第2)步已解析出的圖層編號進行對應,從而得到各線要素圖層所包含的數據的起始地址和結束地址;
6)找到以PolygonBegin?作為開始標識符、PolygonEnd?作為結束標識符之間的字符串信息作為面要素,順序尋找所述面要素所包含的面數據,其中每個面數據的第二行為該面要素所屬圖層編號,其第五行為該面要素包含的線數據個數,根據第五行的值得到該面數據占據的文件行數;逐單位讀取面數據,根據該面數據所屬的圖層編號將面數據進行區分,分別得到不同圖層編號包含的面數據的起始地址與結束地址,并與第2)步已解析出的圖層編號進行對應,從而得到各面要素圖層所包含的數據的起始地址和結束地址;
7)找到以AnnotationBegin作為開始標識符、AnnotationEnd?作為結束標識符之間的字符串信息作為注記;
8)找到以?AttributeBegin?作為開始標識符、?AttributeEnd??作為結束標識符之間的字符串信息作為屬性數據,不同圖層的屬性數據以屬性表的名稱開始,以TableEnd結束,得到各圖層包含的屬性表對應的起始地址與結束地址;
第三步、主進程統計各圖層的幾何圖形數據類型和包含的幾何圖形數據數量,并分別對相同幾何圖形數據類型的圖層按照包含的幾何圖形數據數量進行排序;具體為:
3A)統計各個點要素圖層的所有點數據,并根據點數據的數量進行排序;
3B)統計各個線要素圖層各個線數據包含的點數據,并根據點數據的數量進行排序;
3C)統計各個面要素圖層各個面數據包含的線數據,再累加線數據包含的點數據,得到每個面要素圖層包含的所有點數據,并根據點數據的數量對各個面要素圖層進行排序;
第四步、主進程將所有圖層的點數據累加得到總點數據w,根據進程數p將VCT文件分為p個矢量目標子集,每個矢量目標子集包含w/p個點數據;遍歷各圖層及其包含的點數據,將各矢量子集包含的點數據進行調整,使得點要素圖層被完整分配,線要素圖層以線數據為基本單位分配,面要素圖層以面數據為基本單位分配,從而最終得到矢量目標集S{S1,?S2,……,?Sp};按照矢量目標集的順序依次將各任務子集分配到不同進程,從而完成VCT的數據劃分;?
各進程將第二步中解析出的幾何圖形數據的坐標信息、屬性數據與對應要素的圖層進行匹配,并分別將每個圖層的數據存入到一個單獨的shapefile文件中;具體方法如下:
4A)根據當前圖層的幾何圖形數據類型、投影參數、屬性字段,創建具有相同幾何圖形數據類型和投影參數的shapefile文件,該文件名以圖層名稱命名;
4B)根據當前圖層的幾何圖形數據類型,如果是點要素,直接讀取點數據并存儲點坐標;如果是線要素,將線數據及每條線對應的點坐標進行存儲;如果是面要素,首先讀取每個面數據包含的線數據編號,其次在VCT文件中提取對應線數據包含的點坐標,最終將面數據及其包含的所有點坐標進行存儲,其中點坐標根據面數據的方向順序進行存儲;
4C)根據當前圖層的幾何圖形數據類型,在shapefile文件中創建相同類型的幾何圖形對象,將第4B)步中解析得到的幾何圖形數據寫入shapefile圖形文件中;
4D)讀取屬性數據,根據當前圖層包含的屬性表名稱解析出所有屬性字段記錄,并寫入shapefile屬性文件中;
4E)根據注記索引解析出注記信息并寫入shapefile注記文件中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學,未經南京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310745410.4/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:方便取出灰塵的吸塵器
- 下一篇:節能高效污水處理裝置





