Shapefile

ESRI Shapefile開發的空間資料開放格式。目前，該檔案格式已經成為了地理資訊軟體界的開放標準，這表明ESRI公司在全球的地理資訊系統市場的重要性。Shapefile也是重要的交換格式，能夠在ESRI與其他公司的產品之間進行資料互操作。Shapefile檔案用於描述幾何體物件：點、折線與多邊形。例如，Shapefile檔案可以儲存井、河流、湖泊等空間物件的幾何位置。除了幾何位置，shp檔案也可以儲存這些空間物件的屬性，例如河流的名字、城市的溫度等等。概覽.Shapefile屬於一種向量圖形格式，它能夠儲存幾何圖形的位置及相關屬性。但這種格式沒法儲存地理資料的拓撲資訊。Shapefile在九十年代初的ArcView GIS的第二個版本被首次應用。目前，許多自由的程式或商業的程式都可以讀取Shapefile。Shapefile是一種比較原始的向量資料儲存方式，它僅僅能夠儲存幾何體的位置資料，而無法在一個檔案之中同時儲存這些幾何體的屬性資料。因此，Shapefile還必須附帶一個二維表用於儲存Shapefile中每個幾何體的屬性資訊。Shapefile中許多幾何體能夠代表複雜的地理事物，併為他們提供強大而精確的計算能力。Shapefile檔案指的是一種檔案儲存的方法，實際上該種檔案格式是由多個檔案組成的。其中，要組成一個Shapefile，有三個檔案是必不可少的，它們分別是".shp", ".shx"與 ".dbf"檔案。表示同一資料的一組檔案其檔名字首應該相同。例如，儲存一個關於湖的幾何與屬性資料，就必須有lake.shp，lake.shx與lake.dbf三個檔案。而其中“真正”的Shapefile的字尾為shp，然而僅有這個檔案資料是不完整的，必須要把其他兩個附帶上才能構成一組完整的地理資料。除了這三個必須的檔案以外，還有八個可選的檔案，使用它們可以增強空間資料的表達能力。所有的檔名都必須遵循MS DOS的8.3檔名標準，以方便與一些老的應用程式保持相容性，儘管現在許多新的程式都能夠支援長檔名。此外，所有的檔案都必須位於同一個目錄之中。必須的檔案:其他可選的檔案：在每個.shp, .shx與.dbf檔案之中，圖形在每個檔案的排序是一致的。也就是說，.shp的第一條記錄與.shx及.dbf之中的第一條記錄相對應，如此類推。此外，在.shp與.shx之中，有許多欄位的位元組序是不一樣的。因此使用者在編寫讀取這些檔案格式的程式時，必須十分小心地處理不同檔案的不同位元組序。Shapefile通常以X與Y的方式來處理地理座標，一般X對應經度，Y對應緯度，使用者必須注意X，Y的順序。Shapefile圖形格式 (.shp).Shapefile格式的主檔案包含了地理參照資料。該檔案由一個定長的檔案頭和一個或若干個變長的記錄資料組成。每一條變長資料記錄包含一個記錄頭和一些記錄內容。詳細的資料儲存格式由"Esri Shapefile技術描述".提供。注意，雖然Shapefile檔案的字尾名與AutoCAD的圖形字型源格式它們的檔案字尾名相同的，都是.shp ，請不要把它們混淆。主檔案頭包含17個欄位，共100個位元組，其中包含九個4位元組有符號浮點數字段。然後這個檔案包含不定數目的變長資料記錄，每個資料記錄以一個8位元組記錄頭開始：在記錄頭的後面就是實際的記錄：變長記錄的內容由圖形的型別決定。Shapefile支援以下的圖形型別：在普通的使用中，Shapefile通常包含點、折線與多邊形。帶有Z座標的形狀是三維的。帶有M座標的形狀是包含一個使用者指定的測量值，該測量值定義在每一個點座標之上。三維的Shapefile十分罕見。此外，實際應用中通常，Shapefile的M測量值這個功能已經被其他功能更加強大和穩健的資料庫取代，Shapefile一般只負責幾何資料。Shapefile圖形索引格式(.shx).Shapefile的檔案索引包含與.shp檔案相同的100個位元組的檔案頭，然後跟隨著不定數目的8位元組定長記錄，每個記錄都有兩個欄位：因為這個圖形索引每個資料項都是定長的，因此程式只要在這個圖形索引中向前或向後遍歷，讀取索引中所記錄的記錄位移與記錄長度，程式就可以很快地向前或向後遍歷整個Shapefile，在.shp檔案中找到任意一個幾何體的正確位置。Shapefile屬性格式(.dbf).每個圖形的屬性資料儲存在dBase格式的資料表之中。屬性資料也可以儲存在另一種開放的資料表格式xBase格式之中。在開源Shapefile函式庫Shapefile C library中就是這樣儲存。Shapefile投影格式(.prj)..prj檔案中的資訊包含了.shp檔案中幾何資料所使用的經緯度座標系統。儘管這個檔案不是必須的，一般使用都會提供它，這樣使用者就無需猜測所給的座標的經緯度系統。ArcGIS Desktop 9及以後的版本使用well-known text格式來生成座標系統描述資訊。以前的ArcGIS版本和某些第三方軟體通常生成如下的這種格式：老的投影檔案格式樣例：Projection UTMZunits NOUnits METERSSpheroid CLARKE1866Xshift 0.0000000000Yshift -4000000.0000000000Parameters-108 0 0.000 /* longitude36 0 0.000 /* latitude新的WKT格式樣例：GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]].prj檔案中包含以下資訊：Shapefile空間索引格式(.sbn).這是一個二進位制的空間索引檔案，僅僅可以應用在ESRI的軟體之中。其檔案格式沒有公開的文件，其他廠商也沒有實現這個檔案。.sbn並不是必須的，因為.shp檔案之中已經包含了所有的解析空間資料所需的資訊。限制.Shapefile與拓撲.Shapefile無法儲存拓撲資訊。在ESRI的檔案格式中，ArcInfo 的Coverage、以及Personal/File/Enterprise地理資料庫，能夠儲存地理要素的拓撲資訊。空間表達.在shapefile檔案之中，所有的折線與多邊形都是用點來定義，點與點之間採用線性插值，也就是說點與點之間都是用線段相連。在資料採集時，點與點之間的距離決定了該檔案所使用的比例。當圖形放大超過一定比例的時候，圖形就會呈現出鋸齒。要使圖形看上去更加平滑，那麼就必須使用更多的點，這樣就會消耗更大的儲存空間。在這種情況下，樣條函式可以很精確地表達不同形狀的曲線而且佔據相對更少的空間，但是目前shapefile並不支援樣條曲線。資料儲存量..shp檔案或.dbf檔案最大的體積不能夠超過2 GB。也就是說，一個shapefile最多隻能夠儲存七千萬個點座標。檔案所能夠儲存的幾何體的數目取決於單個要素所使用的頂點的數目。屬性資料庫格式所使用的.dbf檔案基於一個比較古老的dBase標準。這種資料庫格式天生有許多限制，例如：混合幾何型別.由於在每一條几何記錄中都有該記錄的幾何型別，所以理論上一個shapefile是可以儲存混合的幾何型別。但實際上規範中指出在同一shapefile之中所有非空的幾何體都必須是同一型別。因此shapefile被限制為僅僅可以混合儲存空幾何體和另一單一幾何體，該幾何體的型別必須與檔案頭中定義的型別一致。例如，一個shapefile檔案不可能同時包含折線與多邊形資料，所以，在實際的地理事物描述中，井必須分開儲存在三個不同的檔案之中。