多年来,ESRI 为存储地理信息开发了三种主要数据格式 - coverage 格式、shapefile 格式及地理数据库格式。其中,所开发的 Shapefile 为存储地理及属性信息提供了一种简单的非拓扑格式。正因为 shapefile 的简易性,使其成为一种很是流行的开放式数据转换格式。凭借其简易性,shapefile 彷佛已成为人们的必然选择,然而,在其地理数据库地址应用中仍存在局限性。所以,使用 shapefile 时,应注意其局限性。归纳以下:数据库
正由于存在这些(或更多)问题,若是选用 shapefile 进行活动数据库管理将显得捉衣见肘 - 它们没法处理当今数据建立、编辑、版本管理及存档的生命周期。网络
除如下列出的一些特例外,可使用 shapefile 来存储简单的要素几何。不过,shapefile 的属性存在严重问题。例如,它们没法存储空值,没法向上舍入数字,对 Unicode 字符串的支持不足,字段名称最长只能为 10 个字符,且在同一字段中没法同时存储日期和时间。这些只是其中的主要问题。此外,它们不支持在地理数据库中发现的功能,如:域和子类型。所以,除非是简单的属性且不须要使用地理数据库功能,不然不得使用 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 的相关信息。 |
否 |
地理数据库数据类型 |
dBASE 字段类型 |
dBASE 字段宽度(字符数) |
---|---|---|
对象 ID |
数字 |
9 |
短整型 |
数字 |
4 |
长整型 |
数字 |
9 |
浮点型 |
浮点型 |
13 |
双精度 |
浮点型 |
13 |
文本 |
字符 |
254 |
日期 |
日期 |
8 |
若您的字段名称或字段值须要支持 Unicode,则强烈建议您使用地理数据库,而非 shapefile。
包含空值的数据类型 |
Shapefile 制图表达 |
---|---|
数字 - 当工具须要输出“空值”、无穷大值或 NaN(非数字)时 |
-1.7976931348623158e+308(最大负值的 IEEE 标准) |
数字(全部其余地理处理工具) |
0 |
文本 |
“ ”(空白 - 无空格) |
日期 |
存储为零,但显示为“<空>” |
Shapefile 在工做空间或要素类级别无扩展数据类型,所以,从地理数据库要素类或其余格式转换为 shapefile 时会致使下列数据丢失:
可经过任何可以输出要素类的地理处理工具来选择 shapefile 或地理数据库要素类做为输出格式。一样,可经过表输出工具来选择 dBASE 文件 (.dbf) 或地理数据库表做为输出。您应始终了解所使用的格式,以及将地理数据库输入转换为 shapefile 输出的后果。
地理处理工具可自动生成输出要素类或表。自动生成的输出基于使用当前及临时工做空间环境中所述的许多因素。若您的临时工做空间环境未设置为某个地理数据库,而是设置为了某个系统文件夹,则自动生成的输出要素类将为 shapefile 或 dBASE 文件,以下图所示。
![]() |
建议您将临时工做空间设置为某个文件地理数据库,以便自动生成的输出不会被写入 shapefile 或 .dbf 表中,而是被写入文件地理数据库中。
因为 shapefile 些入速度快,可加快模型执行速度,所以,一般用它写入模型的中间数据。不过,写入文件地理数据库与写入 shapefile 的速度几乎相同,因此除非对执行速度的要求较高,不然应始终使用文件地理数据库写入中间数据及输出数据。若您必定要使用 shapefile,请注意上述限制,且仅将 shapefile 用于简单要素和属性。将 shapefile 用于中间数据的替代方法是将要素写入 in_memory 工做空间。