Shapefile文件是美國環境系統研究所(ESRI)所研制的GIS文件系統格式文件,是工業標準的矢量數據文件。 Shapefile將空間特征表中的非拓撲幾何對象和屬性信息存儲在數據集中,特征表中的幾何對象存為以坐標點集表示的圖形文件—SHP文件,Shapefile文件并不含拓撲(Topological)數據結構。一個Shape文件包括三個文件:一個主文件(*.shp),一個索引文件(*.shx),和一個dBASE(*.dbf)表。主文件是一個直接存取,變長度記錄的文件,其中每個記錄描述構成一個地理特征(Feature)的所有vertices坐標值。在索引文件中,每條記錄包含對應主文件記錄距離主文件頭開始的偏移量,dBASE表包含SHP文件中每一個Feature的特征屬性,表中幾何記錄和屬性數據之間的一一對應關系是基于記錄數目的ID。在dBASE文件中的屬性記錄必須和主文件中的記錄順序是相同的。圖形數據和屬性數據通過索引號建立一一對應的關系。
Shapefile中坐標文件(.shp)由固定長度的文件頭和接著的變長度空間數據記錄組成。文件頭由100字節的說明信息組成的(附表 1),主要說明文件的長度、Shape類型、整個Shape圖層的范圍等等,這些信息構成了空間數據的元數據。在導入空間數據時首先要讀入文件頭獲取Shape文件的基本信息,并以此信息為基礎建立相應的元數據表。而變長度空間數據記錄是由固定長度的記錄頭和變長度記錄內容組成,其記錄結構基本類似,每條記錄都有記錄頭和記錄內容組成(空間坐標對)。記錄頭的內容包括記錄號(Record Number)和坐標記錄長度(Content Length)兩個記錄項,Shapefile文件中的記錄號都是從1開始的,坐標記錄長度是按16位字來衡量的。記錄內容包括目標的幾何類型(ShapeType)和具體的坐標記錄(X,Y),記錄內容因要素幾何類型的不同,其具體的內容和格式都有所不同。對于具體的記錄主要包括空Shape記錄,點記錄,線記錄和多邊形記錄,具體的記錄結構如附表 2所示。
屬性文件(.dbf)用于記錄屬性信息。它是一個標準的DBF文件,也是由頭文件和實體信息兩部分構成。其中文件頭部分的長度是不定長的,它主要對DBF文件作了一些總體說明(附表 3),其中最主要的是對這個DBF文件的記錄項的信息進行了詳細的描述(附表 4),比如對每個記錄項的名稱,數據類型,長度等信息都有具體的說明。屬性文件的實體信息部分就是一條條屬性記錄,每條記錄都是由若干個記錄項構成,因此只要依次循環讀取每條記錄就可以了。
索引文件(.shx)主要包含坐標文件的索引信息,文件中每個記錄包含對應的坐標文件記錄距離坐標文件的文件頭的偏移量。通過索引文件可以很方便地在坐標文件中定位到指定目標地坐標信息。索引文件也是由文件頭和實體信息兩部分構成的,其中文件頭部分是一個長度固定(100 bytes)的記錄段,其內容與坐標文件的文件頭基本一致。它的實體信息以記錄為基本單位,每一條記錄包括偏移量(Offset)和記錄段長度(Content Length)兩個記錄項。附表 5給出了具體的描述。