shapefile 輸出的地理處理注意事項

多年來,ESRI 爲存儲地理信息開發了三種主要數據格式 - coverage 格式、shapefile 格式及地理數據庫格式。其中,所開發的 Shapefile 爲存儲地理及屬性信息提供了一種簡單的非拓撲格式。正因爲 shapefile 的簡易性,使其成爲一種很是流行的開放式數據轉換格式。憑藉其簡易性,shapefile 彷佛已成爲人們的必然選擇,然而,在其地理數據庫地址應用中仍存在侷限性。所以,使用 shapefile 時,應注意其侷限性。歸納以下:數據庫

  • 地理數據不只侷限於 shapefile 可進行存儲的簡單要素和屬性。例如:在地理數據庫中,支持註記、屬性關係、拓撲關係、屬性域和子類型、座標精度和分辨率以及不少其餘功能,但在 shapefile 中則不支持這些內容。
  • 因爲 shapefile 是一種普遍用於數據轉換的開放式格式,所以,許多非 ESRI 軟件包均可輸出 shapefile。(欲瞭解 shapefile 格式規範,請參閱 http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf。)遺憾的是,這些軟件包並不能老是建立格式正確的 shapefile。或許,您已遭遇過從其餘源接收受損 shapefile 的麻煩。
  • Shapefile 利用 dBASE 文件格式(.dbf 文件)來存儲屬性。而 dBASE 是一種非 ESRI 格式,該格式是於二十世紀八十年代早期開發的,是當時在存儲屬性方面應用最廣的格式。然而,它們的時代已悄然而逝,從那時起,數據製圖表達方面的改進(如,Unicode 標準)不斷涌現,以支持世界上大部分的書寫系統。這就是 shapefile 沒法使用非英語語言有效存儲信息的緣由之一。

正由於存在這些(或更多)問題,若是選用 shapefile 進行活動數據庫管理將顯得捉衣見肘 - 它們沒法處理當今數據建立、編輯、版本管理及存檔的生命週期。網絡

什麼時候使用 shapefile?

  • 當導出數據供非 ESRI 軟件應用程序使用時
  • 當導出數據供 ArcView 3 或 ArcInfo Workstation 使用時
  • 當須要快速寫入簡單要素及屬性(例如,爲得到 ArcGIS Server 地理處理服務而這樣作)時(不過,您必須注意下面所述的侷限性。)

什麼時候不能使用 shapefile?

除如下列出的一些特例外,可使用 shapefile 來存儲簡單的要素幾何。不過,shapefile 的屬性存在嚴重問題。例如,它們沒法存儲空值,沒法向上舍入數字,對 Unicode 字符串的支持不足,字段名稱最長只能爲 10 個字符,且在同一字段中沒法同時存儲日期和時間。這些只是其中的主要問題。此外,它們不支持在地理數據庫中發現的功能,如:域和子類型。所以,除非是簡單的屬性且不須要使用地理數據庫功能,不然不得使用 shapefile。工具

Shapefile 組件與文件擴展名

Shapefile 存儲在三個或更多個具備相同前綴的文件中,且位於同一系統文件夾(shapefile 工做空間)中。當您使用 Windows Explorer 而非 ArcCatalog 查看該文件夾時,可看到各文件。ui

擴展名編碼

描述spa

必需的文件?code

.shpxml

用於存儲要素幾何的主文件。此文件中未存儲任何屬性 - 僅有幾何。對象

索引

.shx

.shp 的配套文件,用於存儲 .shp 文件中各個要素 ID 的位置。

.dbf

用於存儲要素屬性信息的 dBASE 表。

.sbn 和 .sbx

用於存儲要素空間索引的文件。

.atx

爲各 dBASE 屬性索引(創建於 ArcCatalog 中)而建立。

.ixs 和 .mxs

讀寫 shapefile 的地理編碼索引。

.prj

用於存儲座標系信息的文件。

.xml

ArcGIS 的元數據;用於存儲 shapefile 的相關信息。

Shapefile 擴展名

幾何限制

  • 任何 shapefile 組件文件都有大小爲 2 GB 的上限,可理解爲可包含的點要素最多約爲 7000 萬個。shapefile 中可存儲的線或面要素的實際數量取決於每一個線或面中的折點數(一個折點至關於一個點)。
  • 與地理數據庫要素類類似,Shapefile 也不包含 x、y 容差。兩座標系被視爲同一座標系以前,x、y 容差就是它們之間的最小距離。當評估相同要素類中各要素之間的關係或評估多個不一樣要素類之間的關係時,會使用此 x、y 容差。編輯要素時,也會常用它。若所要執行的任意類型的操做涉及元素之間的比較(例如,使用疊加工具裁剪工具、按位置選擇圖層工具或任何將兩個或多個要素類做爲輸入的工具),則應使用地理數據庫要素類(包含 x、y 容差)而非 shapefile。
  • 因爲形狀壓縮方法的不一樣,shapefile 所佔用的空間可能爲文件地理數據庫或 SDE 的三到五倍。
  • Shapefiles 支持多面體,但不支持如下多面體的高級功能:
    • 紋理座標
    • 紋理及部分色帶
    • 光線法向量
  • shapefile 的空間索引不足以與地理數據庫要素類的空間索引進行對比。這就意味着,同地理數據庫要素類相比,空間查詢(如,選擇面內的要素)耗時更長。當處理大量要素時,其惟一的明顯不足之處就是效率低。
  • shapefile 不支持經過參數定義的曲線(也稱爲圓弧曲線)。如建立曲線中所述,將經過編輯數據庫要素類來建立參數曲線。圓弧曲線利用數學公式繪製曲線。若您將含圓弧曲線的地理數據庫要素類導出到 shapefile 中,就可將彎曲要素變換爲簡單線要素,並使空間上靠近的折點捕捉到彎曲的形狀。

屬性限制

  • 與其餘格式不一樣,shapefile 以字符格式(而非二進制格式)存儲數值屬性。對於實數(即,包含小數位的數字),這可能會致使舍入偏差。所以,此限制不適用於形狀座標,而僅適用於屬性。下表列出了各屬性數據類型的字段寬度。

    地理數據庫數據類型

    dBASE 字段類型

    dBASE 字段寬度(字符數)

    對象 ID

    數字

    9

    短整型

    數字

    4

    長整型

    數字

    9

    浮點型

    浮點型

    13

    雙精度

    浮點型

    13

    文本

    字符

    254

    日期

    日期

    8

    dBASE 中的字段寬度
  • dBASE 文件標準僅支持其字段名稱及字段值中存在 ANSI 字符。ESRI 已針對 dBASE 文件新增了大量 Unicode 支持,以存儲 Unicode 字段名稱及字段值。但此附加支持僅適用於 ArcGIS,在非 ESRI 應用程序中則未提供這些支持。對於 ESRI 來講,對 dBASE 中 Unicode 的支持是一個持續進行的過程,這就意味着,新問題將不斷出現,也將被不斷地加以解決。
    注意注意:

    若您的字段名稱或字段值須要支持 Unicode,則強烈建議您使用地理數據庫,而非 shapefile。

  • 數據字段既支持日期也支持時間,但在同一字段中不能同時支持二者。
  • shapefile 不支持空值。若是將含有空值的要素類轉換爲 shapefile,則空值會變爲下列形式:

包含空值的數據類型

Shapefile 製圖表達

數字 - 當工具須要輸出「空值」、無窮大值或 NaN(數字)時

-1.7976931348623158e+308(最大負值的 IEEE 標準)

數字(全部其餘地理處理工具)

0

文本

「 」(空白 - 無空格)

日期

存儲爲零,但顯示爲「<空>」

空值的 Shapefile 製圖表達
  • 字段名稱的長度不能超過 10 個字符。
  • 屬性的最大記錄長度爲 4000 字節。記錄長度是用於定義所有字段的字節數,而非用於存儲實際值的字節數。
  • 最大字段數爲 255。若超出此上限,轉換爲 shapefile 時會轉換前 255 個字段。
  • dBASE 文件必須至少包含一個字段。當您建立新 shapefile 或新 dBASE 表時,默認會建立一個整數 ID 字段。
  • dBASE 文件不支持類型 blob、guid、全局 ID、座標 ID 或柵格字段類型。
  • dBASE 文件不支持 WHERE 子句,也不支持 SQL。
  • 當您保存編輯時,屬性索引會被刪除,所以,必須從新建立屬性索引。

不支持的功能

Shapefile 在工做空間或要素類級別無擴展數據類型,所以,從地理數據庫要素類或其餘格式轉換爲 shapefile 時會致使下列數據丟失:

  • 子類型
  • 屬性域
  • 幾何網絡
  • 拓撲
  • 註記

Shapefile 和地理處理

可經過任何可以輸出要素類的地理處理工具來選擇 shapefile 或地理數據庫要素類做爲輸出格式。一樣,可經過表輸出工具來選擇 dBASE 文件 (.dbf) 或地理數據庫表做爲輸出。您應始終了解所使用的格式,以及將地理數據庫輸入轉換爲 shapefile 輸出的後果。

地理處理工具可自動生成輸出要素類或表。自動生成的輸出基於使用當前及臨時工做空間環境中所述的許多因素。若您的臨時工做空間環境未設置爲某個地理數據庫,而是設置爲了某個系統文件夾,則自動生成的輸出要素類將爲 shapefile 或 dBASE 文件,以下圖所示。

Shapefile 與 dBASE 輸出

建議您將臨時工做空間設置爲某個文件地理數據庫,以便自動生成的輸出不會被寫入 shapefile 或 .dbf 表中,而是被寫入文件地理數據庫中。

瞭解有關地理處理環境的詳細信息

因爲 shapefile 些入速度快,可加快模型執行速度,所以,一般用它寫入模型的中間數據。不過,寫入文件地理數據庫與寫入 shapefile 的速度幾乎相同,因此除非對執行速度的要求較高,不然應始終使用文件地理數據庫寫入中間數據及輸出數據。若您必定要使用 shapefile,請注意上述限制,且僅將 shapefile 用於簡單要素和屬性。將 shapefile 用於中間數據的替代方法是將要素寫入 in_memory 工做空間。

相關文章
相關標籤/搜索