shapefile 输出的地理处理注意事项

多年来,Esri 开发了三种用于存储地理信息的主要数据格式:coverage、shapefile 和地理数据库。开发 shapefile 是为了以一种简单的格式来存储地理信息和属性信息。正由于 shapefile 的简易性,使其成为一种非常流行的开放式数据转换格式。凭借其简易性,shapefile 似乎已成为人们的必然选择,然而,其在地理数据库地址应用中仍存在局限性。因此,使用 shapefile 时,应注意其局限性。概括如下:

正因为存在这些(或更多)问题,如果选用 shapefile 进行活动数据库管理将显得捉襟见肘 - 它们无法处理现今数据的创建、编辑、版本管理及归档的生命周期。

何时使用 shapefile?

何时不能使用 shapefile?

除以下列出的一些特例外,可以使用 shapefile 来存储简单的要素几何。不过,shapefile 的属性存在严重问题。例如,它们无法存储空值,无法向上舍入数字,对 Unicode 字符串的支持不足,字段名称最长只能为 10 个字符,且在同一字段中无法同时存储日期和时间。这些只是其中的主要问题。此外,它们不支持在地理数据库中的某些功能,如:域和子类型。因此,除非是简单的属性且不需要使用地理数据库功能,否则请不要使用 shapefile。

Shapefile 组件与文件扩展名

Shapefile 存储在三个或更多个具有相同前缀的文件中,且位于同一系统文件夹(shapefile 工作空间)中。使用 Windows 资源管理器而非 ArcCatalog 查看该文件夹时,可以看到单个文件。

扩展模块

描述

必需的文件?

.shp

用于存储要素几何的主文件。此文件中未存储任何属性 - 仅有几何。

.shx

.shp 的配套文件,用于存储 .shp 文件中各个要素 ID 的位置。

.dbf

用于存储要素属性信息的 dBASE 表。

.sbn.sbx

用于存储要素空间索引的文件。

.atx

为各 dBASE 属性索引(建立于 ArcCatalog 中)而创建。

.ixs.mxs

读写 shapefile 的地理编码索引。

.prj

用于存储坐标系信息的文件。

.xml

ArcGIS 的元数据;用于存储 shapefile 的相关信息。

Shapefile 扩展名

几何限制

属性限制

空值表示

shapefile 不支持空值。如果将含有空值的要素类转换为 shapefile 或将数据库表转换为 dBASE 文件,则将按下表所述更改空值。

警告警告:

当将 shapefile 或 dBASE (.dbf) 文件用作工具的输入时,ArcGIS 无法确定字段值表示空值还是合法值。

包含空值的数据类型

空值替换

数字 - 当工具需要输出“空”、无穷大或 NaN(数字)时

-1.7976931348623158e+308(最大负值的 IEEE 标准)

数字(所有其他地理处理工具)

0

文本

“ ”(空白 - 无空格)

日期

存储为零,但显示为 <空>

shapefile 和 dBASE (.dbf) 文件中的空值替换

不支持的功能

Shapefile 在工作空间或要素类级别无扩展数据类型,因此,从地理数据库要素类或其他格式转换为 shapefile 时会导致下列数据丢失:

形状长度和形状面积

对于存储在地理数据库中的线或面要素类,ArcGIS 会计算并维护 shape_lengthshape_area 字段;也就是说,编辑地理数据库要素类中的线形状或面形状时,系统会重新计算 shape_lengthshape_area 字段中的值以反映对要素所做的编辑。但这不适用于 shapefile。即使 shapefile 具有 shape_areashape_leng 字段,对 shapefile 进行编辑后,字段也不会更新。

Shapefile 和地理处理

可通过任何能够输出要素类的地理处理工具来选择 shapefile 或地理数据库要素类作为输出格式。同样,可通过表输出工具来选择 dBASE 文件 (.dbf) 或地理数据库表作为输出。您应始终了解所使用的格式,以及将地理数据库输入转换为 shapefile 输出的后果。

地理处理工具可自动生成输出要素类或表。自动生成的输出基于使用当前及临时工作空间环境中所述的许多因素。若您的临时工作空间环境未设置为某个地理数据库,而是设置为了某个系统文件夹,则自动生成的输出要素类将为 shapefile 或 dBASE 文件,如下图所示。

Shapefile 与 dBASE 输出

建议您将临时工作空间设置为某个文件地理数据库,以便自动生成的输出不会被写入 shapefile 或 .dbf 表中,而是被写入文件地理数据库中。

了解有关地理处理环境的详细信息

由于 shapefile 写入速度快,可加快模型执行速度,因此,通常将它作为模型的中间数据使用。不过,写入文件地理数据库与写入 shapefile 的速度几乎相同,所以除非对执行速度的要求较高,否则应始终使用文件地理数据库写入中间数据及输出数据。若您一定要使用 shapefile,请注意上述限制,且仅将 shapefile 用于简单要素和属性。将 shapefile 用于中间数据的替代方法是将要素写入 in_memory 工作空间。

了解有关 in_memory 工作空间的详细信息

空间参考和 shapefile

空间参考和地理处理阐述了使用地理处理工具时空间参考属性的重要性。提供了很多地理处理环境,用于控制工具所使用的空间参考。当工具的输出为 shapefile 时,不支持以下环境设置:

5/10/2014