ESRI Shapefile

Shapefile

Written by LightThis email address is being protected from spambots. You need JavaScript enabled to view it.

Logo from ESRI


Section 1. 背景介紹

ESRI Shapefile(shp)是美國環境系統研究所公司(ESRI)開發的一種空間數據開放格式。目前,該文件格式已經成為了地理信息軟件界的一個開放標準

Shapefile屬於一種向量圖形格式,它能夠保存幾何圖形的位置及相關屬性。該種文件格式是由多個文件組成的:

  • .shp - 用於保存元素的幾何實體。
  • .shx - 用於保存幾何實體索引。
  • .dbf - 數據庫,用於保存關於元素的屬性信息。

除了以上三個文件格式之外,還可以有其它文件的支持,這樣能夠優化訪問數據庫的性能:

  • .sbn 和 .sbx - 保存實體的空間索引。
  • .fbn 和 .fbx - 保存只讀實體的空間索引。
  • .ain 和 .aih - 保存列表中活動字段的屬性索引。
  • .prj - 保存坐標系統信息。
  • .shp.xml - 保存shapefile的元數據。

Section 2. Shapefile文件格式分析

Shapefile文件是美國環境系統研究所(ESRI)所研製的GIS文件系統格式文件,是工業標準的矢量數據文件。 Shapefile將空間特徵表中的非拓撲幾何對象和屬性信息存儲在數據集中,特徵表中的幾何對象存為以坐標點集表示的圖形文件—SHP文件,Shapefile文件並不含拓撲(Topological)數據結構。 一個Shape文件包括三個文件:一個主文件(*.shp),一個索引文件(*.shx),和一個dBASE(*.dbf)表。 主文件是一個直接存取,變長度記錄的文件,其中每個記錄描述構成一個地理特徵(Feature)的所有vertices坐標值。 在索引文件中,每條記錄包含對應主文件記錄距離主文件頭開始的偏移量,dBASE表包含SHP文件中每一個Feature的特徵屬性,表中幾何記錄和屬性數據之間的一一對應關係是基於記錄數目的ID。 在dBASE文件中的屬性記錄必須和主文件中的記錄順序是相同的。 圖形數據和屬性數據通過索引號建立一一對應的關係。

Shapefile中坐標文件(.shp)由固定長度的文件頭和接著的變長度空間數據記錄組成。 文件頭由100字節的說明信息組成的,主要說明文件的長度、Shape類型、整個Shape圖層的範圍等等,這些信息構成了空間數據的元數據。 在導入空間數據時首先要讀入文件頭獲取Shape文件的基本信息,並以此信息為基礎建立相應的元數據表。 而變長度空間數據記錄是由固定長度的記錄頭和變長度記錄內容組成,其記錄結構基本類似,每條記錄都有記錄頭和記錄內容組成(空間坐標對)。 記錄頭的內容包括記錄號(Record Number)和坐標記錄長度(Content Length)兩個記錄項,Shapefile文件中的記錄號都是從1開始的,坐標記錄長度是按16位字來衡量的。 記錄內容包括目標的幾何類型(ShapeType)和具體的坐標記錄(X,Y),記錄內容因要素幾何類型的不同,其具體的內容和格式都有所不同。 對於具體的記錄主要包括空Shape記錄,點記錄,線記錄和多邊形記錄。

屬性文件(.dbf)用於記錄屬性信息。 它是一個標準的DBF文件,也是由頭文件和實體信息兩部分構成。 其中文件頭部分的長度是不定長的,它主要對DBF文件作了一些總體說明,其中最主要的是對這個DBF文件的記錄項的信息進行了詳細的描述,比如對每個記錄項的名稱,數據類型,長度等信息都有具體的說明。 屬性文件的實體信息部分就是一條條屬性記錄,每條記錄都是由若干個記錄項構成,因此只要依次循環讀取每條記錄就可以了。

索引文件(.shx)主要包含坐標文件的索引信息,文件中每個記錄包含對應的坐標文件記錄距離坐標文件的文件頭的偏移量。 通過索引文件可以很方便地在坐標文件中定位到指定目標地坐標信息。 索引文件也是由文件頭和實體信息兩部分構成的,其中文件頭部分是一個長度固定(100 bytes)的記錄段,其內容與坐標文件的文件頭基本一致。 它的實體信息以記錄為基本單位,每一條記錄包括偏移量(Offset)和記錄段長度(Content Length)兩個記錄項。

 


Section 3. 資料來源

Wiki Shapefile

Shapefile文件格式分析