1. 程式人生 > >Shp格式資料檔案到GML格式的轉換

Shp格式資料檔案到GML格式的轉換

實現Shapefile格式資料到GML格式資料的轉換過程可分為兩個大步驟,一是依據Shapefile資料文件資料獲取資料,二是依據GML標準構建GML格式資料。從上面對shapefile資料格式和GML格式的分析可知,對shapefile的文件資料的獲取主要是讀取座標檔案和屬性檔案,根據dbf的欄位資訊描述建立相應的Schema檔案,將dbf的欄位名作為Feature元素的孩子節點,根據shp檔案儲存的幾何型別選取GML的Geometry.xsd定義的標記作為其標記。構建GML的過程就是將讀取的shapefile資料以GML的格式儲存起來。所示是我們設計的一個將Shapfile檔案轉化為GML文件的演算法流程圖。利用這個演算法,可以有效地進行Shapfile檔案到GML文件的轉換。

clip_image002

Shape file到GML文件轉換演算法流程

        參照開原始碼GeoTools類庫、ASSC(Another Simple Shapefile Converter)類庫,利用這兩者類庫中提供的針對Shapefile格式、Shapefile到GML格式轉換的基礎類,快速、方便、有效地完成SHP-GML(Shapefile格式到GML格式)的轉換。表示利用GeoTools、ASSC基礎類庫實現Shapefile資料獲取過程。

clip_image004

shape file資料獲取過程         具體說明如下:首先,定義一個新的ShapefileInfo類,利用該類獲取Shapefile檔案中資料型別的描述資訊、記錄數資訊,並存放在一個temp向量中。接著存入temp向量的還有DBF檔案中的欄位名、欄位型別、欄位描述資訊,ShapefileInfo類中的座標範圍、欄位個數、記錄個數、欄位的長度資訊。最終存入temp向量的是SimpleClassData類,包含Shapefile型別描述、空間資料配色表與檔名資訊。至此,資料的解析過程就算結束,接下來,要進行GML文件的構建。 字串1

Shape檔案是按照地物型別來組織的。地物型別可以分為簡單的分為點(Point)、線(Line)、面(Polygon)三種類型,一個Shape檔案中只能包括一種型別的地物,即只能包括點、線或者面狀地物中的一種。對於點、線、面三種類型,構建GML資料的流程如圖所示。 字串5

第一步,生成一個字尾為GML的檔案,寫入XML的宣告。第二步,從temp向量中獲取GML資料的座標範圍,並且定義FeatureMember標記。第三步,依據FeatureMember判斷出資料的型別。根據資料的型別呼叫不同的構建過程。對於點、線、面,其具體的構建過程基本相似,下面以線為例進行詳細探討。如果是線,那麼寫入LineString標記,同時構建當前線元素。如果是多線,那麼寫入MultiLineString標記,並分別構建多線中的每一個線元素。此時,重複以上判斷,當完成SHP資料中所有型別的資料轉換之後,將這幾種型別的GML標記整合到一個GML檔案中,SHP資料到GML資料的轉換便成功完成。 字串1

clip_image006

Shp到GML構建流程圖 字串2